aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Johnson <jinx6568@sover.net>2019-01-27 21:13:54 -0500
committerChris Johnson <jinx6568@sover.net>2019-01-27 21:13:54 -0500
commit966f2d253cd2ee6ce140ad68095a20a9d2b63052 (patch)
treeb0400d95bd06512531ade6ddf55190a58b6a5623
parent0887543349dbbec0721a1fc8b1c7deba9afefa8b (diff)
downloadairwindows-lv2-port-966f2d253cd2ee6ce140ad68095a20a9d2b63052.tar.gz
airwindows-lv2-port-966f2d253cd2ee6ce140ad68095a20a9d2b63052.tar.bz2
airwindows-lv2-port-966f2d253cd2ee6ce140ad68095a20a9d2b63052.zip
Floating Point Dither For All
-rwxr-xr-xplugins/LinuxVST/src/ADClip7/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/ADClip7/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/ADClip7/ADClip7.cpp7
-rwxr-xr-xplugins/LinuxVST/src/ADClip7/ADClip7.h7
-rwxr-xr-xplugins/LinuxVST/src/ADClip7/ADClip7Proc.cpp64
-rwxr-xr-xplugins/LinuxVST/src/ADT/ADTProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/AQuickVoiceClip/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/AQuickVoiceClip/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.cpp7
-rwxr-xr-xplugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.h7
-rwxr-xr-xplugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClipProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/Acceleration/Acceleration.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/Acceleration/Acceleration.h7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/Acceleration/AccelerationProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Air/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Air/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Air/Air.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Air/Air.h7
-rwxr-xr-xplugins/LinuxVST/src/Air/AirProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/AtmosphereBuss/AtmosphereBussProc.cpp56
-rwxr-xr-xplugins/LinuxVST/src/AtmosphereChannel/AtmosphereChannelProc.cpp56
-rwxr-xr-xplugins/LinuxVST/src/Aura/Aura.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Aura/Aura.h7
-rwxr-xr-xplugins/LinuxVST/src/Aura/AuraProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Average/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Average/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Average/Average.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Average/Average.h7
-rwxr-xr-xplugins/LinuxVST/src/Average/AverageProc.cpp66
-rwxr-xr-xplugins/LinuxVST/src/BassKit/BassKitProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/BitGlitter/BitGlitter.cpp3
-rwxr-xr-xplugins/LinuxVST/src/BitGlitter/BitGlitter.h3
-rwxr-xr-xplugins/LinuxVST/src/BitGlitter/BitGlitterProc.cpp19
-rwxr-xr-xplugins/LinuxVST/src/Bite/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Bite/.vs/VSTProject/v14/.suobin0 -> 23552 bytes
-rwxr-xr-xplugins/LinuxVST/src/Bite/Bite.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Bite/Bite.h7
-rwxr-xr-xplugins/LinuxVST/src/Bite/BiteProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/BussColors4/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/BussColors4/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/BussColors4/BussColors4.cpp22
-rwxr-xr-xplugins/LinuxVST/src/BussColors4/BussColors4.h7
-rwxr-xr-xplugins/LinuxVST/src/BussColors4/BussColors4Proc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/ButterComp/ButterComp.cpp7
-rwxr-xr-xplugins/LinuxVST/src/ButterComp/ButterComp.h7
-rwxr-xr-xplugins/LinuxVST/src/ButterComp/ButterCompProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/ButterComp2/ButterComp2Proc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/C5RawBuss/C5RawBuss.cpp7
-rwxr-xr-xplugins/LinuxVST/src/C5RawBuss/C5RawBuss.h7
-rwxr-xr-xplugins/LinuxVST/src/C5RawBuss/C5RawBussProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/C5RawChannel/C5RawChannel.cpp7
-rwxr-xr-xplugins/LinuxVST/src/C5RawChannel/C5RawChannel.h7
-rwxr-xr-xplugins/LinuxVST/src/C5RawChannel/C5RawChannelProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/CStrip/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/CStrip/.vs/VSTProject/v14/.suobin0 -> 24576 bytes
-rwxr-xr-xplugins/LinuxVST/src/CStrip/CStrip.cpp7
-rwxr-xr-xplugins/LinuxVST/src/CStrip/CStrip.h7
-rwxr-xr-xplugins/LinuxVST/src/CStrip/CStripProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Capacitor/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Capacitor/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Capacitor/Capacitor.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Capacitor/Capacitor.h7
-rwxr-xr-xplugins/LinuxVST/src/Capacitor/CapacitorProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Channel4/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Channel4/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Channel6/Channel6Proc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/Chorus/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Chorus/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Chorus/Chorus.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Chorus/Chorus.h8
-rwxr-xr-xplugins/LinuxVST/src/Chorus/ChorusProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/ChorusEnsemble/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/ChorusEnsemble/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.cpp7
-rwxr-xr-xplugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.h7
-rwxr-xr-xplugins/LinuxVST/src/ChorusEnsemble/ChorusEnsembleProc.cpp64
-rwxr-xr-xplugins/LinuxVST/src/ClipOnly/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/ClipOnly/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Console4Buss/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Console4Buss/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Console4Buss/Console4Buss.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Console4Buss/Console4Buss.h7
-rwxr-xr-xplugins/LinuxVST/src/Console4Buss/Console4BussProc.cpp63
-rwxr-xr-xplugins/LinuxVST/src/Console4Channel/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Console4Channel/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Console4Channel/Console4Channel.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Console4Channel/Console4Channel.h7
-rwxr-xr-xplugins/LinuxVST/src/Console4Channel/Console4ChannelProc.cpp63
-rwxr-xr-xplugins/LinuxVST/src/Console5Buss/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Console5Buss/.vs/VSTProject/v14/.suobin0 -> 23552 bytes
-rwxr-xr-xplugins/LinuxVST/src/Console5Buss/Console5Buss.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Console5Buss/Console5Buss.h7
-rwxr-xr-xplugins/LinuxVST/src/Console5Buss/Console5BussProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Console5Channel/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Console5Channel/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Console5Channel/Console5Channel.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Console5Channel/Console5Channel.h7
-rwxr-xr-xplugins/LinuxVST/src/Console5Channel/Console5ChannelProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Console5DarkCh/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Console5DarkCh/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.h7
-rwxr-xr-xplugins/LinuxVST/src/Console5DarkCh/Console5DarkChProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.cpp7
-rwxr-xr-xplugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.h7
-rwxr-xr-xplugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Crystal/CrystalProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/DCVoltage/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/DCVoltage/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/DeEss/DeEssProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/DeRez/DeRez.cpp7
-rwxr-xr-xplugins/LinuxVST/src/DeRez/DeRez.h7
-rwxr-xr-xplugins/LinuxVST/src/DeRez/DeRezProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Density/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Density/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Density/Density.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Density/Density.h9
-rwxr-xr-xplugins/LinuxVST/src/Density/DensityProc.cpp64
-rwxr-xr-xplugins/LinuxVST/src/Desk/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Desk/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Desk/Desk.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Desk/Desk.h7
-rwxr-xr-xplugins/LinuxVST/src/Desk/DeskProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Desk4/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Desk4/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Desk4/Desk4.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Desk4/Desk4.h7
-rwxr-xr-xplugins/LinuxVST/src/Desk4/Desk4Proc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Distance/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Distance/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Distance/Distance.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Distance/Distance.h7
-rwxr-xr-xplugins/LinuxVST/src/Distance/DistanceProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Distance2/Distance2Proc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/DitherFloat/DitherFloat.cpp127
-rwxr-xr-xplugins/LinuxVST/src/DitherFloat/DitherFloat.h64
-rwxr-xr-xplugins/LinuxVST/src/DitherFloat/DitherFloatProc.cpp184
-rwxr-xr-xplugins/LinuxVST/src/Drive/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Drive/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Drive/Drive.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Drive/Drive.h9
-rwxr-xr-xplugins/LinuxVST/src/Drive/DriveProc.cpp64
-rwxr-xr-xplugins/LinuxVST/src/DrumSlam/DrumSlam.cpp7
-rwxr-xr-xplugins/LinuxVST/src/DrumSlam/DrumSlam.h9
-rwxr-xr-xplugins/LinuxVST/src/DrumSlam/DrumSlamProc.cpp66
-rwxr-xr-xplugins/LinuxVST/src/DubCenter/DubCenterProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/DubSub/DubSubProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/DustBunny/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/DustBunny/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/EQ/EQ.cpp7
-rwxr-xr-xplugins/LinuxVST/src/EQ/EQ.h7
-rwxr-xr-xplugins/LinuxVST/src/EQ/EQProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/EdIsDim/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/EdIsDim/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/EdIsDim/EdIsDim.cpp7
-rwxr-xr-xplugins/LinuxVST/src/EdIsDim/EdIsDim.h7
-rwxr-xr-xplugins/LinuxVST/src/EdIsDim/EdIsDimProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/ElectroHat/ElectroHat.cpp7
-rwxr-xr-xplugins/LinuxVST/src/ElectroHat/ElectroHat.h7
-rwxr-xr-xplugins/LinuxVST/src/ElectroHat/ElectroHatProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Energy/EnergyProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/Ensemble/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Ensemble/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Ensemble/Ensemble.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Ensemble/Ensemble.h9
-rwxr-xr-xplugins/LinuxVST/src/Ensemble/EnsembleProc.cpp66
-rwxr-xr-xplugins/LinuxVST/src/EveryTrim/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/EveryTrim/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/EveryTrim/EveryTrim.cpp7
-rwxr-xr-xplugins/LinuxVST/src/EveryTrim/EveryTrim.h7
-rwxr-xr-xplugins/LinuxVST/src/EveryTrim/EveryTrimProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/FathomFive/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/FathomFive/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/FathomFive/FathomFive.cpp10
-rwxr-xr-xplugins/LinuxVST/src/Floor/FloorProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/Fracture/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Fracture/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Fracture/Fracture.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Fracture/Fracture.h7
-rwxr-xr-xplugins/LinuxVST/src/Fracture/FractureProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/FromTape/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/FromTape/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/FromTape/FromTape.cpp7
-rwxr-xr-xplugins/LinuxVST/src/FromTape/FromTape.h7
-rwxr-xr-xplugins/LinuxVST/src/FromTape/FromTapeProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Gatelope/GatelopeProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/Golem/Golem.cpp6
-rwxr-xr-xplugins/LinuxVST/src/Golem/Golem.h6
-rwxr-xr-xplugins/LinuxVST/src/Golem/GolemProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/GrooveWear/GrooveWear.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/GrooveWear/GrooveWear.h7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/GrooveWear/GrooveWearProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/GuitarConditioner/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/GuitarConditioner/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.cpp7
-rwxr-xr-xplugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.h9
-rwxr-xr-xplugins/LinuxVST/src/GuitarConditioner/GuitarConditionerProc.cpp67
-rwxr-xr-xplugins/LinuxVST/src/HardVacuum/HardVacuum.cpp7
-rwxr-xr-xplugins/LinuxVST/src/HardVacuum/HardVacuum.h7
-rwxr-xr-xplugins/LinuxVST/src/HardVacuum/HardVacuumProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/HermeTrim/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/HermeTrim/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/HermeTrim/HermeTrim.cpp7
-rwxr-xr-xplugins/LinuxVST/src/HermeTrim/HermeTrim.h7
-rwxr-xr-xplugins/LinuxVST/src/HermeTrim/HermeTrimProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Hermepass/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Hermepass/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Hermepass/Hermepass.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Hermepass/Hermepass.h9
-rwxr-xr-xplugins/LinuxVST/src/Hermepass/HermepassProc.cpp66
-rwxr-xr-xplugins/LinuxVST/src/HighImpact/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/HighImpact/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/HighImpact/HighImpact.cpp7
-rwxr-xr-xplugins/LinuxVST/src/HighImpact/HighImpact.h7
-rwxr-xr-xplugins/LinuxVST/src/HighImpact/HighImpactProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Highpass/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Highpass/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Highpass/Highpass.cpp6
-rwxr-xr-xplugins/LinuxVST/src/Highpass/Highpass.h9
-rwxr-xr-xplugins/LinuxVST/src/Highpass/HighpassProc.cpp68
-rwxr-xr-xplugins/LinuxVST/src/Hombre/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Hombre/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Hombre/Hombre.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Hombre/Hombre.h7
-rwxr-xr-xplugins/LinuxVST/src/Hombre/HombreProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/IronOxide5/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/IronOxide5/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/IronOxide5/IronOxide5.cpp7
-rwxr-xr-xplugins/LinuxVST/src/IronOxide5/IronOxide5.h7
-rwxr-xr-xplugins/LinuxVST/src/IronOxide5/IronOxide5Proc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/IronOxideClassic/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/IronOxideClassic/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.cpp7
-rwxr-xr-xplugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.h7
-rwxr-xr-xplugins/LinuxVST/src/IronOxideClassic/IronOxideClassicProc.cpp64
-rwxr-xr-xplugins/LinuxVST/src/Logical4/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Logical4/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Logical4/Logical4.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Logical4/Logical4.h6
-rwxr-xr-xplugins/LinuxVST/src/Logical4/Logical4Proc.cpp68
-rwxr-xr-xplugins/LinuxVST/src/Loud/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Loud/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Loud/Loud.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Loud/Loud.h7
-rwxr-xr-xplugins/LinuxVST/src/Loud/LoudProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Lowpass/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Lowpass/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Lowpass/Lowpass.cpp6
-rwxr-xr-xplugins/LinuxVST/src/Lowpass/Lowpass.h9
-rwxr-xr-xplugins/LinuxVST/src/Lowpass/LowpassProc.cpp68
-rwxr-xr-xplugins/LinuxVST/src/Melt/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Melt/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Melt/Melt.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Melt/Melt.h7
-rwxr-xr-xplugins/LinuxVST/src/Melt/MeltProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/MidSide/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/MidSide/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/MidSide/MidSide.cpp7
-rwxr-xr-xplugins/LinuxVST/src/MidSide/MidSide.h7
-rwxr-xr-xplugins/LinuxVST/src/MidSide/MidSideProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/NCSeventeen/NCSeventeen.cpp7
-rwxr-xr-xplugins/LinuxVST/src/NCSeventeen/NCSeventeen.h7
-rwxr-xr-xplugins/LinuxVST/src/NCSeventeen/NCSeventeenProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Noise/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Noise/.vs/VSTProject/v14/.suobin0 -> 25088 bytes
-rwxr-xr-xplugins/LinuxVST/src/Noise/Noise.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Noise/Noise.h7
-rwxr-xr-xplugins/LinuxVST/src/Noise/NoiseProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.cpp7
-rwxr-xr-xplugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.h7
-rwxr-xr-xplugins/LinuxVST/src/NonlinearSpace/NonlinearSpaceProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/OneCornerClip/OneCornerClip.cpp7
-rwxr-xr-xplugins/LinuxVST/src/OneCornerClip/OneCornerClip.h7
-rwxr-xr-xplugins/LinuxVST/src/OneCornerClip/OneCornerClipProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/PDBuss/PDBuss.cpp7
-rwxr-xr-xplugins/LinuxVST/src/PDBuss/PDBuss.h7
-rwxr-xr-xplugins/LinuxVST/src/PDBuss/PDBussProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/PDChannel/PDChannel.cpp7
-rwxr-xr-xplugins/LinuxVST/src/PDChannel/PDChannel.h7
-rwxr-xr-xplugins/LinuxVST/src/PDChannel/PDChannelProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/PhaseNudge/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/PhaseNudge/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/PhaseNudge/PhaseNudge.cpp7
-rwxr-xr-xplugins/LinuxVST/src/PhaseNudge/PhaseNudge.h7
-rwxr-xr-xplugins/LinuxVST/src/PhaseNudge/PhaseNudgeProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Point/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Point/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Point/Point.cpp6
-rwxr-xr-xplugins/LinuxVST/src/Point/Point.h6
-rwxr-xr-xplugins/LinuxVST/src/Point/PointProc.cpp64
-rwxr-xr-xplugins/LinuxVST/src/Pop/PopProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/PowerSag/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/PowerSag/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/PowerSag/PowerSag.cpp7
-rwxr-xr-xplugins/LinuxVST/src/PowerSag/PowerSag.h7
-rwxr-xr-xplugins/LinuxVST/src/PowerSag/PowerSagProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Pressure4/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Pressure4/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Pressure4/Pressure4.cpp6
-rwxr-xr-xplugins/LinuxVST/src/Pressure4/Pressure4.h6
-rwxr-xr-xplugins/LinuxVST/src/Pressure4/Pressure4Proc.cpp66
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.h7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBussProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.h7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannelProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/PurestDrive/PurestDrive.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/PurestDrive/PurestDrive.h7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/PurestDrive/PurestDriveProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/PurestEcho/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/PurestEcho/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/PurestEcho/PurestEcho.cpp7
-rwxr-xr-xplugins/LinuxVST/src/PurestEcho/PurestEcho.h7
-rwxr-xr-xplugins/LinuxVST/src/PurestEcho/PurestEchoProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/PurestGain/PurestGain.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/PurestGain/PurestGain.h7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/PurestGain/PurestGainProc.cpp92
-rwxr-xr-xplugins/LinuxVST/src/PurestWarm/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/PurestWarm/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/PurestWarm/PurestWarm.cpp7
-rwxr-xr-xplugins/LinuxVST/src/PurestWarm/PurestWarm.h7
-rwxr-xr-xplugins/LinuxVST/src/PurestWarm/PurestWarmProc.cpp242
-rwxr-xr-xplugins/LinuxVST/src/Pyewacket/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Pyewacket/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Pyewacket/Pyewacket.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Pyewacket/Pyewacket.h7
-rwxr-xr-xplugins/LinuxVST/src/Pyewacket/PyewacketProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Righteous4/Righteous4Proc.cpp56
-rwxr-xr-xplugins/LinuxVST/src/SideDull/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/SideDull/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/SideDull/SideDull.cpp6
-rwxr-xr-xplugins/LinuxVST/src/SideDull/SideDull.h6
-rwxr-xr-xplugins/LinuxVST/src/SideDull/SideDullProc.cpp66
-rwxr-xr-xplugins/LinuxVST/src/Sidepass/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Sidepass/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/Sidepass/Sidepass.cpp6
-rwxr-xr-xplugins/LinuxVST/src/Sidepass/Sidepass.h6
-rwxr-xr-xplugins/LinuxVST/src/Sidepass/SidepassProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/SingleEndedTriode/SingleEndedTriodeProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/Slew/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Slew/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Slew2/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Slew2/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/SlewOnly/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/SlewOnly/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Spiral/SpiralProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/Spiral2/Spiral2Proc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/StarChild/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/StarChild/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/StarChild/StarChild.cpp7
-rwxr-xr-xplugins/LinuxVST/src/StarChild/StarChild.h7
-rwxr-xr-xplugins/LinuxVST/src/StarChild/StarChildProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/StereoFX/StereoFX.cpp6
-rwxr-xr-xplugins/LinuxVST/src/StereoFX/StereoFX.h6
-rwxr-xr-xplugins/LinuxVST/src/StereoFX/StereoFXProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Surge/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Surge/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Surge/Surge.cpp6
-rwxr-xr-xplugins/LinuxVST/src/Surge/Surge.h6
-rwxr-xr-xplugins/LinuxVST/src/Surge/SurgeProc.cpp66
-rwxr-xr-xplugins/LinuxVST/src/SurgeTide/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/SurgeTide/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/SurgeTide/SurgeTide.cpp6
-rwxr-xr-xplugins/LinuxVST/src/SurgeTide/SurgeTide.h6
-rwxr-xr-xplugins/LinuxVST/src/SurgeTide/SurgeTideProc.cpp66
-rwxr-xr-xplugins/LinuxVST/src/Swell/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Swell/.vs/VSTProject/v14/.suobin0 -> 24576 bytes
-rwxr-xr-xplugins/LinuxVST/src/Swell/Swell.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Swell/Swell.h7
-rwxr-xr-xplugins/LinuxVST/src/Swell/SwellProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/TapeDelay/TapeDelayProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/TapeDust/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/TapeDust/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/TapeDust/TapeDust.cpp6
-rwxr-xr-xplugins/LinuxVST/src/TapeDust/TapeDust.h6
-rwxr-xr-xplugins/LinuxVST/src/TapeDust/TapeDustProc.cpp64
-rwxr-xr-xplugins/LinuxVST/src/TapeFat/TapeFatProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/Thunder/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Thunder/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Thunder/Thunder.cpp6
-rwxr-xr-xplugins/LinuxVST/src/Thunder/Thunder.h6
-rwxr-xr-xplugins/LinuxVST/src/Thunder/ThunderProc.cpp66
-rwxr-xr-xplugins/LinuxVST/src/ToTape5/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/ToTape5/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/ToTape5/ToTape5.cpp7
-rwxr-xr-xplugins/LinuxVST/src/ToTape5/ToTape5.h7
-rwxr-xr-xplugins/LinuxVST/src/ToTape5/ToTape5Proc.cpp67
-rwxr-xr-xplugins/LinuxVST/src/ToVinyl4/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/ToVinyl4/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/ToVinyl4/ToVinyl4.cpp7
-rwxr-xr-xplugins/LinuxVST/src/ToVinyl4/ToVinyl4.h7
-rwxr-xr-xplugins/LinuxVST/src/ToVinyl4/ToVinyl4Proc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/ToneSlant/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/ToneSlant/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/ToneSlant/ToneSlant.cpp7
-rwxr-xr-xplugins/LinuxVST/src/ToneSlant/ToneSlant.h7
-rwxr-xr-xplugins/LinuxVST/src/ToneSlant/ToneSlantProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/TransDesk/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/TransDesk/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/TransDesk/TransDesk.cpp7
-rwxr-xr-xplugins/LinuxVST/src/TransDesk/TransDesk.h7
-rwxr-xr-xplugins/LinuxVST/src/TransDesk/TransDeskProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Tremolo/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/Tremolo/.vs/VSTProject/v14/.suobin0 -> 22528 bytes
-rwxr-xr-xplugins/LinuxVST/src/Tremolo/Tremolo.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Tremolo/Tremolo.h7
-rwxr-xr-xplugins/LinuxVST/src/Tremolo/TremoloProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/TubeDesk/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/TubeDesk/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/LinuxVST/src/TubeDesk/TubeDesk.cpp7
-rwxr-xr-xplugins/LinuxVST/src/TubeDesk/TubeDesk.h7
-rwxr-xr-xplugins/LinuxVST/src/TubeDesk/TubeDeskProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/UnBox/UnBoxProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/VariMu/VariMuProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/LinuxVST/src/VoiceOfTheStarship/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.h7
-rwxr-xr-x[-rw-r--r--]plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/Wider/Wider.cpp7
-rwxr-xr-xplugins/LinuxVST/src/Wider/Wider.h7
-rwxr-xr-xplugins/LinuxVST/src/Wider/WiderProc.cpp62
-rwxr-xr-xplugins/LinuxVST/src/uLawDecode/uLawDecodeProc.cpp54
-rwxr-xr-xplugins/LinuxVST/src/uLawEncode/uLawEncodeProc.cpp54
-rwxr-xr-xplugins/MacAU/ADClip7/ADClip7.cpp23
-rwxr-xr-xplugins/MacAU/ADClip7/ADClip7.h4
-rwxr-xr-xplugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser66
-rwxr-xr-xplugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev341
-rwxr-xr-xplugins/MacAU/ADT/ADT.cpp18
-rwxr-xr-xplugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.pbxuser42
-rwxr-xr-xplugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.perspectivev328
-rwxr-xr-xplugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.cpp29
-rwxr-xr-xplugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.h6
-rwxr-xr-xplugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser31
-rwxr-xr-xplugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev334
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/Acceleration/Acceleration.cpp25
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/Acceleration/Acceleration.h4
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser54
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/Acceleration/Acceleration.xcodeproj/project.pbxproj0
-rwxr-xr-xplugins/MacAU/Air/Air.cpp29
-rwxr-xr-xplugins/MacAU/Air/Air.h7
-rwxr-xr-xplugins/MacAU/Air/Air.xcodeproj/christopherjohnson.pbxuser40
-rwxr-xr-xplugins/MacAU/Air/Air.xcodeproj/christopherjohnson.perspectivev328
-rwxr-xr-xplugins/MacAU/AtmosphereBuss/AtmosphereBuss.cpp19
-rwxr-xr-xplugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser70
-rwxr-xr-xplugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev340
-rwxr-xr-xplugins/MacAU/AtmosphereChannel/AtmosphereChannel.cpp19
-rwxr-xr-xplugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser86
-rwxr-xr-xplugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev340
-rwxr-xr-xplugins/MacAU/Aura/Aura.cpp27
-rwxr-xr-xplugins/MacAU/Aura/Aura.h4
-rwxr-xr-xplugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.pbxuser65
-rwxr-xr-xplugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.perspectivev336
-rwxr-xr-xplugins/MacAU/Average/Average.cpp26
-rwxr-xr-xplugins/MacAU/Average/Average.h5
-rwxr-xr-xplugins/MacAU/Average/Average.xcodeproj/christopherjohnson.pbxuser58
-rwxr-xr-xplugins/MacAU/Average/Average.xcodeproj/christopherjohnson.perspectivev371
-rwxr-xr-xplugins/MacAU/BassKit/BassKit.cpp28
-rwxr-xr-xplugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser22
-rwxr-xr-xplugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser42
-rwxr-xr-xplugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser46
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/project.pbxproj0
-rwxr-xr-xplugins/MacAU/Bite/Bite.cpp27
-rwxr-xr-xplugins/MacAU/Bite/Bite.h5
-rwxr-xr-xplugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.pbxuser42
-rwxr-xr-xplugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.perspectivev339
-rwxr-xr-xplugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.pbxuser18
-rwxr-xr-xplugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacAU/BussColors4/BussColors4.cpp25
-rwxr-xr-xplugins/MacAU/BussColors4/BussColors4.h4
-rwxr-xr-xplugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser46
-rwxr-xr-xplugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-xplugins/MacAU/ButterComp/ButterComp.cpp13
-rwxr-xr-xplugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser58
-rwxr-xr-xplugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/ButterComp2/ButterComp2.cpp18
-rwxr-xr-xplugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser22
-rwxr-xr-xplugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/C5RawBuss/C5RawBuss.cpp25
-rwxr-xr-xplugins/MacAU/C5RawBuss/C5RawBuss.h4
-rwxr-xr-xplugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser50
-rwxr-xr-xplugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev382
-rwxr-xr-xplugins/MacAU/C5RawChannel/C5RawChannel.cpp25
-rwxr-xr-xplugins/MacAU/C5RawChannel/C5RawChannel.h4
-rwxr-xr-xplugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser57
-rwxr-xr-xplugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev346
-rwxr-xr-xplugins/MacAU/CStrip/CStrip.cpp27
-rwxr-xr-xplugins/MacAU/CStrip/CStrip.h4
-rwxr-xr-xplugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser62
-rwxr-xr-xplugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/Capacitor/Capacitor.cpp25
-rwxr-xr-xplugins/MacAU/Capacitor/Capacitor.h4
-rwxr-xr-xplugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser42
-rwxr-xr-xplugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev341
-rwxr-xr-xplugins/MacAU/Channel6/Channel6.cpp21
-rwxr-xr-xplugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser62
-rwxr-xr-xplugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/Chorus/Chorus.cpp27
-rwxr-xr-xplugins/MacAU/Chorus/Chorus.h5
-rwxr-xr-xplugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser36
-rwxr-xr-xplugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/ChorusEnsemble/ChorusEnsemble.cpp27
-rwxr-xr-xplugins/MacAU/ChorusEnsemble/ChorusEnsemble.h5
-rwxr-xr-xplugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser45
-rwxr-xr-xplugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-xplugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser16
-rwxr-xr-xplugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev330
-rwxr-xr-xplugins/MacAU/Console4Buss/Console4Buss.cpp26
-rwxr-xr-xplugins/MacAU/Console4Buss/Console4Buss.h5
-rwxr-xr-xplugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser62
-rwxr-xr-xplugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev340
-rwxr-xr-xplugins/MacAU/Console4Channel/Console4Channel.cpp26
-rwxr-xr-xplugins/MacAU/Console4Channel/Console4Channel.h5
-rwxr-xr-xplugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser46
-rwxr-xr-xplugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev334
-rwxr-xr-xplugins/MacAU/Console5Buss/Console5Buss.cpp25
-rwxr-xr-xplugins/MacAU/Console5Buss/Console5Buss.h4
-rwxr-xr-xplugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser50
-rwxr-xr-xplugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev344
-rwxr-xr-xplugins/MacAU/Console5Channel/Console5Channel.cpp25
-rwxr-xr-xplugins/MacAU/Console5Channel/Console5Channel.h4
-rwxr-xr-xplugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser42
-rwxr-xr-xplugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev338
-rwxr-xr-xplugins/MacAU/Console5DarkCh/Console5DarkCh.cpp28
-rwxr-xr-xplugins/MacAU/Console5DarkCh/Console5DarkCh.h4
-rwxr-xr-xplugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser28
-rwxr-xr-xplugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.cpp28
-rwxr-xr-xplugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.h4
-rwxr-xr-xplugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser55
-rwxr-xr-xplugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev339
-rwxr-xr-xplugins/MacAU/Crystal/Crystal.cpp18
-rwxr-xr-xplugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser56
-rwxr-xr-xplugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser18
-rwxr-xr-xplugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-xplugins/MacAU/DeEss/DeEss.cpp18
-rwxr-xr-xplugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser28
-rwxr-xr-xplugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev338
-rwxr-xr-xplugins/MacAU/DeRez/DeRez.cpp26
-rwxr-xr-xplugins/MacAU/DeRez/DeRez.h4
-rwxr-xr-xplugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser62
-rwxr-xr-xplugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/Density/Density.cpp25
-rwxr-xr-xplugins/MacAU/Density/Density.exp2
-rwxr-xr-xplugins/MacAU/Density/Density.h3
-rwxr-xr-xplugins/MacAU/Density/Density.xcodeproj/christopherjohnson.pbxuser60
-rwxr-xr-xplugins/MacAU/Density/Density.xcodeproj/christopherjohnson.perspectivev339
-rwxr-xr-xplugins/MacAU/Desk/Desk.cpp28
-rwxr-xr-xplugins/MacAU/Desk/Desk.h4
-rwxr-xr-xplugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.pbxuser40
-rwxr-xr-xplugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.perspectivev339
-rwxr-xr-xplugins/MacAU/Desk4/Desk4.cpp26
-rwxr-xr-xplugins/MacAU/Desk4/Desk4.h4
-rwxr-xr-xplugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser32
-rwxr-xr-xplugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/Distance/Distance.cpp26
-rwxr-xr-xplugins/MacAU/Distance/Distance.exp2
-rwxr-xr-xplugins/MacAU/Distance/Distance.h5
-rwxr-xr-xplugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.pbxuser64
-rwxr-xr-xplugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.perspectivev336
-rwxr-xr-xplugins/MacAU/Distance2/Distance2.cpp18
-rwxr-xr-xplugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser54
-rwxr-xr-xplugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev334
-rwxr-xr-xplugins/MacAU/DitherFloat/DitherFloat.cpp255
-rwxr-xr-xplugins/MacAU/DitherFloat/DitherFloat.exp1
-rwxr-xr-xplugins/MacAU/DitherFloat/DitherFloat.h138
-rwxr-xr-xplugins/MacAU/DitherFloat/DitherFloat.r61
-rwxr-xr-xplugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.mode1v31358
-rwxr-xr-xplugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser131
-rwxr-xr-xplugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev31506
-rwxr-xr-xplugins/MacAU/DitherFloat/DitherFloat.xcodeproj/project.pbxproj490
-rwxr-xr-xplugins/MacAU/DitherFloat/DitherFloatVersion.h58
-rwxr-xr-xplugins/MacAU/DitherFloat/English.lproj/InfoPlist.stringsbin0 -> 388 bytes
-rwxr-xr-xplugins/MacAU/DitherFloat/Info.plist28
-rwxr-xr-xplugins/MacAU/DitherFloat/version.plist16
-rwxr-xr-xplugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser58
-rwxr-xr-xplugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev376
-rwxr-xr-xplugins/MacAU/DitherMeTimbers/DitherMeTimbers.cpp7
-rwxr-xr-xplugins/MacAU/DitherMeTimbers/DitherMeTimbers.h4
-rwxr-xr-xplugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser58
-rwxr-xr-xplugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev328
-rwxr-xr-xplugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser34
-rwxr-xr-xplugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev326
-rwxr-xr-xplugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser64
-rwxr-xr-xplugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/Drive/Drive.cpp26
-rwxr-xr-xplugins/MacAU/Drive/Drive.exp2
-rwxr-xr-xplugins/MacAU/Drive/Drive.h3
-rwxr-xr-xplugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.pbxuser68
-rwxr-xr-xplugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.perspectivev341
-rwxr-xr-xplugins/MacAU/DrumSlam/DrumSlam.cpp27
-rwxr-xr-xplugins/MacAU/DrumSlam/DrumSlam.h3
-rwxr-xr-xplugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser71
-rwxr-xr-xplugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev339
-rwxr-xr-xplugins/MacAU/DubCenter/DubCenter.cpp26
-rwxr-xr-xplugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser32
-rwxr-xr-xplugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev334
-rwxr-xr-xplugins/MacAU/DubSub/DubSub.cpp19
-rwxr-xr-xplugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser36
-rwxr-xr-xplugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev336
-rwxr-xr-xplugins/MacAU/DustBunny/DustBunny.cpp8
-rwxr-xr-xplugins/MacAU/DustBunny/DustBunny.h2
-rwxr-xr-xplugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser26
-rwxr-xr-xplugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev331
-rwxr-xr-xplugins/MacAU/EQ/EQ.cpp28
-rwxr-xr-xplugins/MacAU/EQ/EQ.h4
-rwxr-xr-xplugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.pbxuser16
-rwxr-xr-xplugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.perspectivev327
-rwxr-xr-xplugins/MacAU/EdIsDim/EdIsDim.cpp38
-rwxr-xr-xplugins/MacAU/EdIsDim/EdIsDim.h7
-rwxr-xr-xplugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser46
-rwxr-xr-xplugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev339
-rwxr-xr-xplugins/MacAU/ElectroHat/ElectroHat.cpp25
-rwxr-xr-xplugins/MacAU/ElectroHat/ElectroHat.h4
-rwxr-xr-xplugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser60
-rwxr-xr-xplugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev328
-rwxr-xr-xplugins/MacAU/Energy/Energy.cpp18
-rwxr-xr-xplugins/MacAU/Energy/Energy.h2
-rwxr-xr-xplugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.pbxuser64
-rwxr-xr-xplugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.perspectivev338
-rwxr-xr-xplugins/MacAU/Ensemble/Ensemble.cpp27
-rwxr-xr-xplugins/MacAU/Ensemble/Ensemble.h5
-rwxr-xr-xplugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser42
-rwxr-xr-xplugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev341
-rwxr-xr-xplugins/MacAU/EveryTrim/EveryTrim.cpp40
-rwxr-xr-xplugins/MacAU/EveryTrim/EveryTrim.h8
-rwxr-xr-xplugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser50
-rwxr-xr-xplugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev337
-rwxr-xr-xplugins/MacAU/FathomFive/FathomFive.cpp6
-rwxr-xr-xplugins/MacAU/FathomFive/FathomFive.h1
-rwxr-xr-xplugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser32
-rwxr-xr-xplugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev339
-rwxr-xr-xplugins/MacAU/Floor/Floor.cpp18
-rwxr-xr-xplugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.pbxuser44
-rwxr-xr-xplugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.perspectivev334
-rwxr-xr-xplugins/MacAU/Fracture/Fracture.cpp28
-rwxr-xr-xplugins/MacAU/Fracture/Fracture.exp2
-rwxr-xr-xplugins/MacAU/Fracture/Fracture.h4
-rwxr-xr-xplugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser50
-rwxr-xr-xplugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev347
-rwxr-xr-xplugins/MacAU/FromTape/FromTape.cpp25
-rwxr-xr-xplugins/MacAU/FromTape/FromTape.h4
-rwxr-xr-xplugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser49
-rwxr-xr-xplugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev324
-rwxr-xr-xplugins/MacAU/Gatelinked/Gatelinked.cpp34
-rwxr-xr-xplugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.pbxuser28
-rwxr-xr-xplugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.perspectivev331
-rwxr-xr-xplugins/MacAU/Gatelope/Gatelope.cpp18
-rwxr-xr-xplugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser38
-rwxr-xr-xplugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev374
-rwxr-xr-xplugins/MacAU/Golem/Golem.cpp45
-rwxr-xr-xplugins/MacAU/Golem/Golem.h7
-rwxr-xr-xplugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.pbxuser64
-rwxr-xr-xplugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/GrooveWear/GrooveWear.cpp25
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/GrooveWear/GrooveWear.h4
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser59
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev341
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/project.pbxproj0
-rwxr-xr-xplugins/MacAU/GuitarConditioner/GuitarConditioner.cpp25
-rwxr-xr-xplugins/MacAU/GuitarConditioner/GuitarConditioner.h3
-rwxr-xr-xplugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser46
-rwxr-xr-xplugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev340
-rwxr-xr-xplugins/MacAU/HardVacuum/HardVacuum.cpp25
-rwxr-xr-xplugins/MacAU/HardVacuum/HardVacuum.h4
-rwxr-xr-xplugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser30
-rwxr-xr-xplugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev334
-rwxr-xr-xplugins/MacAU/HermeTrim/HermeTrim.cpp40
-rwxr-xr-xplugins/MacAU/HermeTrim/HermeTrim.h7
-rwxr-xr-xplugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser62
-rwxr-xr-xplugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev341
-rwxr-xr-xplugins/MacAU/Hermepass/Hermepass.cpp25
-rwxr-xr-xplugins/MacAU/Hermepass/Hermepass.h3
-rwxr-xr-xplugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser30
-rwxr-xr-xplugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev352
-rwxr-xr-xplugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.pbxuser18
-rwxr-xr-xplugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.perspectivev322
-rwxr-xr-xplugins/MacAU/HighImpact/HighImpact.cpp28
-rwxr-xr-xplugins/MacAU/HighImpact/HighImpact.h4
-rwxr-xr-xplugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser40
-rwxr-xr-xplugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/Highpass/Highpass.cpp25
-rwxr-xr-xplugins/MacAU/Highpass/Highpass.h3
-rwxr-xr-xplugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser30
-rwxr-xr-xplugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev339
-rwxr-xr-xplugins/MacAU/Hombre/Hombre.cpp31
-rwxr-xr-xplugins/MacAU/Hombre/Hombre.h4
-rwxr-xr-xplugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser24
-rwxr-xr-xplugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev327
-rwxr-xr-xplugins/MacAU/IronOxide5/IronOxide5.cpp30
-rwxr-xr-xplugins/MacAU/IronOxide5/IronOxide5.h7
-rwxr-xr-xplugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser28
-rwxr-xr-xplugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev331
-rwxr-xr-xplugins/MacAU/IronOxideClassic/IronOxideClassic.cpp27
-rwxr-xr-xplugins/MacAU/IronOxideClassic/IronOxideClassic.h3
-rwxr-xr-xplugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser40
-rwxr-xr-xplugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/Logical4/Logical4.cpp47
-rwxr-xr-xplugins/MacAU/Logical4/Logical4.h6
-rwxr-xr-xplugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser40
-rwxr-xr-xplugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev333
-rwxr-xr-xplugins/MacAU/Loud/Loud.cpp25
-rwxr-xr-xplugins/MacAU/Loud/Loud.h4
-rwxr-xr-xplugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.pbxuser44
-rwxr-xr-xplugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-xplugins/MacAU/Lowpass/Lowpass.cpp25
-rwxr-xr-xplugins/MacAU/Lowpass/Lowpass.h3
-rwxr-xr-xplugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser24
-rwxr-xr-xplugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev339
-rwxr-xr-xplugins/MacAU/Melt/Melt.cpp28
-rwxr-xr-xplugins/MacAU/Melt/Melt.h4
-rwxr-xr-xplugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.pbxuser40
-rwxr-xr-xplugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/MidSide/MidSide.cpp40
-rwxr-xr-xplugins/MacAU/MidSide/MidSide.h7
-rwxr-xr-xplugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser44
-rwxr-xr-xplugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev339
-rwxr-xr-xplugins/MacAU/NCSeventeen/NCSeventeen.cpp29
-rwxr-xr-xplugins/MacAU/NCSeventeen/NCSeventeen.h4
-rwxr-xr-xplugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser30
-rwxr-xr-xplugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev341
-rwxr-xr-xplugins/MacAU/Noise/Noise.cpp30
-rwxr-xr-xplugins/MacAU/Noise/Noise.h4
-rwxr-xr-xplugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.pbxuser20
-rwxr-xr-xplugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.perspectivev326
-rwxr-xr-xplugins/MacAU/NonlinearSpace/NonlinearSpace.cpp37
-rwxr-xr-xplugins/MacAU/NonlinearSpace/NonlinearSpace.h8
-rwxr-xr-xplugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser32
-rwxr-xr-xplugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev339
-rwxr-xr-xplugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.pbxuser65
-rwxr-xr-xplugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.perspectivev326
-rwxr-xr-xplugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser56
-rwxr-xr-xplugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev330
-rwxr-xr-xplugins/MacAU/OneCornerClip/OneCornerClip.cpp27
-rwxr-xr-xplugins/MacAU/OneCornerClip/OneCornerClip.h4
-rwxr-xr-xplugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser34
-rwxr-xr-xplugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev337
-rwxr-xr-xplugins/MacAU/PDBuss/PDBuss.cpp26
-rwxr-xr-xplugins/MacAU/PDBuss/PDBuss.h4
-rwxr-xr-xplugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser54
-rwxr-xr-xplugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev344
-rwxr-xr-xplugins/MacAU/PDChannel/PDChannel.cpp28
-rwxr-xr-xplugins/MacAU/PDChannel/PDChannel.h4
-rwxr-xr-xplugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser40
-rwxr-xr-xplugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev340
-rwxr-xr-xplugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.pbxuser38
-rwxr-xr-xplugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-xplugins/MacAU/PhaseNudge/PhaseNudge.cpp28
-rwxr-xr-xplugins/MacAU/PhaseNudge/PhaseNudge.exp2
-rwxr-xr-xplugins/MacAU/PhaseNudge/PhaseNudge.h4
-rwxr-xr-xplugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser28
-rwxr-xr-xplugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-xplugins/MacAU/Point/Poynt.cpp27
-rwxr-xr-xplugins/MacAU/Point/Poynt.h3
-rwxr-xr-xplugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.pbxuser20
-rwxr-xr-xplugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.perspectivev325
-rwxr-xr-xplugins/MacAU/Pop/Pop.cpp21
-rwxr-xr-xplugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.pbxuser57
-rwxr-xr-xplugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.perspectivev336
-rwxr-xr-xplugins/MacAU/PowerSag/PowerSag.cpp28
-rwxr-xr-xplugins/MacAU/PowerSag/PowerSag.h5
-rwxr-xr-xplugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser44
-rwxr-xr-xplugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacAU/Pressure4/Pressure4.cpp38
-rwxr-xr-xplugins/MacAU/Pressure4/Pressure4.h6
-rwxr-xr-xplugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser64
-rwxr-xr-xplugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev340
-rwxr-xr-xplugins/MacAU/Pressure4Mono/Pressure4Mono.cpp26
-rwxr-xr-xplugins/MacAU/Pressure4Mono/Pressure4Mono.h3
-rwxr-xr-xplugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.pbxuser64
-rwxr-xr-xplugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.perspectivev349
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.cpp28
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.h4
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser77
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev392
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.pbxproj0
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.cpp28
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.h4
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser57
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev342
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.pbxproj0
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestDrive/PurestDrive.cpp25
-rwxr-xr-xplugins/MacAU/PurestDrive/PurestDrive.h4
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).pbxuser0
-rwxr-xr-xplugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser42
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev379
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/project.pbxproj0
-rwxr-xr-xplugins/MacAU/PurestEcho/PurestEcho.cpp28
-rwxr-xr-xplugins/MacAU/PurestEcho/PurestEcho.h4
-rwxr-xr-xplugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser42
-rwxr-xr-xplugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev340
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestGain/PurestGain.cpp42
-rwxr-xr-xplugins/MacAU/PurestGain/PurestGain.h5
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser42
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev348
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/PurestGain/PurestGain.xcodeproj/project.pbxproj0
-rwxr-xr-xplugins/MacAU/PurestWarm/PurestWarm.cpp59
-rwxr-xr-xplugins/MacAU/PurestWarm/PurestWarm.h4
-rwxr-xr-xplugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser85
-rwxr-xr-xplugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev386
-rwxr-xr-xplugins/MacAU/Pyewacket/Pyewacket.cpp37
-rwxr-xr-xplugins/MacAU/Pyewacket/Pyewacket.h7
-rwxr-xr-xplugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser53
-rwxr-xr-xplugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev354
-rwxr-xr-xplugins/MacAU/PyewacketMono/PyewacketMono.cpp23
-rwxr-xr-xplugins/MacAU/PyewacketMono/PyewacketMono.h4
-rwxr-xr-xplugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.pbxuser54
-rwxr-xr-xplugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.perspectivev349
-rwxr-xr-xplugins/MacAU/Righteous4/Righteous4.cpp18
-rwxr-xr-xplugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser69
-rwxr-xr-xplugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev324
-rwxr-xr-xplugins/MacAU/SideDull/SideDull.cpp41
-rwxr-xr-xplugins/MacAU/SideDull/SideDull.h7
-rwxr-xr-xplugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser70
-rwxr-xr-xplugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev353
-rwxr-xr-xplugins/MacAU/Sidepass/Sidepass.cpp43
-rwxr-xr-xplugins/MacAU/Sidepass/Sidepass.h7
-rwxr-xr-xplugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser64
-rwxr-xr-xplugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev348
-rwxr-xr-xplugins/MacAU/SingleEndedTriode/SingleEndedTriode.cpp18
-rwxr-xr-xplugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser69
-rwxr-xr-xplugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev357
-rwxr-xr-xplugins/MacAU/Slew/Slew.cpp7
-rwxr-xr-xplugins/MacAU/Slew/Slew.exp2
-rwxr-xr-xplugins/MacAU/Slew/Slew.h25
-rwxr-xr-xplugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.pbxuser76
-rwxr-xr-xplugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.perspectivev348
-rwxr-xr-xplugins/MacAU/Slew2/Slew2.cpp8
-rwxr-xr-xplugins/MacAU/Slew2/Slew2.h2
-rwxr-xr-xplugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser55
-rwxr-xr-xplugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev356
-rwxr-xr-xplugins/MacAU/SlewOnly/SlewOnly.cpp8
-rwxr-xr-xplugins/MacAU/SlewOnly/SlewOnly.exp2
-rwxr-xr-xplugins/MacAU/SlewOnly/SlewOnly.h1
-rwxr-xr-xplugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser83
-rwxr-xr-xplugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev353
-rwxr-xr-xplugins/MacAU/Spiral/Spiral.cpp18
-rwxr-xr-xplugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser75
-rwxr-xr-xplugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev352
-rwxr-xr-xplugins/MacAU/Spiral2/Spiral2.cpp18
-rwxr-xr-xplugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser74
-rwxr-xr-xplugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev336
-rwxr-xr-xplugins/MacAU/StarChild/StarChild.cpp44
-rwxr-xr-xplugins/MacAU/StarChild/StarChild.h13
-rwxr-xr-xplugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser59
-rwxr-xr-xplugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev352
-rwxr-xr-xplugins/MacAU/StereoFX/StereoFX.cpp39
-rwxr-xr-xplugins/MacAU/StereoFX/StereoFX.h6
-rwxr-xr-xplugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser53
-rwxr-xr-xplugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev356
-rwxr-xr-xplugins/MacAU/SubsOnly/SubsOnly.cpp9
-rwxr-xr-xplugins/MacAU/SubsOnly/SubsOnly.exp2
-rwxr-xr-xplugins/MacAU/SubsOnly/SubsOnly.h1
-rwxr-xr-xplugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser61
-rwxr-xr-xplugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev355
-rwxr-xr-xplugins/MacAU/Surge/Surge.cpp40
-rwxr-xr-xplugins/MacAU/Surge/Surge.h7
-rwxr-xr-xplugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.pbxuser55
-rwxr-xr-xplugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.perspectivev356
-rwxr-xr-xplugins/MacAU/SurgeMono/SurgeMono.cpp29
-rwxr-xr-xplugins/MacAU/SurgeMono/SurgeMono.h4
-rwxr-xr-xplugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.pbxuser64
-rwxr-xr-xplugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.perspectivev341
-rwxr-xr-xplugins/MacAU/SurgeTide/SurgeTide.cpp42
-rwxr-xr-xplugins/MacAU/SurgeTide/SurgeTide.h7
-rwxr-xr-xplugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser84
-rwxr-xr-xplugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev346
-rwxr-xr-xplugins/MacAU/SurgeTideMono/SurgeTideMono.cpp29
-rwxr-xr-xplugins/MacAU/SurgeTideMono/SurgeTideMono.h4
-rwxr-xr-xplugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.pbxuser66
-rwxr-xr-xplugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.perspectivev353
-rwxr-xr-xplugins/MacAU/Swell/Swell.cpp28
-rwxr-xr-xplugins/MacAU/Swell/Swell.h5
-rwxr-xr-xplugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.pbxuser67
-rwxr-xr-xplugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.perspectivev351
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser0
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev30
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/project.pbxproj0
-rwxr-xr-xplugins/MacAU/TapeDelay/TapeDelay.cpp18
-rwxr-xr-xplugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser69
-rwxr-xr-xplugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev336
-rwxr-xr-xplugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser42
-rwxr-xr-xplugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev330
-rwxr-xr-xplugins/MacAU/TapeDust/TapeDust.cpp27
-rwxr-xr-xplugins/MacAU/TapeDust/TapeDust.h3
-rwxr-xr-xplugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser66
-rwxr-xr-xplugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev359
-rwxr-xr-xplugins/MacAU/TapeFat/TapeFat.cpp18
-rwxr-xr-xplugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser80
-rwxr-xr-xplugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev349
-rwxr-xr-xplugins/MacAU/Thunder/Thunder.cpp39
-rwxr-xr-xplugins/MacAU/Thunder/Thunder.h6
-rwxr-xr-xplugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser77
-rwxr-xr-xplugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev354
-rwxr-xr-xplugins/MacAU/ToTape5/ToTape5.cpp30
-rwxr-xr-xplugins/MacAU/ToTape5/ToTape5.h5
-rwxr-xr-xplugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser63
-rwxr-xr-xplugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev350
-rwxr-xr-xplugins/MacAU/ToVinyl4/ToVinyl4.cpp40
-rwxr-xr-xplugins/MacAU/ToVinyl4/ToVinyl4.h9
-rwxr-xr-xplugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser53
-rwxr-xr-xplugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev346
-rwxr-xr-xplugins/MacAU/ToneSlant/ToneSlant.cpp26
-rwxr-xr-xplugins/MacAU/ToneSlant/ToneSlant.h4
-rwxr-xr-xplugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser64
-rwxr-xr-xplugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev349
-rwxr-xr-xplugins/MacAU/TransDesk/TransDesk.cpp27
-rwxr-xr-xplugins/MacAU/TransDesk/TransDesk.h4
-rwxr-xr-xplugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser54
-rwxr-xr-xplugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev349
-rwxr-xr-xplugins/MacAU/Tremolo/Tremolo.cpp27
-rwxr-xr-xplugins/MacAU/Tremolo/Tremolo.h5
-rwxr-xr-xplugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser53
-rwxr-xr-xplugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev352
-rwxr-xr-xplugins/MacAU/TubeDesk/TubeDesk.cpp26
-rwxr-xr-xplugins/MacAU/TubeDesk/TubeDesk.h4
-rwxr-xr-xplugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser62
-rwxr-xr-xplugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev347
-rwxr-xr-xplugins/MacAU/UnBox/UnBox.cpp20
-rwxr-xr-xplugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser70
-rwxr-xr-xplugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev352
-rwxr-xr-xplugins/MacAU/VariMu/VariMu.cpp13
-rwxr-xr-xplugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser42
-rwxr-xr-xplugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev353
-rwxr-xr-xplugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.cpp25
-rwxr-xr-xplugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.h4
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser73
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev349
-rwxr-xr-x[-rw-r--r--]plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj0
-rwxr-xr-xplugins/MacAU/Wider/Wider.cpp39
-rwxr-xr-xplugins/MacAU/Wider/Wider.h7
-rwxr-xr-xplugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.pbxuser73
-rwxr-xr-xplugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.perspectivev346
-rwxr-xr-xplugins/MacAU/uLawDecode/uLawDecode.cpp18
-rwxr-xr-xplugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser61
-rwxr-xr-xplugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev348
-rwxr-xr-xplugins/MacAU/uLawEncode/uLawEncode.cpp18
-rwxr-xr-xplugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser64
-rwxr-xr-xplugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev357
-rwxr-xr-xplugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev317
-rwxr-xr-xplugins/MacVST/ADClip7/source/ADClip7.cpp7
-rwxr-xr-xplugins/MacVST/ADClip7/source/ADClip7.h7
-rwxr-xr-xplugins/MacVST/ADClip7/source/ADClip7Proc.cpp64
-rwxr-xr-xplugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.pbxuser43
-rwxr-xr-xplugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.perspectivev324
-rwxr-xr-xplugins/MacVST/ADT/source/ADTProc.cpp54
-rwxr-xr-xplugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser10
-rwxr-xr-xplugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.cpp7
-rwxr-xr-xplugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.h7
-rwxr-xr-xplugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClipProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser47
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev334
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstatebin12075 -> 12075 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstatebin10373 -> 10373 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.pbxuser0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme0
-rwxr-xr-xplugins/MacVST/Acceleration/source/Acceleration.cpp7
-rwxr-xr-xplugins/MacVST/Acceleration/source/Acceleration.h7
-rwxr-xr-xplugins/MacVST/Acceleration/source/AccelerationProc.cpp62
-rwxr-xr-xplugins/MacVST/Air/Air.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/Air/Air.xcodeproj/christopherjohnson.perspectivev323
-rwxr-xr-xplugins/MacVST/Air/Air.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/Air/source/Air.cpp7
-rwxr-xr-xplugins/MacVST/Air/source/Air.h7
-rwxr-xr-xplugins/MacVST/Air/source/AirProc.cpp62
-rwxr-xr-xplugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser30
-rwxr-xr-xplugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev322
-rwxr-xr-xplugins/MacVST/AtmosphereBuss/source/AtmosphereBussProc.cpp56
-rwxr-xr-xplugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser64
-rwxr-xr-xplugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev342
-rwxr-xr-xplugins/MacVST/AtmosphereChannel/source/AtmosphereChannelProc.cpp56
-rwxr-xr-xplugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.pbxuser26
-rwxr-xr-xplugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.perspectivev327
-rwxr-xr-xplugins/MacVST/Aura/source/Aura.cpp7
-rwxr-xr-xplugins/MacVST/Aura/source/Aura.h7
-rwxr-xr-xplugins/MacVST/Aura/source/AuraProc.cpp62
-rwxr-xr-xplugins/MacVST/Average/Average.xcodeproj/christopherjohnson.pbxuser12
-rwxr-xr-xplugins/MacVST/Average/Average.xcodeproj/christopherjohnson.perspectivev313
-rwxr-xr-xplugins/MacVST/Average/Average.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/Average/source/Average.cpp7
-rwxr-xr-xplugins/MacVST/Average/source/Average.h7
-rwxr-xr-xplugins/MacVST/Average/source/AverageProc.cpp66
-rwxr-xr-xplugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser38
-rwxr-xr-xplugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev364
-rwxr-xr-xplugins/MacVST/BassKit/source/BassKitProc.cpp54
-rwxr-xr-xplugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser26
-rwxr-xr-xplugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev324
-rwxr-xr-xplugins/MacVST/BitGlitter/source/BitGlitter.cpp3
-rwxr-xr-xplugins/MacVST/BitGlitter/source/BitGlitter.h3
-rwxr-xr-xplugins/MacVST/BitGlitter/source/BitGlitterProc.cpp19
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser69
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev346
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstatebin12075 -> 12075 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstatebin10373 -> 10373 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.pbxuser0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme0
-rwxr-xr-xplugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.pbxuser16
-rwxr-xr-xplugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.perspectivev313
-rwxr-xr-xplugins/MacVST/Bite/source/Bite.cpp7
-rwxr-xr-xplugins/MacVST/Bite/source/Bite.h7
-rwxr-xr-xplugins/MacVST/Bite/source/BiteProc.cpp62
-rwxr-xr-xplugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser20
-rwxr-xr-xplugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev330
-rwxr-xr-xplugins/MacVST/BussColors4/source/BussColors4.cpp22
-rwxr-xr-xplugins/MacVST/BussColors4/source/BussColors4.h7
-rwxr-xr-xplugins/MacVST/BussColors4/source/BussColors4Proc.cpp62
-rwxr-xr-xplugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser34
-rwxr-xr-xplugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev330
-rwxr-xr-xplugins/MacVST/ButterComp/source/ButterComp.cpp7
-rwxr-xr-xplugins/MacVST/ButterComp/source/ButterComp.h7
-rwxr-xr-xplugins/MacVST/ButterComp/source/ButterCompProc.cpp62
-rwxr-xr-xplugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser42
-rwxr-xr-xplugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev326
-rwxr-xr-xplugins/MacVST/ButterComp2/source/ButterComp2Proc.cpp54
-rwxr-xr-xplugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev324
-rwxr-xr-xplugins/MacVST/C5RawBuss/source/C5RawBuss.cpp7
-rwxr-xr-xplugins/MacVST/C5RawBuss/source/C5RawBuss.h7
-rwxr-xr-xplugins/MacVST/C5RawBuss/source/C5RawBussProc.cpp62
-rwxr-xr-xplugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev310
-rwxr-xr-xplugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/C5RawChannel/source/C5RawChannel.cpp7
-rwxr-xr-xplugins/MacVST/C5RawChannel/source/C5RawChannel.h7
-rwxr-xr-xplugins/MacVST/C5RawChannel/source/C5RawChannelProc.cpp62
-rwxr-xr-xplugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser18
-rwxr-xr-xplugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev328
-rwxr-xr-xplugins/MacVST/CStrip/source/CStrip.cpp7
-rwxr-xr-xplugins/MacVST/CStrip/source/CStrip.h7
-rwxr-xr-xplugins/MacVST/CStrip/source/CStripProc.cpp62
-rwxr-xr-xplugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser18
-rwxr-xr-xplugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-xplugins/MacVST/Capacitor/source/Capacitor.cpp7
-rwxr-xr-xplugins/MacVST/Capacitor/source/Capacitor.h7
-rwxr-xr-xplugins/MacVST/Capacitor/source/CapacitorProc.cpp62
-rwxr-xr-xplugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser43
-rwxr-xr-xplugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev336
-rwxr-xr-xplugins/MacVST/Channel6/source/Channel6Proc.cpp54
-rwxr-xr-xplugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser75
-rwxr-xr-xplugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev336
-rwxr-xr-xplugins/MacVST/Chorus/source/Chorus.cpp7
-rwxr-xr-xplugins/MacVST/Chorus/source/Chorus.h8
-rwxr-xr-xplugins/MacVST/Chorus/source/ChorusProc.cpp62
-rwxr-xr-xplugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser44
-rwxr-xr-xplugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.cpp7
-rwxr-xr-xplugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.h7
-rwxr-xr-xplugins/MacVST/ChorusEnsemble/source/ChorusEnsembleProc.cpp64
-rwxr-xr-xplugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser14
-rwxr-xr-xplugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser18
-rwxr-xr-xplugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/Console4Buss/source/Console4Buss.cpp7
-rwxr-xr-xplugins/MacVST/Console4Buss/source/Console4Buss.h7
-rwxr-xr-xplugins/MacVST/Console4Buss/source/Console4BussProc.cpp63
-rwxr-xr-xplugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser18
-rwxr-xr-xplugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/Console4Channel/source/Console4Channel.cpp7
-rwxr-xr-xplugins/MacVST/Console4Channel/source/Console4Channel.h7
-rwxr-xr-xplugins/MacVST/Console4Channel/source/Console4ChannelProc.cpp63
-rwxr-xr-xplugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser26
-rwxr-xr-xplugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-xplugins/MacVST/Console5Buss/source/Console5Buss.cpp7
-rwxr-xr-xplugins/MacVST/Console5Buss/source/Console5Buss.h7
-rwxr-xr-xplugins/MacVST/Console5Buss/source/Console5BussProc.cpp62
-rwxr-xr-xplugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser27
-rwxr-xr-xplugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev332
-rwxr-xr-xplugins/MacVST/Console5Channel/source/Console5Channel.cpp7
-rwxr-xr-xplugins/MacVST/Console5Channel/source/Console5Channel.h7
-rwxr-xr-xplugins/MacVST/Console5Channel/source/Console5ChannelProc.cpp62
-rwxr-xr-xplugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev318
-rwxr-xr-xplugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/Console5DarkCh/source/Console5DarkCh.cpp7
-rwxr-xr-xplugins/MacVST/Console5DarkCh/source/Console5DarkCh.h7
-rwxr-xr-xplugins/MacVST/Console5DarkCh/source/Console5DarkChProc.cpp62
-rwxr-xr-xplugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser34
-rwxr-xr-xplugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev340
-rwxr-xr-xplugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.cpp7
-rwxr-xr-xplugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.h7
-rwxr-xr-xplugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWearProc.cpp62
-rwxr-xr-xplugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev331
-rwxr-xr-xplugins/MacVST/Crystal/Crystal.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/Crystal/source/CrystalProc.cpp54
-rwxr-xr-xplugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev317
-rwxr-xr-xplugins/MacVST/DCVoltage/DCVoltage.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser34
-rwxr-xr-xplugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev342
-rwxr-xr-xplugins/MacVST/DeEss/source/DeEssProc.cpp54
-rwxr-xr-xplugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser71
-rwxr-xr-xplugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev334
-rwxr-xr-xplugins/MacVST/DeRez/source/DeRez.cpp7
-rwxr-xr-xplugins/MacVST/DeRez/source/DeRez.h7
-rwxr-xr-xplugins/MacVST/DeRez/source/DeRezProc.cpp62
-rwxr-xr-xplugins/MacVST/Density/Density.xcodeproj/christopherjohnson.pbxuser72
-rwxr-xr-xplugins/MacVST/Density/Density.xcodeproj/christopherjohnson.perspectivev347
-rwxr-xr-xplugins/MacVST/Density/Density.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/Density/source/Density.cpp7
-rwxr-xr-xplugins/MacVST/Density/source/Density.h9
-rwxr-xr-xplugins/MacVST/Density/source/DensityProc.cpp64
-rwxr-xr-xplugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.perspectivev317
-rwxr-xr-xplugins/MacVST/Desk/Desk.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/Desk/source/Desk.cpp7
-rwxr-xr-xplugins/MacVST/Desk/source/Desk.h7
-rwxr-xr-xplugins/MacVST/Desk/source/DeskProc.cpp62
-rwxr-xr-xplugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser4
-rwxr-xr-xplugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev39
-rwxr-xr-xplugins/MacVST/Desk4/source/Desk4.cpp7
-rwxr-xr-xplugins/MacVST/Desk4/source/Desk4.h7
-rwxr-xr-xplugins/MacVST/Desk4/source/Desk4Proc.cpp62
-rwxr-xr-xplugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.pbxuser60
-rwxr-xr-xplugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.perspectivev327
-rwxr-xr-xplugins/MacVST/Distance/source/Distance.cpp7
-rwxr-xr-xplugins/MacVST/Distance/source/Distance.h7
-rwxr-xr-xplugins/MacVST/Distance/source/DistanceProc.cpp62
-rwxr-xr-xplugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser41
-rwxr-xr-xplugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev332
-rwxr-xr-xplugins/MacVST/Distance2/source/Distance2Proc.cpp54
-rwxr-xr-xplugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser131
-rwxr-xr-xplugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev31508
-rwxr-xr-xplugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.pbxproj2201
-rwxr-xr-xplugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/contents.xcworkspacedata7
-rwxr-xr-xplugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstatebin0 -> 12075 bytes
-rwxr-xr-xplugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstatebin0 -> 10373 bytes
-rwxr-xr-xplugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.mode1v31372
-rwxr-xr-xplugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.pbxuser143
-rwxr-xr-xplugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme80
-rwxr-xr-xplugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist22
-rwxr-xr-xplugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist22
-rwxr-xr-xplugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme57
-rwxr-xr-xplugins/MacVST/DitherFloat/mac/Info.plist24
-rwxr-xr-xplugins/MacVST/DitherFloat/mac/PkgInfo1
-rwxr-xr-xplugins/MacVST/DitherFloat/mac/xcode_vst_prefix.h17
-rwxr-xr-xplugins/MacVST/DitherFloat/source/DitherFloat.cpp127
-rwxr-xr-xplugins/MacVST/DitherFloat/source/DitherFloat.h64
-rwxr-xr-xplugins/MacVST/DitherFloat/source/DitherFloatProc.cpp184
-rwxr-xr-xplugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser16
-rwxr-xr-xplugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser32
-rwxr-xr-xplugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser18
-rwxr-xr-xplugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser47
-rwxr-xr-xplugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev334
-rwxr-xr-xplugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.pbxuser77
-rwxr-xr-xplugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.perspectivev336
-rwxr-xr-xplugins/MacVST/Drive/source/Drive.cpp7
-rwxr-xr-xplugins/MacVST/Drive/source/Drive.h9
-rwxr-xr-xplugins/MacVST/Drive/source/DriveProc.cpp64
-rwxr-xr-xplugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser16
-rwxr-xr-xplugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev323
-rwxr-xr-xplugins/MacVST/DrumSlam/source/DrumSlam.cpp7
-rwxr-xr-xplugins/MacVST/DrumSlam/source/DrumSlam.h9
-rwxr-xr-xplugins/MacVST/DrumSlam/source/DrumSlamProc.cpp66
-rwxr-xr-xplugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser26
-rwxr-xr-xplugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev352
-rwxr-xr-xplugins/MacVST/DubCenter/source/DubCenterProc.cpp54
-rwxr-xr-xplugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser76
-rwxr-xr-xplugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev338
-rwxr-xr-xplugins/MacVST/DubSub/source/DubSubProc.cpp54
-rwxr-xr-xplugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser16
-rwxr-xr-xplugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.pbxuser27
-rwxr-xr-xplugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-xplugins/MacVST/EQ/source/EQ.cpp7
-rwxr-xr-xplugins/MacVST/EQ/source/EQ.h7
-rwxr-xr-xplugins/MacVST/EQ/source/EQProc.cpp62
-rwxr-xr-xplugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/EdIsDim/source/EdIsDim.cpp7
-rwxr-xr-xplugins/MacVST/EdIsDim/source/EdIsDim.h7
-rwxr-xr-xplugins/MacVST/EdIsDim/source/EdIsDimProc.cpp62
-rwxr-xr-xplugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser46
-rwxr-xr-xplugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev364
-rwxr-xr-xplugins/MacVST/ElectroHat/source/ElectroHat.cpp7
-rwxr-xr-xplugins/MacVST/ElectroHat/source/ElectroHat.h7
-rwxr-xr-xplugins/MacVST/ElectroHat/source/ElectroHatProc.cpp62
-rwxr-xr-xplugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.pbxuser28
-rwxr-xr-xplugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.perspectivev360
-rwxr-xr-xplugins/MacVST/Energy/Energy.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/Energy/source/EnergyProc.cpp54
-rwxr-xr-xplugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser37
-rwxr-xr-xplugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev337
-rwxr-xr-xplugins/MacVST/Ensemble/source/Ensemble.cpp7
-rwxr-xr-xplugins/MacVST/Ensemble/source/Ensemble.h9
-rwxr-xr-xplugins/MacVST/Ensemble/source/EnsembleProc.cpp66
-rwxr-xr-xplugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev317
-rwxr-xr-xplugins/MacVST/EveryTrim/EveryTrim.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/EveryTrim/source/EveryTrim.cpp7
-rwxr-xr-xplugins/MacVST/EveryTrim/source/EveryTrim.h7
-rwxr-xr-xplugins/MacVST/EveryTrim/source/EveryTrimProc.cpp62
-rwxr-xr-xplugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser16
-rwxr-xr-xplugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-xplugins/MacVST/FathomFive/source/FathomFive.cpp10
-rwxr-xr-xplugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.pbxuser16
-rwxr-xr-xplugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.perspectivev332
-rwxr-xr-xplugins/MacVST/Floor/source/FloorProc.cpp54
-rwxr-xr-xplugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser4
-rwxr-xr-xplugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev313
-rwxr-xr-xplugins/MacVST/Fracture/source/Fracture.cpp7
-rwxr-xr-xplugins/MacVST/Fracture/source/Fracture.h7
-rwxr-xr-xplugins/MacVST/Fracture/source/FractureProc.cpp62
-rwxr-xr-xplugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser34
-rwxr-xr-xplugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev352
-rwxr-xr-xplugins/MacVST/FromTape/FromTape.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/FromTape/source/FromTape.cpp7
-rwxr-xr-xplugins/MacVST/FromTape/source/FromTape.h7
-rwxr-xr-xplugins/MacVST/FromTape/source/FromTapeProc.cpp62
-rwxr-xr-xplugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser16
-rwxr-xr-xplugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev328
-rwxr-xr-xplugins/MacVST/Gatelope/source/GatelopeProc.cpp54
-rwxr-xr-xplugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.pbxuser40
-rwxr-xr-xplugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.perspectivev332
-rwxr-xr-xplugins/MacVST/Golem/source/Golem.cpp6
-rwxr-xr-xplugins/MacVST/Golem/source/Golem.h6
-rwxr-xr-xplugins/MacVST/Golem/source/GolemProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser26
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev318
-rwxr-xr-xplugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.pbxproj4
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/contents.xcworkspacedata0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstatebin12075 -> 12075 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstatebin10373 -> 10373 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.pbxuser0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme0
-rwxr-xr-xplugins/MacVST/GrooveWear/source/GrooveWear.cpp7
-rwxr-xr-xplugins/MacVST/GrooveWear/source/GrooveWear.h7
-rwxr-xr-xplugins/MacVST/GrooveWear/source/GrooveWearProc.cpp62
-rwxr-xr-xplugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser24
-rwxr-xr-xplugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev330
-rwxr-xr-xplugins/MacVST/GuitarConditioner/source/GuitarConditioner.cpp7
-rwxr-xr-xplugins/MacVST/GuitarConditioner/source/GuitarConditioner.h9
-rwxr-xr-xplugins/MacVST/GuitarConditioner/source/GuitarConditionerProc.cpp67
-rwxr-xr-xplugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser27
-rwxr-xr-xplugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev328
-rwxr-xr-xplugins/MacVST/HardVacuum/source/HardVacuum.cpp7
-rwxr-xr-xplugins/MacVST/HardVacuum/source/HardVacuum.h7
-rwxr-xr-xplugins/MacVST/HardVacuum/source/HardVacuumProc.cpp62
-rwxr-xr-xplugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser23
-rwxr-xr-xplugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev328
-rwxr-xr-xplugins/MacVST/HermeTrim/source/HermeTrim.cpp7
-rwxr-xr-xplugins/MacVST/HermeTrim/source/HermeTrim.h7
-rwxr-xr-xplugins/MacVST/HermeTrim/source/HermeTrimProc.cpp62
-rwxr-xr-xplugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser30
-rwxr-xr-xplugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev335
-rwxr-xr-xplugins/MacVST/Hermepass/source/Hermepass.cpp7
-rwxr-xr-xplugins/MacVST/Hermepass/source/Hermepass.h9
-rwxr-xr-xplugins/MacVST/Hermepass/source/HermepassProc.cpp66
-rwxr-xr-xplugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser4
-rwxr-xr-xplugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev39
-rwxr-xr-xplugins/MacVST/HighImpact/source/HighImpact.cpp7
-rwxr-xr-xplugins/MacVST/HighImpact/source/HighImpact.h7
-rwxr-xr-xplugins/MacVST/HighImpact/source/HighImpactProc.cpp62
-rwxr-xr-xplugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser30
-rwxr-xr-xplugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-xplugins/MacVST/Highpass/source/Highpass.cpp6
-rwxr-xr-xplugins/MacVST/Highpass/source/Highpass.h9
-rwxr-xr-xplugins/MacVST/Highpass/source/HighpassProc.cpp68
-rwxr-xr-xplugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev39
-rwxr-xr-xplugins/MacVST/Hombre/Hombre.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/Hombre/source/Hombre.cpp7
-rwxr-xr-xplugins/MacVST/Hombre/source/Hombre.h7
-rwxr-xr-xplugins/MacVST/Hombre/source/HombreProc.cpp62
-rwxr-xr-xplugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser18
-rwxr-xr-xplugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/IronOxide5/source/IronOxide5.cpp7
-rwxr-xr-xplugins/MacVST/IronOxide5/source/IronOxide5.h7
-rwxr-xr-xplugins/MacVST/IronOxide5/source/IronOxide5Proc.cpp62
-rwxr-xr-xplugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser20
-rwxr-xr-xplugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev325
-rwxr-xr-xplugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/IronOxideClassic/source/IronOxideClassic.cpp7
-rwxr-xr-xplugins/MacVST/IronOxideClassic/source/IronOxideClassic.h7
-rwxr-xr-xplugins/MacVST/IronOxideClassic/source/IronOxideClassicProc.cpp64
-rwxr-xr-xplugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser26
-rwxr-xr-xplugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev327
-rwxr-xr-xplugins/MacVST/Logical4/source/Logical4.cpp7
-rwxr-xr-xplugins/MacVST/Logical4/source/Logical4.h6
-rwxr-xr-xplugins/MacVST/Logical4/source/Logical4Proc.cpp68
-rwxr-xr-xplugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.perspectivev313
-rwxr-xr-xplugins/MacVST/Loud/source/Loud.cpp7
-rwxr-xr-xplugins/MacVST/Loud/source/Loud.h7
-rwxr-xr-xplugins/MacVST/Loud/source/LoudProc.cpp62
-rwxr-xr-xplugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser42
-rwxr-xr-xplugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev330
-rwxr-xr-xplugins/MacVST/Lowpass/source/Lowpass.cpp6
-rwxr-xr-xplugins/MacVST/Lowpass/source/Lowpass.h9
-rwxr-xr-xplugins/MacVST/Lowpass/source/LowpassProc.cpp68
-rwxr-xr-xplugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.pbxuser12
-rwxr-xr-xplugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/Melt/source/Melt.cpp7
-rwxr-xr-xplugins/MacVST/Melt/source/Melt.h7
-rwxr-xr-xplugins/MacVST/Melt/source/MeltProc.cpp62
-rwxr-xr-xplugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev313
-rwxr-xr-xplugins/MacVST/MidSide/source/MidSide.cpp7
-rwxr-xr-xplugins/MacVST/MidSide/source/MidSide.h7
-rwxr-xr-xplugins/MacVST/MidSide/source/MidSideProc.cpp62
-rwxr-xr-xplugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser48
-rwxr-xr-xplugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev364
-rwxr-xr-xplugins/MacVST/NCSeventeen/source/NCSeventeen.cpp7
-rwxr-xr-xplugins/MacVST/NCSeventeen/source/NCSeventeen.h7
-rwxr-xr-xplugins/MacVST/NCSeventeen/source/NCSeventeenProc.cpp62
-rwxr-xr-xplugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.pbxuser16
-rwxr-xr-xplugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.perspectivev320
-rwxr-xr-xplugins/MacVST/Noise/source/Noise.cpp7
-rwxr-xr-xplugins/MacVST/Noise/source/Noise.h7
-rwxr-xr-xplugins/MacVST/Noise/source/NoiseProc.cpp62
-rwxr-xr-xplugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev38
-rwxr-xr-xplugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/NonlinearSpace/source/NonlinearSpace.cpp7
-rwxr-xr-xplugins/MacVST/NonlinearSpace/source/NonlinearSpace.h7
-rwxr-xr-xplugins/MacVST/NonlinearSpace/source/NonlinearSpaceProc.cpp62
-rwxr-xr-xplugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser26
-rwxr-xr-xplugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev330
-rwxr-xr-xplugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev318
-rwxr-xr-xplugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/OneCornerClip/source/OneCornerClip.cpp7
-rwxr-xr-xplugins/MacVST/OneCornerClip/source/OneCornerClip.h7
-rwxr-xr-xplugins/MacVST/OneCornerClip/source/OneCornerClipProc.cpp62
-rwxr-xr-xplugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser20
-rwxr-xr-xplugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev326
-rwxr-xr-xplugins/MacVST/PDBuss/source/PDBuss.cpp7
-rwxr-xr-xplugins/MacVST/PDBuss/source/PDBuss.h7
-rwxr-xr-xplugins/MacVST/PDBuss/source/PDBussProc.cpp62
-rwxr-xr-xplugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser29
-rwxr-xr-xplugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev328
-rwxr-xr-xplugins/MacVST/PDChannel/source/PDChannel.cpp7
-rwxr-xr-xplugins/MacVST/PDChannel/source/PDChannel.h7
-rwxr-xr-xplugins/MacVST/PDChannel/source/PDChannelProc.cpp62
-rwxr-xr-xplugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser10
-rwxr-xr-xplugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev313
-rwxr-xr-xplugins/MacVST/PhaseNudge/source/PhaseNudge.cpp7
-rwxr-xr-xplugins/MacVST/PhaseNudge/source/PhaseNudge.h7
-rwxr-xr-xplugins/MacVST/PhaseNudge/source/PhaseNudgeProc.cpp62
-rwxr-xr-xplugins/MacVST/Point/Point.xcodeproj/christopherjohnson.pbxuser26
-rwxr-xr-xplugins/MacVST/Point/Point.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-xplugins/MacVST/Point/source/Point.cpp6
-rwxr-xr-xplugins/MacVST/Point/source/Point.h6
-rwxr-xr-xplugins/MacVST/Point/source/PointProc.cpp64
-rwxr-xr-xplugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.perspectivev311
-rwxr-xr-xplugins/MacVST/Pop/Pop.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/Pop/source/PopProc.cpp54
-rwxr-xr-xplugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser12
-rwxr-xr-xplugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/PowerSag/source/PowerSag.cpp7
-rwxr-xr-xplugins/MacVST/PowerSag/source/PowerSag.h7
-rwxr-xr-xplugins/MacVST/PowerSag/source/PowerSagProc.cpp62
-rwxr-xr-xplugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser26
-rwxr-xr-xplugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-xplugins/MacVST/Pressure4/source/Pressure4.cpp6
-rwxr-xr-xplugins/MacVST/Pressure4/source/Pressure4.h6
-rwxr-xr-xplugins/MacVST/Pressure4/source/Pressure4Proc.cpp66
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser23
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev329
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/contents.xcworkspacedata0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstatebin12075 -> 12075 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstatebin10373 -> 10373 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.pbxuser0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme0
-rwxr-xr-xplugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.cpp7
-rwxr-xr-xplugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.h7
-rwxr-xr-xplugins/MacVST/PurestConsoleBuss/source/PurestConsoleBussProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser48
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev376
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/contents.xcworkspacedata0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstatebin12075 -> 12075 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstatebin10373 -> 10373 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.pbxuser0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme0
-rwxr-xr-xplugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.cpp7
-rwxr-xr-xplugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.h7
-rwxr-xr-xplugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannelProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev310
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/contents.xcworkspacedata0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstatebin12075 -> 12075 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstatebin10373 -> 10373 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.pbxuser0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme0
-rwxr-xr-xplugins/MacVST/PurestDrive/source/PurestDrive.cpp7
-rwxr-xr-xplugins/MacVST/PurestDrive/source/PurestDrive.h7
-rwxr-xr-xplugins/MacVST/PurestDrive/source/PurestDriveProc.cpp62
-rwxr-xr-xplugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev317
-rwxr-xr-xplugins/MacVST/PurestEcho/PurestEcho.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/PurestEcho/source/PurestEcho.cpp7
-rwxr-xr-xplugins/MacVST/PurestEcho/source/PurestEcho.h7
-rwxr-xr-xplugins/MacVST/PurestEcho/source/PurestEchoProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser14
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev319
-rwxr-xr-xplugins/MacVST/PurestGain/PurestGain.xcodeproj/project.pbxproj4
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstatebin12075 -> 12075 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstatebin10373 -> 10373 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.pbxuser0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme0
-rwxr-xr-xplugins/MacVST/PurestGain/source/PurestGain.cpp7
-rwxr-xr-xplugins/MacVST/PurestGain/source/PurestGain.h7
-rwxr-xr-xplugins/MacVST/PurestGain/source/PurestGainProc.cpp92
-rwxr-xr-xplugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser24
-rwxr-xr-xplugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/PurestWarm/source/PurestWarm.cpp7
-rwxr-xr-xplugins/MacVST/PurestWarm/source/PurestWarm.h7
-rwxr-xr-xplugins/MacVST/PurestWarm/source/PurestWarmProc.cpp242
-rwxr-xr-xplugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser4
-rwxr-xr-xplugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev317
-rwxr-xr-xplugins/MacVST/Pyewacket/source/Pyewacket.cpp7
-rwxr-xr-xplugins/MacVST/Pyewacket/source/Pyewacket.h7
-rwxr-xr-xplugins/MacVST/Pyewacket/source/PyewacketProc.cpp62
-rwxr-xr-xplugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser14
-rwxr-xr-xplugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/Righteous4/source/Righteous4Proc.cpp56
-rwxr-xr-xplugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser24
-rwxr-xr-xplugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev315
-rwxr-xr-xplugins/MacVST/SideDull/SideDull.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/SideDull/source/SideDull.cpp6
-rwxr-xr-xplugins/MacVST/SideDull/source/SideDull.h6
-rwxr-xr-xplugins/MacVST/SideDull/source/SideDullProc.cpp66
-rwxr-xr-xplugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser24
-rwxr-xr-xplugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev323
-rwxr-xr-xplugins/MacVST/Sidepass/source/Sidepass.cpp6
-rwxr-xr-xplugins/MacVST/Sidepass/source/Sidepass.h6
-rwxr-xr-xplugins/MacVST/Sidepass/source/SidepassProc.cpp62
-rwxr-xr-xplugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser43
-rwxr-xr-xplugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev377
-rwxr-xr-xplugins/MacVST/SingleEndedTriode/source/SingleEndedTriodeProc.cpp54
-rwxr-xr-xplugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.pbxuser16
-rwxr-xr-xplugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser4
-rwxr-xr-xplugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev313
-rwxr-xr-xplugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev317
-rwxr-xr-xplugins/MacVST/SlewOnly/SlewOnly.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser20
-rwxr-xr-xplugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev333
-rwxr-xr-xplugins/MacVST/Spiral/source/SpiralProc.cpp54
-rwxr-xr-xplugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser43
-rwxr-xr-xplugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev338
-rwxr-xr-xplugins/MacVST/Spiral2/source/Spiral2Proc.cpp54
-rwxr-xr-xplugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser12
-rwxr-xr-xplugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/StarChild/source/StarChild.cpp7
-rwxr-xr-xplugins/MacVST/StarChild/source/StarChild.h7
-rwxr-xr-xplugins/MacVST/StarChild/source/StarChildProc.cpp62
-rwxr-xr-xplugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser16
-rwxr-xr-xplugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev324
-rwxr-xr-xplugins/MacVST/StereoFX/source/StereoFX.cpp6
-rwxr-xr-xplugins/MacVST/StereoFX/source/StereoFX.h6
-rwxr-xr-xplugins/MacVST/StereoFX/source/StereoFXProc.cpp62
-rwxr-xr-xplugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev317
-rwxr-xr-xplugins/MacVST/SubsOnly/SubsOnly.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.pbxuser20
-rwxr-xr-xplugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.perspectivev318
-rwxr-xr-xplugins/MacVST/Surge/Surge.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/Surge/source/Surge.cpp6
-rwxr-xr-xplugins/MacVST/Surge/source/Surge.h6
-rwxr-xr-xplugins/MacVST/Surge/source/SurgeProc.cpp66
-rwxr-xr-xplugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser22
-rwxr-xr-xplugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev330
-rwxr-xr-xplugins/MacVST/SurgeTide/source/SurgeTide.cpp6
-rwxr-xr-xplugins/MacVST/SurgeTide/source/SurgeTide.h6
-rwxr-xr-xplugins/MacVST/SurgeTide/source/SurgeTideProc.cpp66
-rwxr-xr-xplugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.perspectivev310
-rwxr-xr-xplugins/MacVST/Swell/Swell.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/Swell/source/Swell.cpp7
-rwxr-xr-xplugins/MacVST/Swell/source/Swell.h7
-rwxr-xr-xplugins/MacVST/Swell/source/SwellProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev30
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/contents.xcworkspacedata0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstatebin12075 -> 12075 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstatebin10373 -> 10373 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.pbxuser0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme0
-rwxr-xr-xplugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser16
-rwxr-xr-xplugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev328
-rwxr-xr-xplugins/MacVST/TapeDelay/source/TapeDelayProc.cpp54
-rwxr-xr-xplugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser32
-rwxr-xr-xplugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev330
-rwxr-xr-xplugins/MacVST/TapeDither/TapeDither.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser26
-rwxr-xr-xplugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev323
-rwxr-xr-xplugins/MacVST/TapeDust/TapeDust.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/TapeDust/source/TapeDust.cpp6
-rwxr-xr-xplugins/MacVST/TapeDust/source/TapeDust.h6
-rwxr-xr-xplugins/MacVST/TapeDust/source/TapeDustProc.cpp64
-rwxr-xr-xplugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev317
-rwxr-xr-xplugins/MacVST/TapeFat/TapeFat.xcodeproj/project.pbxproj4
-rwxr-xr-xplugins/MacVST/TapeFat/source/TapeFatProc.cpp54
-rwxr-xr-xplugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser35
-rwxr-xr-xplugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev330
-rwxr-xr-xplugins/MacVST/Thunder/source/Thunder.cpp6
-rwxr-xr-xplugins/MacVST/Thunder/source/Thunder.h6
-rwxr-xr-xplugins/MacVST/Thunder/source/ThunderProc.cpp66
-rwxr-xr-xplugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser34
-rwxr-xr-xplugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev328
-rwxr-xr-xplugins/MacVST/ToTape5/source/ToTape5.cpp7
-rwxr-xr-xplugins/MacVST/ToTape5/source/ToTape5.h7
-rwxr-xr-xplugins/MacVST/ToTape5/source/ToTape5Proc.cpp67
-rwxr-xr-xplugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser22
-rwxr-xr-xplugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev320
-rwxr-xr-xplugins/MacVST/ToVinyl4/source/ToVinyl4.cpp7
-rwxr-xr-xplugins/MacVST/ToVinyl4/source/ToVinyl4.h7
-rwxr-xr-xplugins/MacVST/ToVinyl4/source/ToVinyl4Proc.cpp62
-rwxr-xr-xplugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser12
-rwxr-xr-xplugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/ToneSlant/source/ToneSlant.cpp7
-rwxr-xr-xplugins/MacVST/ToneSlant/source/ToneSlant.h7
-rwxr-xr-xplugins/MacVST/ToneSlant/source/ToneSlantProc.cpp62
-rwxr-xr-xplugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser4
-rwxr-xr-xplugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev39
-rwxr-xr-xplugins/MacVST/TransDesk/source/TransDesk.cpp7
-rwxr-xr-xplugins/MacVST/TransDesk/source/TransDesk.h7
-rwxr-xr-xplugins/MacVST/TransDesk/source/TransDeskProc.cpp62
-rwxr-xr-xplugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev313
-rwxr-xr-xplugins/MacVST/Tremolo/source/Tremolo.cpp7
-rwxr-xr-xplugins/MacVST/Tremolo/source/Tremolo.h7
-rwxr-xr-xplugins/MacVST/Tremolo/source/TremoloProc.cpp62
-rwxr-xr-xplugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev321
-rwxr-xr-xplugins/MacVST/TubeDesk/source/TubeDesk.cpp7
-rwxr-xr-xplugins/MacVST/TubeDesk/source/TubeDesk.h7
-rwxr-xr-xplugins/MacVST/TubeDesk/source/TubeDeskProc.cpp62
-rwxr-xr-xplugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser27
-rwxr-xr-xplugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev328
-rwxr-xr-xplugins/MacVST/UnBox/source/UnBoxProc.cpp54
-rwxr-xr-xplugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-xplugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev316
-rwxr-xr-xplugins/MacVST/VariMu/source/VariMuProc.cpp54
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser8
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev310
-rwxr-xr-xplugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj4
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/contents.xcworkspacedata0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstatebin12075 -> 12075 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstatebin10373 -> 10373 bytes
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.mode1v30
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.pbxuser0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist0
-rwxr-xr-x[-rw-r--r--]plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme0
-rwxr-xr-xplugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.cpp7
-rwxr-xr-xplugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.h7
-rwxr-xr-xplugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarshipProc.cpp62
-rwxr-xr-xplugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.pbxuser30
-rwxr-xr-xplugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.perspectivev320
-rwxr-xr-xplugins/MacVST/Wider/source/Wider.cpp7
-rwxr-xr-xplugins/MacVST/Wider/source/Wider.h7
-rwxr-xr-xplugins/MacVST/Wider/source/WiderProc.cpp62
-rwxr-xr-xplugins/MacVST/uLawDecode/source/uLawDecodeProc.cpp54
-rwxr-xr-xplugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser4
-rwxr-xr-xplugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev317
-rwxr-xr-xplugins/MacVST/uLawEncode/source/uLawEncodeProc.cpp54
-rwxr-xr-xplugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser4
-rwxr-xr-xplugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev39
-rwxr-xr-xplugins/WinVST/ADClip7/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/ADClip7/ADClip7.cpp7
-rwxr-xr-xplugins/WinVST/ADClip7/ADClip7.h7
-rwxr-xr-xplugins/WinVST/ADClip7/ADClip7Proc.cpp64
-rwxr-xr-xplugins/WinVST/ADT/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/ADT/ADTProc.cpp54
-rwxr-xr-xplugins/WinVST/AQuickVoiceClip/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.cpp7
-rwxr-xr-xplugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.h7
-rwxr-xr-xplugins/WinVST/AQuickVoiceClip/AQuickVoiceClipProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/Acceleration/.vs/Console4Channel64/v14/.suobin32768 -> 32768 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/Acceleration/Acceleration.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/Acceleration/Acceleration.h7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/Acceleration/AccelerationProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/Acceleration/VSTProject.sln0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/Acceleration/VSTProject.vcxproj0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/Acceleration/VSTProject.vcxproj.filters0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/Acceleration/VSTProject.vcxproj.user0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/Acceleration/vstplug.def0
-rwxr-xr-xplugins/WinVST/Air/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Air/Air.cpp7
-rwxr-xr-xplugins/WinVST/Air/Air.h7
-rwxr-xr-xplugins/WinVST/Air/AirProc.cpp62
-rwxr-xr-xplugins/WinVST/AtmosphereBuss/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/AtmosphereBuss/AtmosphereBussProc.cpp56
-rwxr-xr-xplugins/WinVST/AtmosphereChannel/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/AtmosphereChannel/AtmosphereChannelProc.cpp56
-rwxr-xr-xplugins/WinVST/Aura/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Aura/Aura.cpp7
-rwxr-xr-xplugins/WinVST/Aura/Aura.h7
-rwxr-xr-xplugins/WinVST/Aura/AuraProc.cpp62
-rwxr-xr-xplugins/WinVST/Average/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Average/Average.cpp7
-rwxr-xr-xplugins/WinVST/Average/Average.h7
-rwxr-xr-xplugins/WinVST/Average/AverageProc.cpp66
-rwxr-xr-xplugins/WinVST/BassKit/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/BassKit/BassKitProc.cpp54
-rwxr-xr-xplugins/WinVST/BitGlitter/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/BitGlitter/BitGlitter.cpp3
-rwxr-xr-xplugins/WinVST/BitGlitter/BitGlitter.h3
-rwxr-xr-xplugins/WinVST/BitGlitter/BitGlitterProc.cpp19
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/BitShiftGain/.vs/Console4Channel64/v14/.suobin32768 -> 32768 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/BitShiftGain/BitShiftGain.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/BitShiftGain/BitShiftGain.h0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/BitShiftGain/BitShiftGainProc.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/BitShiftGain/VSTProject.sln0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/BitShiftGain/VSTProject.vcxproj0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/BitShiftGain/VSTProject.vcxproj.filters0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/BitShiftGain/VSTProject.vcxproj.user0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/BitShiftGain/vstplug.def0
-rwxr-xr-xplugins/WinVST/Bite/.vs/VSTProject/v14/.suobin23552 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Bite/Bite.cpp7
-rwxr-xr-xplugins/WinVST/Bite/Bite.h7
-rwxr-xr-xplugins/WinVST/Bite/BiteProc.cpp62
-rwxr-xr-xplugins/WinVST/BuildATPDF/.vs/VSTProject/v14/.suobin23040 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/BussColors4/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/BussColors4/BussColors4.cpp22
-rwxr-xr-xplugins/WinVST/BussColors4/BussColors4.h7
-rwxr-xr-xplugins/WinVST/BussColors4/BussColors4Proc.cpp62
-rwxr-xr-xplugins/WinVST/ButterComp/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/ButterComp/ButterComp.cpp7
-rwxr-xr-xplugins/WinVST/ButterComp/ButterComp.h7
-rwxr-xr-xplugins/WinVST/ButterComp/ButterCompProc.cpp62
-rwxr-xr-xplugins/WinVST/ButterComp2/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/ButterComp2/ButterComp2Proc.cpp54
-rwxr-xr-xplugins/WinVST/C5RawBuss/.vs/VSTProject/v14/.suobin25088 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/C5RawBuss/C5RawBuss.cpp7
-rwxr-xr-xplugins/WinVST/C5RawBuss/C5RawBuss.h7
-rwxr-xr-xplugins/WinVST/C5RawBuss/C5RawBussProc.cpp62
-rwxr-xr-xplugins/WinVST/C5RawChannel/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/C5RawChannel/C5RawChannel.cpp7
-rwxr-xr-xplugins/WinVST/C5RawChannel/C5RawChannel.h7
-rwxr-xr-xplugins/WinVST/C5RawChannel/C5RawChannelProc.cpp62
-rwxr-xr-xplugins/WinVST/CStrip/.vs/VSTProject/v14/.suobin24576 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/CStrip/CStrip.cpp7
-rwxr-xr-xplugins/WinVST/CStrip/CStrip.h7
-rwxr-xr-xplugins/WinVST/CStrip/CStripProc.cpp62
-rwxr-xr-xplugins/WinVST/Capacitor/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Capacitor/Capacitor.cpp7
-rwxr-xr-xplugins/WinVST/Capacitor/Capacitor.h7
-rwxr-xr-xplugins/WinVST/Capacitor/CapacitorProc.cpp62
-rwxr-xr-xplugins/WinVST/Channel6/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Channel6/Channel6Proc.cpp54
-rwxr-xr-xplugins/WinVST/Chorus/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Chorus/Chorus.cpp7
-rwxr-xr-xplugins/WinVST/Chorus/Chorus.h8
-rwxr-xr-xplugins/WinVST/Chorus/ChorusProc.cpp62
-rwxr-xr-xplugins/WinVST/ChorusEnsemble/.vs/VSTProject/v14/.suobin23040 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/ChorusEnsemble/ChorusEnsemble.cpp7
-rwxr-xr-xplugins/WinVST/ChorusEnsemble/ChorusEnsemble.h7
-rwxr-xr-xplugins/WinVST/ChorusEnsemble/ChorusEnsembleProc.cpp64
-rwxr-xr-xplugins/WinVST/ClipOnly/.vs/VSTProject/v14/.suobin23040 -> 24576 bytes
-rwxr-xr-xplugins/WinVST/Console4Buss/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Console4Buss/Console4Buss.cpp7
-rwxr-xr-xplugins/WinVST/Console4Buss/Console4Buss.h7
-rwxr-xr-xplugins/WinVST/Console4Buss/Console4BussProc.cpp63
-rwxr-xr-xplugins/WinVST/Console4Channel/.vs/VSTProject/v14/.suobin23040 -> 25088 bytes
-rwxr-xr-xplugins/WinVST/Console4Channel/Console4Channel.cpp7
-rwxr-xr-xplugins/WinVST/Console4Channel/Console4Channel.h7
-rwxr-xr-xplugins/WinVST/Console4Channel/Console4ChannelProc.cpp63
-rwxr-xr-xplugins/WinVST/Console5Buss/.vs/VSTProject/v14/.suobin23552 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Console5Buss/Console5Buss.cpp7
-rwxr-xr-xplugins/WinVST/Console5Buss/Console5Buss.h7
-rwxr-xr-xplugins/WinVST/Console5Buss/Console5BussProc.cpp62
-rwxr-xr-xplugins/WinVST/Console5Channel/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Console5Channel/Console5Channel.cpp7
-rwxr-xr-xplugins/WinVST/Console5Channel/Console5Channel.h7
-rwxr-xr-xplugins/WinVST/Console5Channel/Console5ChannelProc.cpp62
-rwxr-xr-xplugins/WinVST/Console5DarkCh/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Console5DarkCh/Console5DarkCh.cpp7
-rwxr-xr-xplugins/WinVST/Console5DarkCh/Console5DarkCh.h7
-rwxr-xr-xplugins/WinVST/Console5DarkCh/Console5DarkChProc.cpp62
-rwxr-xr-xplugins/WinVST/CrunchyGrooveWear/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.cpp7
-rwxr-xr-xplugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.h7
-rwxr-xr-xplugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp62
-rwxr-xr-xplugins/WinVST/Crystal/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Crystal/CrystalProc.cpp54
-rwxr-xr-xplugins/WinVST/DeEss/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/DeEss/DeEssProc.cpp54
-rwxr-xr-xplugins/WinVST/DeRez/.vs/VSTProject/v14/.suobin25088 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/DeRez/DeRez.cpp7
-rwxr-xr-xplugins/WinVST/DeRez/DeRez.h7
-rwxr-xr-xplugins/WinVST/DeRez/DeRezProc.cpp62
-rwxr-xr-xplugins/WinVST/Density/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Density/Density.cpp7
-rwxr-xr-xplugins/WinVST/Density/Density.h9
-rwxr-xr-xplugins/WinVST/Density/DensityProc.cpp64
-rwxr-xr-xplugins/WinVST/Desk/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Desk/Desk.cpp7
-rwxr-xr-xplugins/WinVST/Desk/Desk.h7
-rwxr-xr-xplugins/WinVST/Desk/DeskProc.cpp62
-rwxr-xr-xplugins/WinVST/Desk4/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Desk4/Desk4.cpp7
-rwxr-xr-xplugins/WinVST/Desk4/Desk4.h7
-rwxr-xr-xplugins/WinVST/Desk4/Desk4Proc.cpp62
-rwxr-xr-xplugins/WinVST/Distance/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Distance/Distance.cpp7
-rwxr-xr-xplugins/WinVST/Distance/Distance.h7
-rwxr-xr-xplugins/WinVST/Distance/DistanceProc.cpp62
-rwxr-xr-xplugins/WinVST/Distance2/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Distance2/Distance2Proc.cpp54
-rwxr-xr-xplugins/WinVST/DitherFloat/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/WinVST/DitherFloat/.vs/VSTProject/v14/.suobin0 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/DitherFloat/DitherFloat.cpp127
-rwxr-xr-xplugins/WinVST/DitherFloat/DitherFloat.h64
-rwxr-xr-xplugins/WinVST/DitherFloat/DitherFloatProc.cpp184
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/DitherFloat/VSTProject.sln (renamed from plugins/WinVST/GrooveWear/VSTProject.sln)0
-rwxr-xr-xplugins/WinVST/DitherFloat/VSTProject.vcxproj183
-rwxr-xr-xplugins/WinVST/DitherFloat/VSTProject.vcxproj.filters48
-rwxr-xr-xplugins/WinVST/DitherFloat/VSTProject.vcxproj.user19
-rwxr-xr-xplugins/WinVST/DitherFloat/vstplug.def3
-rwxr-xr-xplugins/WinVST/Drive/.vs/VSTProject/v14/.suobin22528 -> 24576 bytes
-rwxr-xr-xplugins/WinVST/Drive/Drive.cpp7
-rwxr-xr-xplugins/WinVST/Drive/Drive.h9
-rwxr-xr-xplugins/WinVST/Drive/DriveProc.cpp64
-rwxr-xr-xplugins/WinVST/DrumSlam/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/DrumSlam/DrumSlam.cpp7
-rwxr-xr-xplugins/WinVST/DrumSlam/DrumSlam.h9
-rwxr-xr-xplugins/WinVST/DrumSlam/DrumSlamProc.cpp66
-rwxr-xr-xplugins/WinVST/DubCenter/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/DubCenter/DubCenterProc.cpp54
-rwxr-xr-xplugins/WinVST/DubSub/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/DubSub/DubSubProc.cpp54
-rwxr-xr-xplugins/WinVST/DustBunny/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/EQ/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/EQ/EQ.cpp7
-rwxr-xr-xplugins/WinVST/EQ/EQ.h7
-rwxr-xr-xplugins/WinVST/EQ/EQProc.cpp62
-rwxr-xr-xplugins/WinVST/EdIsDim/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/EdIsDim/EdIsDim.cpp7
-rwxr-xr-xplugins/WinVST/EdIsDim/EdIsDim.h7
-rwxr-xr-xplugins/WinVST/EdIsDim/EdIsDimProc.cpp62
-rwxr-xr-xplugins/WinVST/ElectroHat/.vs/VSTProject/v14/.suobin24576 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/ElectroHat/ElectroHat.cpp7
-rwxr-xr-xplugins/WinVST/ElectroHat/ElectroHat.h7
-rwxr-xr-xplugins/WinVST/ElectroHat/ElectroHatProc.cpp62
-rwxr-xr-xplugins/WinVST/Energy/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Energy/EnergyProc.cpp54
-rwxr-xr-xplugins/WinVST/Ensemble/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Ensemble/Ensemble.cpp7
-rwxr-xr-xplugins/WinVST/Ensemble/Ensemble.h9
-rwxr-xr-xplugins/WinVST/Ensemble/EnsembleProc.cpp66
-rwxr-xr-xplugins/WinVST/EveryTrim/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/EveryTrim/EveryTrim.cpp7
-rwxr-xr-xplugins/WinVST/EveryTrim/EveryTrim.h7
-rwxr-xr-xplugins/WinVST/EveryTrim/EveryTrimProc.cpp62
-rwxr-xr-xplugins/WinVST/FathomFive/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/FathomFive/FathomFive.cpp10
-rwxr-xr-xplugins/WinVST/Floor/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Floor/FloorProc.cpp54
-rwxr-xr-xplugins/WinVST/Fracture/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Fracture/Fracture.cpp7
-rwxr-xr-xplugins/WinVST/Fracture/Fracture.h7
-rwxr-xr-xplugins/WinVST/Fracture/FractureProc.cpp62
-rwxr-xr-xplugins/WinVST/FromTape/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/FromTape/FromTape.cpp7
-rwxr-xr-xplugins/WinVST/FromTape/FromTape.h7
-rwxr-xr-xplugins/WinVST/FromTape/FromTapeProc.cpp62
-rwxr-xr-xplugins/WinVST/Gatelope/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Gatelope/GatelopeProc.cpp54
-rwxr-xr-xplugins/WinVST/Golem/.vs/VSTProject/v14/.suobin25600 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Golem/Golem.cpp6
-rwxr-xr-xplugins/WinVST/Golem/Golem.h6
-rwxr-xr-xplugins/WinVST/Golem/GolemProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/GrooveWear/.vs/Console4Channel64/v14/.suobin32768 -> 32768 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/GrooveWear/GrooveWear.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/GrooveWear/GrooveWear.h7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/GrooveWear/GrooveWearProc.cpp62
-rwxr-xr-xplugins/WinVST/GrooveWear/VSTProject.VC.dbbin0 -> 29614080 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/GrooveWear/VSTProject.vcxproj0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/GrooveWear/VSTProject.vcxproj.filters0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/GrooveWear/VSTProject.vcxproj.user0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/GrooveWear/vstplug.def0
-rwxr-xr-xplugins/WinVST/GuitarConditioner/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/GuitarConditioner/GuitarConditioner.cpp7
-rwxr-xr-xplugins/WinVST/GuitarConditioner/GuitarConditioner.h9
-rwxr-xr-xplugins/WinVST/GuitarConditioner/GuitarConditionerProc.cpp67
-rwxr-xr-xplugins/WinVST/HardVacuum/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/HardVacuum/HardVacuum.cpp7
-rwxr-xr-xplugins/WinVST/HardVacuum/HardVacuum.h7
-rwxr-xr-xplugins/WinVST/HardVacuum/HardVacuumProc.cpp62
-rwxr-xr-xplugins/WinVST/HermeTrim/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/HermeTrim/HermeTrim.cpp7
-rwxr-xr-xplugins/WinVST/HermeTrim/HermeTrim.h7
-rwxr-xr-xplugins/WinVST/HermeTrim/HermeTrimProc.cpp62
-rwxr-xr-xplugins/WinVST/Hermepass/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Hermepass/Hermepass.cpp7
-rwxr-xr-xplugins/WinVST/Hermepass/Hermepass.h9
-rwxr-xr-xplugins/WinVST/Hermepass/HermepassProc.cpp66
-rwxr-xr-xplugins/WinVST/HighImpact/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/HighImpact/HighImpact.cpp7
-rwxr-xr-xplugins/WinVST/HighImpact/HighImpact.h7
-rwxr-xr-xplugins/WinVST/HighImpact/HighImpactProc.cpp62
-rwxr-xr-xplugins/WinVST/Highpass/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Highpass/Highpass.cpp6
-rwxr-xr-xplugins/WinVST/Highpass/Highpass.h9
-rwxr-xr-xplugins/WinVST/Highpass/HighpassProc.cpp68
-rwxr-xr-xplugins/WinVST/Hombre/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Hombre/Hombre.cpp7
-rwxr-xr-xplugins/WinVST/Hombre/Hombre.h7
-rwxr-xr-xplugins/WinVST/Hombre/HombreProc.cpp62
-rwxr-xr-xplugins/WinVST/IronOxide5/.vs/VSTProject/v14/.suobin23040 -> 24576 bytes
-rwxr-xr-xplugins/WinVST/IronOxide5/IronOxide5.cpp7
-rwxr-xr-xplugins/WinVST/IronOxide5/IronOxide5.h7
-rwxr-xr-xplugins/WinVST/IronOxide5/IronOxide5Proc.cpp62
-rwxr-xr-xplugins/WinVST/IronOxideClassic/.vs/VSTProject/v14/.suobin23040 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/IronOxideClassic/IronOxideClassic.cpp7
-rwxr-xr-xplugins/WinVST/IronOxideClassic/IronOxideClassic.h7
-rwxr-xr-xplugins/WinVST/IronOxideClassic/IronOxideClassicProc.cpp64
-rwxr-xr-xplugins/WinVST/Logical4/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Logical4/Logical4.cpp7
-rwxr-xr-xplugins/WinVST/Logical4/Logical4.h6
-rwxr-xr-xplugins/WinVST/Logical4/Logical4Proc.cpp68
-rwxr-xr-xplugins/WinVST/Loud/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Loud/Loud.cpp7
-rwxr-xr-xplugins/WinVST/Loud/Loud.h7
-rwxr-xr-xplugins/WinVST/Loud/LoudProc.cpp62
-rwxr-xr-xplugins/WinVST/Lowpass/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Lowpass/Lowpass.cpp6
-rwxr-xr-xplugins/WinVST/Lowpass/Lowpass.h9
-rwxr-xr-xplugins/WinVST/Lowpass/LowpassProc.cpp68
-rwxr-xr-xplugins/WinVST/Melt/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Melt/Melt.cpp7
-rwxr-xr-xplugins/WinVST/Melt/Melt.h7
-rwxr-xr-xplugins/WinVST/Melt/MeltProc.cpp62
-rwxr-xr-xplugins/WinVST/MidSide/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/MidSide/MidSide.cpp7
-rwxr-xr-xplugins/WinVST/MidSide/MidSide.h7
-rwxr-xr-xplugins/WinVST/MidSide/MidSideProc.cpp62
-rwxr-xr-xplugins/WinVST/NC-17/.vs/Console4Channel64/v14/.suobin0 -> 32768 bytes
-rwxr-xr-xplugins/WinVST/NC-17/.vs/VSTProject/v14/.suobin0 -> 25088 bytes
-rwxr-xr-xplugins/WinVST/NC-17/NCSeventeen.cpp144
-rwxr-xr-xplugins/WinVST/NC-17/NCSeventeen.h81
-rwxr-xr-xplugins/WinVST/NC-17/NCSeventeenProc.cpp721
-rwxr-xr-xplugins/WinVST/NC-17/VSTProject.sln28
-rwxr-xr-xplugins/WinVST/NC-17/VSTProject.vcxproj183
-rwxr-xr-xplugins/WinVST/NC-17/VSTProject.vcxproj.filters48
-rwxr-xr-xplugins/WinVST/NC-17/VSTProject.vcxproj.user19
-rwxr-xr-xplugins/WinVST/NC-17/vstplug.def3
-rwxr-xr-xplugins/WinVST/Noise/.vs/VSTProject/v14/.suobin25088 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Noise/Noise.cpp7
-rwxr-xr-xplugins/WinVST/Noise/Noise.h7
-rwxr-xr-xplugins/WinVST/Noise/NoiseProc.cpp62
-rwxr-xr-xplugins/WinVST/NonlinearSpace/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/NonlinearSpace/NonlinearSpace.cpp7
-rwxr-xr-xplugins/WinVST/NonlinearSpace/NonlinearSpace.h7
-rwxr-xr-xplugins/WinVST/NonlinearSpace/NonlinearSpaceProc.cpp62
-rwxr-xr-xplugins/WinVST/OneCornerClip/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/OneCornerClip/OneCornerClip.cpp7
-rwxr-xr-xplugins/WinVST/OneCornerClip/OneCornerClip.h7
-rwxr-xr-xplugins/WinVST/OneCornerClip/OneCornerClipProc.cpp62
-rwxr-xr-xplugins/WinVST/PDBuss/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/PDBuss/PDBuss.cpp7
-rwxr-xr-xplugins/WinVST/PDBuss/PDBuss.h7
-rwxr-xr-xplugins/WinVST/PDBuss/PDBussProc.cpp62
-rwxr-xr-xplugins/WinVST/PDChannel/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/PDChannel/PDChannel.cpp7
-rwxr-xr-xplugins/WinVST/PDChannel/PDChannel.h7
-rwxr-xr-xplugins/WinVST/PDChannel/PDChannelProc.cpp62
-rwxr-xr-xplugins/WinVST/PhaseNudge/.vs/VSTProject/v14/.suobin23040 -> 24576 bytes
-rwxr-xr-xplugins/WinVST/PhaseNudge/PhaseNudge.cpp7
-rwxr-xr-xplugins/WinVST/PhaseNudge/PhaseNudge.h7
-rwxr-xr-xplugins/WinVST/PhaseNudge/PhaseNudgeProc.cpp62
-rwxr-xr-xplugins/WinVST/Point/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Point/Point.cpp6
-rwxr-xr-xplugins/WinVST/Point/Point.h6
-rwxr-xr-xplugins/WinVST/Point/PointProc.cpp64
-rwxr-xr-xplugins/WinVST/Pop/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Pop/PopProc.cpp54
-rwxr-xr-xplugins/WinVST/PowerSag/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/PowerSag/PowerSag.cpp7
-rwxr-xr-xplugins/WinVST/PowerSag/PowerSag.h7
-rwxr-xr-xplugins/WinVST/PowerSag/PowerSagProc.cpp62
-rwxr-xr-xplugins/WinVST/Pressure4/.vs/VSTProject/v14/.suobin23040 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Pressure4/Pressure4.cpp6
-rwxr-xr-xplugins/WinVST/Pressure4/Pressure4.h6
-rwxr-xr-xplugins/WinVST/Pressure4/Pressure4Proc.cpp66
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleBuss/.vs/Console4Channel64/v14/.suobin32768 -> 32768 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suobin23040 -> 25088 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.h7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleBuss/PurestConsoleBussProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleBuss/VSTProject.sln0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.filters0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.user0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleBuss/vstplug.def0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleChannel/.vs/Console4Channel64/v14/.suobin32768 -> 32768 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.h7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleChannel/PurestConsoleChannelProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleChannel/VSTProject.sln0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.filters0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.user0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestConsoleChannel/vstplug.def0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestDrive/.vs/Console4Channel64/v14/.suobin32768 -> 32768 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestDrive/PurestDrive.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestDrive/PurestDrive.h7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestDrive/PurestDriveProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestDrive/VSTProject.sln0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestDrive/VSTProject.vcxproj0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestDrive/VSTProject.vcxproj.filters0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestDrive/VSTProject.vcxproj.user0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestDrive/vstplug.def0
-rwxr-xr-xplugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/PurestEcho/PurestEcho.cpp7
-rwxr-xr-xplugins/WinVST/PurestEcho/PurestEcho.h7
-rwxr-xr-xplugins/WinVST/PurestEcho/PurestEchoProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestGain/.vs/Console4Channel64/v14/.suobin32768 -> 32768 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suobin23040 -> 22528 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestGain/PurestGain.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestGain/PurestGain.h7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestGain/PurestGainProc.cpp92
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestGain/VSTProject.sln0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestGain/VSTProject.vcxproj0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestGain/VSTProject.vcxproj.filters0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestGain/VSTProject.vcxproj.user0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/PurestGain/vstplug.def0
-rwxr-xr-xplugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/PurestWarm/PurestWarm.cpp7
-rwxr-xr-xplugins/WinVST/PurestWarm/PurestWarm.h7
-rwxr-xr-xplugins/WinVST/PurestWarm/PurestWarmProc.cpp242
-rwxr-xr-xplugins/WinVST/Pyewacket/.vs/VSTProject/v14/.suobin23040 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Pyewacket/Pyewacket.cpp7
-rwxr-xr-xplugins/WinVST/Pyewacket/Pyewacket.h7
-rwxr-xr-xplugins/WinVST/Pyewacket/PyewacketProc.cpp62
-rwxr-xr-xplugins/WinVST/Righteous4/.vs/VSTProject/v14/.suobin24576 -> 24576 bytes
-rwxr-xr-xplugins/WinVST/Righteous4/Righteous4Proc.cpp56
-rwxr-xr-xplugins/WinVST/SideDull/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/SideDull/SideDull.cpp6
-rwxr-xr-xplugins/WinVST/SideDull/SideDull.h6
-rwxr-xr-xplugins/WinVST/SideDull/SideDullProc.cpp66
-rwxr-xr-xplugins/WinVST/Sidepass/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Sidepass/Sidepass.cpp6
-rwxr-xr-xplugins/WinVST/Sidepass/Sidepass.h6
-rwxr-xr-xplugins/WinVST/Sidepass/SidepassProc.cpp62
-rwxr-xr-xplugins/WinVST/SingleEndedTriode/.vs/VSTProject/v14/.suobin25600 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/SingleEndedTriode/SingleEndedTriodeProc.cpp54
-rwxr-xr-xplugins/WinVST/Slew/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Slew2/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Spiral/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Spiral/SpiralProc.cpp54
-rwxr-xr-xplugins/WinVST/Spiral2/.vs/VSTProject/v14/.suobin22528 -> 24576 bytes
-rwxr-xr-xplugins/WinVST/Spiral2/Spiral2Proc.cpp54
-rwxr-xr-xplugins/WinVST/StarChild/.vs/VSTProject/v14/.suobin23040 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/StarChild/StarChild.cpp7
-rwxr-xr-xplugins/WinVST/StarChild/StarChild.h7
-rwxr-xr-xplugins/WinVST/StarChild/StarChildProc.cpp62
-rwxr-xr-xplugins/WinVST/StereoFX/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/StereoFX/StereoFX.cpp6
-rwxr-xr-xplugins/WinVST/StereoFX/StereoFX.h6
-rwxr-xr-xplugins/WinVST/StereoFX/StereoFXProc.cpp62
-rwxr-xr-xplugins/WinVST/SubsOnly/.vs/VSTProject/v14/.suobin23040 -> 25088 bytes
-rwxr-xr-xplugins/WinVST/Surge/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Surge/Surge.cpp6
-rwxr-xr-xplugins/WinVST/Surge/Surge.h6
-rwxr-xr-xplugins/WinVST/Surge/SurgeProc.cpp66
-rwxr-xr-xplugins/WinVST/SurgeTide/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/SurgeTide/SurgeTide.cpp6
-rwxr-xr-xplugins/WinVST/SurgeTide/SurgeTide.h6
-rwxr-xr-xplugins/WinVST/SurgeTide/SurgeTideProc.cpp66
-rwxr-xr-xplugins/WinVST/Swell/.vs/VSTProject/v14/.suobin24576 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Swell/Swell.cpp7
-rwxr-xr-xplugins/WinVST/Swell/Swell.h7
-rwxr-xr-xplugins/WinVST/Swell/SwellProc.cpp62
-rwxr-xr-xplugins/WinVST/TapeDelay/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/TapeDelay/TapeDelayProc.cpp54
-rwxr-xr-xplugins/WinVST/TapeDust/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/TapeDust/TapeDust.cpp6
-rwxr-xr-xplugins/WinVST/TapeDust/TapeDust.h6
-rwxr-xr-xplugins/WinVST/TapeDust/TapeDustProc.cpp64
-rwxr-xr-xplugins/WinVST/TapeFat/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/TapeFat/TapeFatProc.cpp54
-rwxr-xr-xplugins/WinVST/Thunder/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Thunder/Thunder.cpp6
-rwxr-xr-xplugins/WinVST/Thunder/Thunder.h6
-rwxr-xr-xplugins/WinVST/Thunder/ThunderProc.cpp66
-rwxr-xr-xplugins/WinVST/ToTape5/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/ToTape5/ToTape5.cpp7
-rwxr-xr-xplugins/WinVST/ToTape5/ToTape5.h7
-rwxr-xr-xplugins/WinVST/ToTape5/ToTape5Proc.cpp67
-rwxr-xr-xplugins/WinVST/ToVinyl4/.vs/VSTProject/v14/.suobin23040 -> 25088 bytes
-rwxr-xr-xplugins/WinVST/ToVinyl4/ToVinyl4.cpp7
-rwxr-xr-xplugins/WinVST/ToVinyl4/ToVinyl4.h7
-rwxr-xr-xplugins/WinVST/ToVinyl4/ToVinyl4Proc.cpp62
-rwxr-xr-xplugins/WinVST/ToneSlant/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/ToneSlant/ToneSlant.cpp7
-rwxr-xr-xplugins/WinVST/ToneSlant/ToneSlant.h7
-rwxr-xr-xplugins/WinVST/ToneSlant/ToneSlantProc.cpp62
-rwxr-xr-xplugins/WinVST/TransDesk/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/TransDesk/TransDesk.cpp7
-rwxr-xr-xplugins/WinVST/TransDesk/TransDesk.h7
-rwxr-xr-xplugins/WinVST/TransDesk/TransDeskProc.cpp62
-rwxr-xr-xplugins/WinVST/Tremolo/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Tremolo/Tremolo.cpp7
-rwxr-xr-xplugins/WinVST/Tremolo/Tremolo.h7
-rwxr-xr-xplugins/WinVST/Tremolo/TremoloProc.cpp62
-rwxr-xr-xplugins/WinVST/TubeDesk/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/TubeDesk/TubeDesk.cpp7
-rwxr-xr-xplugins/WinVST/TubeDesk/TubeDesk.h7
-rwxr-xr-xplugins/WinVST/TubeDesk/TubeDeskProc.cpp62
-rwxr-xr-xplugins/WinVST/UnBox/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/UnBox/UnBoxProc.cpp54
-rwxr-xr-xplugins/WinVST/VariMu/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/VariMu/VariMuProc.cpp54
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suobin32768 -> 32768 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suobin23040 -> 23040 bytes
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/VoiceOfTheStarship/VSTProject.sln0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.filters0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.user0
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.cpp7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.h7
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp62
-rwxr-xr-x[-rw-r--r--]plugins/WinVST/VoiceOfTheStarship/vstplug.def0
-rwxr-xr-xplugins/WinVST/Wider/.vs/VSTProject/v14/.suobin22528 -> 22528 bytes
-rwxr-xr-xplugins/WinVST/Wider/Wider.cpp7
-rwxr-xr-xplugins/WinVST/Wider/Wider.h7
-rwxr-xr-xplugins/WinVST/Wider/WiderProc.cpp62
-rwxr-xr-xplugins/WinVST/uLawDecode/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/uLawDecode/uLawDecodeProc.cpp54
-rwxr-xr-xplugins/WinVST/uLawEncode/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/uLawEncode/uLawEncodeProc.cpp54
2090 files changed, 30102 insertions, 29018 deletions
diff --git a/plugins/LinuxVST/src/ADClip7/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/ADClip7/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/ADClip7/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/ADClip7/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/ADClip7/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..41b2402
--- /dev/null
+++ b/plugins/LinuxVST/src/ADClip7/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/ADClip7/ADClip7.cpp b/plugins/LinuxVST/src/ADClip7/ADClip7.cpp
index fb6d6c6..7ebc817 100755
--- a/plugins/LinuxVST/src/ADClip7/ADClip7.cpp
+++ b/plugins/LinuxVST/src/ADClip7/ADClip7.cpp
@@ -30,11 +30,8 @@ ADClip7::ADClip7(audioMasterCallback audioMaster) :
iirLowsBL = 0.0;
iirLowsBR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/ADClip7/ADClip7.h b/plugins/LinuxVST/src/ADClip7/ADClip7.h
index f20d3fb..f0cde6c 100755
--- a/plugins/LinuxVST/src/ADClip7/ADClip7.h
+++ b/plugins/LinuxVST/src/ADClip7/ADClip7.h
@@ -55,11 +55,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
long double lastSampleL;
long double lastSampleR;
diff --git a/plugins/LinuxVST/src/ADClip7/ADClip7Proc.cpp b/plugins/LinuxVST/src/ADClip7/ADClip7Proc.cpp
index 2705d61..abc9909 100755
--- a/plugins/LinuxVST/src/ADClip7/ADClip7Proc.cpp
+++ b/plugins/LinuxVST/src/ADClip7/ADClip7Proc.cpp
@@ -17,10 +17,8 @@ void ADClip7::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ long double fpNew = 1.0 - fpOld;
double inputGain = pow(10.0,(A*18.0)/20.0);
double softness = B * fpNew;
double hardness = 1.0 - softness;
@@ -449,25 +447,14 @@ void ADClip7::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
if (inputSampleR < -refclipR) inputSampleR = -refclipR;
//final iron bar
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -489,10 +476,8 @@ void ADClip7::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ long double fpNew = 1.0 - fpOld;
double inputGain = pow(10.0,(A*18.0)/20.0);
double softness = B * fpNew;
double hardness = 1.0 - softness;
@@ -922,25 +907,16 @@ void ADClip7::processDoubleReplacing(double **inputs, double **outputs, VstInt32
if (inputSampleR < -refclipR) inputSampleR = -refclipR;
//final iron bar
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/ADT/ADTProc.cpp b/plugins/LinuxVST/src/ADT/ADTProc.cpp
index f963f2f..74d23dd 100755
--- a/plugins/LinuxVST/src/ADT/ADTProc.cpp
+++ b/plugins/LinuxVST/src/ADT/ADTProc.cpp
@@ -156,18 +156,14 @@ void ADT::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
if (output < 1.0) {inputSampleL *= output; inputSampleR *= output;}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -177,12 +173,6 @@ void ADT::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -334,18 +324,16 @@ void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
if (output < 1.0) {inputSampleL *= output; inputSampleR *= output;}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -355,10 +343,4 @@ void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/AQuickVoiceClip/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/AQuickVoiceClip/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/AQuickVoiceClip/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/AQuickVoiceClip/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/AQuickVoiceClip/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..42a754f
--- /dev/null
+++ b/plugins/LinuxVST/src/AQuickVoiceClip/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.cpp b/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.cpp
index 9b5ea81..9b84221 100755
--- a/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.cpp
+++ b/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.cpp
@@ -57,11 +57,8 @@ AQuickVoiceClip::AQuickVoiceClip(audioMasterCallback audioMaster) :
ataK4 = 0.886; //remainder of interpolated dry, adds up to 1.0
ataK5 = 0.431; //subtract this much prev. diff sample, brightens. 0.431 becomes flat
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.h b/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.h
index dc8f5fa..40cfab2 100755
--- a/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.h
+++ b/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.h
@@ -115,11 +115,8 @@ private:
double RiirSampleD;
bool flip;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClipProc.cpp b/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClipProc.cpp
index 69dc283..cc282b6 100755
--- a/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClipProc.cpp
+++ b/plugins/LinuxVST/src/AQuickVoiceClip/AQuickVoiceClipProc.cpp
@@ -41,9 +41,6 @@ void AQuickVoiceClip::processReplacing(float **inputs, float **outputs, VstInt32
double RoutputSample;
double RdrySample;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -410,25 +407,14 @@ void AQuickVoiceClip::processReplacing(float **inputs, float **outputs, VstInt32
if (LlpDepth < 0.0) LlpDepth = 0.0;
if (RlpDepth < 0.0) RlpDepth = 0.0;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
inputSampleL *= (1.0-LmaxRecent);
inputSampleR *= (1.0-RmaxRecent);
@@ -487,9 +473,6 @@ void AQuickVoiceClip::processDoubleReplacing(double **inputs, double **outputs,
double RoutputSample;
double RdrySample;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -856,25 +839,16 @@ void AQuickVoiceClip::processDoubleReplacing(double **inputs, double **outputs,
if (LlpDepth < 0.0) LlpDepth = 0.0;
if (RlpDepth < 0.0) RlpDepth = 0.0;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
inputSampleL *= (1.0-LmaxRecent);
inputSampleR *= (1.0-RmaxRecent);
diff --git a/plugins/LinuxVST/src/Acceleration/Acceleration.cpp b/plugins/LinuxVST/src/Acceleration/Acceleration.cpp
index f20c8f2..b2721d9 100644..100755
--- a/plugins/LinuxVST/src/Acceleration/Acceleration.cpp
+++ b/plugins/LinuxVST/src/Acceleration/Acceleration.cpp
@@ -23,11 +23,8 @@ Acceleration::Acceleration(audioMasterCallback audioMaster) :
o1R = o2R = o3R = 0.0;
m1R = m2R = desR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Acceleration/Acceleration.h b/plugins/LinuxVST/src/Acceleration/Acceleration.h
index a152e25..02a3760 100644..100755
--- a/plugins/LinuxVST/src/Acceleration/Acceleration.h
+++ b/plugins/LinuxVST/src/Acceleration/Acceleration.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double ataLastOutL;
double s1L;
diff --git a/plugins/LinuxVST/src/Acceleration/AccelerationProc.cpp b/plugins/LinuxVST/src/Acceleration/AccelerationProc.cpp
index 4785e37..0151dbe 100644..100755
--- a/plugins/LinuxVST/src/Acceleration/AccelerationProc.cpp
+++ b/plugins/LinuxVST/src/Acceleration/AccelerationProc.cpp
@@ -17,9 +17,6 @@ void Acceleration::processReplacing(float **inputs, float **outputs, VstInt32 sa
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = pow(A,3)*(32/overallscale);
double wet = B;
@@ -135,25 +132,14 @@ void Acceleration::processReplacing(float **inputs, float **outputs, VstInt32 sa
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -175,9 +161,6 @@ void Acceleration::processDoubleReplacing(double **inputs, double **outputs, Vst
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = pow(A,3)*(32/overallscale);
double wet = B;
@@ -293,25 +276,16 @@ void Acceleration::processDoubleReplacing(double **inputs, double **outputs, Vst
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Air/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Air/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Air/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Air/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Air/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..5e12ea1
--- /dev/null
+++ b/plugins/LinuxVST/src/Air/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Air/Air.cpp b/plugins/LinuxVST/src/Air/Air.cpp
index ebe8adc..ea52c26 100755
--- a/plugins/LinuxVST/src/Air/Air.cpp
+++ b/plugins/LinuxVST/src/Air/Air.cpp
@@ -61,11 +61,8 @@ Air::Air(audioMasterCallback audioMaster) :
D = 0.0;
E = 1.0;
F = 1.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Air/Air.h b/plugins/LinuxVST/src/Air/Air.h
index 00c0b76..a713cf2 100755
--- a/plugins/LinuxVST/src/Air/Air.h
+++ b/plugins/LinuxVST/src/Air/Air.h
@@ -100,11 +100,8 @@ private:
bool flop;
int count;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Air/AirProc.cpp b/plugins/LinuxVST/src/Air/AirProc.cpp
index f73e7d8..f5eb39f 100755
--- a/plugins/LinuxVST/src/Air/AirProc.cpp
+++ b/plugins/LinuxVST/src/Air/AirProc.cpp
@@ -22,9 +22,6 @@ void Air::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
double wet = F;
double dry = 1.0-wet;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -260,25 +257,14 @@ void Air::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -305,9 +291,6 @@ void Air::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
double wet = F;
double dry = 1.0-wet;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -543,25 +526,16 @@ void Air::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/AtmosphereBuss/AtmosphereBussProc.cpp b/plugins/LinuxVST/src/AtmosphereBuss/AtmosphereBussProc.cpp
index 6530a7e..16d7a31 100755
--- a/plugins/LinuxVST/src/AtmosphereBuss/AtmosphereBussProc.cpp
+++ b/plugins/LinuxVST/src/AtmosphereBuss/AtmosphereBussProc.cpp
@@ -13,7 +13,6 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
@@ -250,18 +249,14 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32
lastSampleAR = drySampleR;
//store the raw R input sample again for use next time
- //noise shaping to 32-bit floating point
- fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -271,12 +266,6 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -285,7 +274,6 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
@@ -522,18 +510,16 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V
lastSampleAR = drySampleR;
//store the raw R input sample again for use next time
- //noise shaping to 64-bit floating point
- fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -543,10 +529,4 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
} \ No newline at end of file
diff --git a/plugins/LinuxVST/src/AtmosphereChannel/AtmosphereChannelProc.cpp b/plugins/LinuxVST/src/AtmosphereChannel/AtmosphereChannelProc.cpp
index 97038e8..bbdf44c 100755
--- a/plugins/LinuxVST/src/AtmosphereChannel/AtmosphereChannelProc.cpp
+++ b/plugins/LinuxVST/src/AtmosphereChannel/AtmosphereChannelProc.cpp
@@ -13,7 +13,6 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
@@ -245,18 +244,14 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt
lastSampleAR = drySampleR;
//store the raw R input sample again for use next time
- //noise shaping to 32-bit floating point
- fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -266,12 +261,6 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -280,7 +269,6 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
@@ -512,18 +500,16 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs
lastSampleAR = drySampleR;
//store the raw R input sample again for use next time
- //noise shaping to 64-bit floating point
- fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -533,10 +519,4 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
} \ No newline at end of file
diff --git a/plugins/LinuxVST/src/Aura/Aura.cpp b/plugins/LinuxVST/src/Aura/Aura.cpp
index d011564..8663d3b 100755
--- a/plugins/LinuxVST/src/Aura/Aura.cpp
+++ b/plugins/LinuxVST/src/Aura/Aura.cpp
@@ -24,11 +24,8 @@ Aura::Aura(audioMasterCallback audioMaster) :
lastSampleR = 0.0;
previousVelocityR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Aura/Aura.h b/plugins/LinuxVST/src/Aura/Aura.h
index 557169d..22d4653 100755
--- a/plugins/LinuxVST/src/Aura/Aura.h
+++ b/plugins/LinuxVST/src/Aura/Aura.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
long double lastSampleL;
double previousVelocityL;
diff --git a/plugins/LinuxVST/src/Aura/AuraProc.cpp b/plugins/LinuxVST/src/Aura/AuraProc.cpp
index daf54d6..089a873 100755
--- a/plugins/LinuxVST/src/Aura/AuraProc.cpp
+++ b/plugins/LinuxVST/src/Aura/AuraProc.cpp
@@ -14,9 +14,6 @@ void Aura::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double correctionL;
double correctionR;
@@ -211,25 +208,14 @@ void Aura::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -248,9 +234,6 @@ void Aura::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double correctionL;
double correctionR;
@@ -445,25 +428,16 @@ void Aura::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Average/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Average/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Average/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Average/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Average/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..24b500e
--- /dev/null
+++ b/plugins/LinuxVST/src/Average/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Average/Average.cpp b/plugins/LinuxVST/src/Average/Average.cpp
index 945c76c..2f39ca1 100755
--- a/plugins/LinuxVST/src/Average/Average.cpp
+++ b/plugins/LinuxVST/src/Average/Average.cpp
@@ -17,11 +17,8 @@ Average::Average(audioMasterCallback audioMaster) :
for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;}
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Average/Average.h b/plugins/LinuxVST/src/Average/Average.h
index 7e4b25e..9932e99 100755
--- a/plugins/LinuxVST/src/Average/Average.h
+++ b/plugins/LinuxVST/src/Average/Average.h
@@ -57,11 +57,8 @@ private:
double f[11];
double bR[11];
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Average/AverageProc.cpp b/plugins/LinuxVST/src/Average/AverageProc.cpp
index 2b1c355..17f4783 100755
--- a/plugins/LinuxVST/src/Average/AverageProc.cpp
+++ b/plugins/LinuxVST/src/Average/AverageProc.cpp
@@ -14,9 +14,6 @@ void Average::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double correctionSample;
double accumulatorSampleL;
@@ -154,25 +151,14 @@ void Average::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
//in the floating point system.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -189,12 +175,7 @@ void Average::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double* in1 = inputs[0];
double* in2 = inputs[1];
double* out1 = outputs[0];
- double* out2 = outputs[1];
-
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ double* out2 = outputs[1];
double correctionSample;
double accumulatorSampleL;
double accumulatorSampleR;
@@ -330,25 +311,16 @@ void Average::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//if it 'won't change anything' but our sample might be at a very different scaling
//in the floating point system.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/BassKit/BassKitProc.cpp b/plugins/LinuxVST/src/BassKit/BassKitProc.cpp
index df3310e..9199c82 100755
--- a/plugins/LinuxVST/src/BassKit/BassKitProc.cpp
+++ b/plugins/LinuxVST/src/BassKit/BassKitProc.cpp
@@ -204,18 +204,14 @@ void BassKit::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -225,12 +221,6 @@ void BassKit::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -430,18 +420,16 @@ void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -451,10 +439,4 @@ void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/BitGlitter/BitGlitter.cpp b/plugins/LinuxVST/src/BitGlitter/BitGlitter.cpp
index 7e9cfdb..a1e1a9b 100755
--- a/plugins/LinuxVST/src/BitGlitter/BitGlitter.cpp
+++ b/plugins/LinuxVST/src/BitGlitter/BitGlitter.cpp
@@ -17,6 +17,9 @@ BitGlitter::BitGlitter(audioMasterCallback audioMaster) :
C = 0.5;
D = 1.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+
ataLastSampleL = 0.0;
ataHalfwaySampleL = 0.0;
lastSampleL = 0.0;
diff --git a/plugins/LinuxVST/src/BitGlitter/BitGlitter.h b/plugins/LinuxVST/src/BitGlitter/BitGlitter.h
index d87e277..4f108cd 100755
--- a/plugins/LinuxVST/src/BitGlitter/BitGlitter.h
+++ b/plugins/LinuxVST/src/BitGlitter/BitGlitter.h
@@ -55,6 +55,9 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
+ long double fpNShapeL;
+ long double fpNShapeR;
+
double ataLastSampleL;
double ataHalfwaySampleL;
double ataDrySampleL;
diff --git a/plugins/LinuxVST/src/BitGlitter/BitGlitterProc.cpp b/plugins/LinuxVST/src/BitGlitter/BitGlitterProc.cpp
index 321d0b6..ff2968c 100755
--- a/plugins/LinuxVST/src/BitGlitter/BitGlitterProc.cpp
+++ b/plugins/LinuxVST/src/BitGlitter/BitGlitterProc.cpp
@@ -202,6 +202,14 @@ void BitGlitter::processReplacing(float **inputs, float **outputs, VstInt32 samp
outputSampleL = (drySampleL * (1.0-wet)) + (outputSampleL * wet);
outputSampleR = (drySampleR * (1.0-wet)) + (outputSampleR * wet);
}
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)outputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ outputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)outputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ outputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
@@ -408,6 +416,17 @@ void BitGlitter::processDoubleReplacing(double **inputs, double **outputs, VstIn
outputSampleR = (drySampleR * (1.0-wet)) + (outputSampleR * wet);
}
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)outputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ outputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)outputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ outputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
+
*out1 = outputSampleL;
*out2 = outputSampleR;
diff --git a/plugins/LinuxVST/src/Bite/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Bite/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Bite/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Bite/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Bite/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..a8fee43
--- /dev/null
+++ b/plugins/LinuxVST/src/Bite/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Bite/Bite.cpp b/plugins/LinuxVST/src/Bite/Bite.cpp
index b563f54..c9d0fcb 100755
--- a/plugins/LinuxVST/src/Bite/Bite.cpp
+++ b/plugins/LinuxVST/src/Bite/Bite.cpp
@@ -34,11 +34,8 @@ Bite::Bite(audioMasterCallback audioMaster) :
sampleHR = 0.0;
sampleIR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Bite/Bite.h b/plugins/LinuxVST/src/Bite/Bite.h
index d6f9e44..288ac7f 100755
--- a/plugins/LinuxVST/src/Bite/Bite.h
+++ b/plugins/LinuxVST/src/Bite/Bite.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double sampleAL;
double sampleBL;
diff --git a/plugins/LinuxVST/src/Bite/BiteProc.cpp b/plugins/LinuxVST/src/Bite/BiteProc.cpp
index 690a998..64e0ac4 100755
--- a/plugins/LinuxVST/src/Bite/BiteProc.cpp
+++ b/plugins/LinuxVST/src/Bite/BiteProc.cpp
@@ -17,9 +17,6 @@ void Bite::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
double overallscale = 1.3;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double gain = ((A*2.0)-1.0)*overallscale;
double outputgain = B;
@@ -119,25 +116,14 @@ void Bite::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
inputSampleR *= outputgain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -159,9 +145,6 @@ void Bite::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
double overallscale = 1.3;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double gain = ((A*2.0)-1.0)*overallscale;
double outputgain = B;
@@ -261,25 +244,16 @@ void Bite::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
inputSampleR *= outputgain;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/BussColors4/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/BussColors4/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/BussColors4/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/BussColors4/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/BussColors4/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..8ad21ec
--- /dev/null
+++ b/plugins/LinuxVST/src/BussColors4/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/BussColors4/BussColors4.cpp b/plugins/LinuxVST/src/BussColors4/BussColors4.cpp
index 720dbf9..c7de380 100755
--- a/plugins/LinuxVST/src/BussColors4/BussColors4.cpp
+++ b/plugins/LinuxVST/src/BussColors4/BussColors4.cpp
@@ -44,11 +44,8 @@ BussColors4::BussColors4(audioMasterCallback audioMaster) :
slowdynR = 0;
gcount = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
@@ -114,21 +111,6 @@ void BussColors4::setParameter(VstInt32 index, float value) {
case kParamD: D = value; break; //this is the popup, stored as a float
default: throw; // unknown parameter, shouldn't happen!
}
- //we can also set other defaults here, and do calculations that only have to happen
- //once when parameters actually change. Here is the 'popup' setting its (global) values.
- //variables can also be set in the processreplacing loop, and there they'll be set every buffersize
- //here they're set when a parameter's actually changed, which should be less frequent, but
- //you must use global variables in the BussColors4.h file to do it.
- switch((VstInt32)( D * 3.999 ))
- {
- case 0: fpFlip = true; break; //choice A
- case 1: fpFlip = false; break; //choice B
- case 2: break; //choice C
- case 3: break; //choice D
- default: break; //should not happen
- }
- //this relates to using D as a 'popup' and changing things based on that switch.
- //we are using fpFlip just because it's already there globally, as an example.
}
float BussColors4::getParameter(VstInt32 index) {
diff --git a/plugins/LinuxVST/src/BussColors4/BussColors4.h b/plugins/LinuxVST/src/BussColors4/BussColors4.h
index d07460e..6452555 100755
--- a/plugins/LinuxVST/src/BussColors4/BussColors4.h
+++ b/plugins/LinuxVST/src/BussColors4/BussColors4.h
@@ -68,11 +68,8 @@ private:
double slowdynR;
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/BussColors4/BussColors4Proc.cpp b/plugins/LinuxVST/src/BussColors4/BussColors4Proc.cpp
index 2629ee8..b1b9451 100755
--- a/plugins/LinuxVST/src/BussColors4/BussColors4Proc.cpp
+++ b/plugins/LinuxVST/src/BussColors4/BussColors4Proc.cpp
@@ -31,9 +31,6 @@ void BussColors4::processReplacing(float **inputs, float **outputs, VstInt32 sam
double gain = 0.436;
double outgain = 1.0;
double bridgerectifier;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -795,25 +792,14 @@ void BussColors4::processReplacing(float **inputs, float **outputs, VstInt32 sam
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -849,9 +835,6 @@ void BussColors4::processDoubleReplacing(double **inputs, double **outputs, VstI
double gain = 0.436;
double outgain = 1.0;
double bridgerectifier;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -1613,25 +1596,16 @@ void BussColors4::processDoubleReplacing(double **inputs, double **outputs, VstI
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/ButterComp/ButterComp.cpp b/plugins/LinuxVST/src/ButterComp/ButterComp.cpp
index e6a33f7..b3123e2 100755
--- a/plugins/LinuxVST/src/ButterComp/ButterComp.cpp
+++ b/plugins/LinuxVST/src/ButterComp/ButterComp.cpp
@@ -26,11 +26,8 @@ ButterComp::ButterComp(audioMasterCallback audioMaster) :
controlBnegR = 1.0;
targetposR = 1.0;
targetnegR = 1.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/ButterComp/ButterComp.h b/plugins/LinuxVST/src/ButterComp/ButterComp.h
index af6df66..5c9862b 100755
--- a/plugins/LinuxVST/src/ButterComp/ButterComp.h
+++ b/plugins/LinuxVST/src/ButterComp/ButterComp.h
@@ -65,11 +65,8 @@ private:
double controlBnegR;
double targetposR;
double targetnegR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/ButterComp/ButterCompProc.cpp b/plugins/LinuxVST/src/ButterComp/ButterCompProc.cpp
index ea52946..d87030c 100755
--- a/plugins/LinuxVST/src/ButterComp/ButterCompProc.cpp
+++ b/plugins/LinuxVST/src/ButterComp/ButterCompProc.cpp
@@ -17,9 +17,6 @@ void ButterComp::processReplacing(float **inputs, float **outputs, VstInt32 samp
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputposL;
double inputnegL;
@@ -181,25 +178,14 @@ void ButterComp::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -221,9 +207,6 @@ void ButterComp::processDoubleReplacing(double **inputs, double **outputs, VstIn
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputposL;
double inputnegL;
@@ -385,25 +368,16 @@ void ButterComp::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/ButterComp2/ButterComp2Proc.cpp b/plugins/LinuxVST/src/ButterComp2/ButterComp2Proc.cpp
index 55ce488..67a6367 100755
--- a/plugins/LinuxVST/src/ButterComp2/ButterComp2Proc.cpp
+++ b/plugins/LinuxVST/src/ButterComp2/ButterComp2Proc.cpp
@@ -223,18 +223,14 @@ void ButterComp2::processReplacing(float **inputs, float **outputs, VstInt32 sam
flip = !flip;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -244,12 +240,6 @@ void ButterComp2::processReplacing(float **inputs, float **outputs, VstInt32 sam
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -468,18 +458,16 @@ void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstI
flip = !flip;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -489,10 +477,4 @@ void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstI
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.cpp b/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.cpp
index 14b4dc5..8fba0ef 100755
--- a/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.cpp
+++ b/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.cpp
@@ -17,11 +17,8 @@ C5RawBuss::C5RawBuss(audioMasterCallback audioMaster) :
lastSampleBussL = 0.0;
lastFXBussR = 0.0;
lastSampleBussR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.h b/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.h
index 5a409bc..f4d01fe 100755
--- a/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.h
+++ b/plugins/LinuxVST/src/C5RawBuss/C5RawBuss.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastFXBussL;
double lastSampleBussL;
diff --git a/plugins/LinuxVST/src/C5RawBuss/C5RawBussProc.cpp b/plugins/LinuxVST/src/C5RawBuss/C5RawBussProc.cpp
index 1bf5eec..fab4612 100755
--- a/plugins/LinuxVST/src/C5RawBuss/C5RawBussProc.cpp
+++ b/plugins/LinuxVST/src/C5RawBuss/C5RawBussProc.cpp
@@ -14,9 +14,6 @@ void C5RawBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = A * 0.5;
centering = 1.0 - pow(centering,5);
@@ -111,25 +108,14 @@ void C5RawBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampl
//build new signal off what was present in output last time
//slew aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -148,9 +134,6 @@ void C5RawBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = A * 0.5;
centering = 1.0 - pow(centering,5);
@@ -245,25 +228,16 @@ void C5RawBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt
//build new signal off what was present in output last time
//slew aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.cpp b/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.cpp
index b02a07d..ffc2ecf 100755
--- a/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.cpp
+++ b/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.cpp
@@ -17,11 +17,8 @@ C5RawChannel::C5RawChannel(audioMasterCallback audioMaster) :
lastSampleChannelL = 0.0;
lastFXChannelR = 0.0;
lastSampleChannelR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.h b/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.h
index 2281961..3ce3e84 100755
--- a/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.h
+++ b/plugins/LinuxVST/src/C5RawChannel/C5RawChannel.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastFXChannelL;
double lastSampleChannelL;
diff --git a/plugins/LinuxVST/src/C5RawChannel/C5RawChannelProc.cpp b/plugins/LinuxVST/src/C5RawChannel/C5RawChannelProc.cpp
index 41f949e..b2679ff 100755
--- a/plugins/LinuxVST/src/C5RawChannel/C5RawChannelProc.cpp
+++ b/plugins/LinuxVST/src/C5RawChannel/C5RawChannelProc.cpp
@@ -14,9 +14,6 @@ void C5RawChannel::processReplacing(float **inputs, float **outputs, VstInt32 sa
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = A * 0.5;
centering = 1.0 - pow(centering,5);
@@ -110,25 +107,14 @@ void C5RawChannel::processReplacing(float **inputs, float **outputs, VstInt32 sa
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -147,9 +133,6 @@ void C5RawChannel::processDoubleReplacing(double **inputs, double **outputs, Vst
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = A * 0.5;
centering = 1.0 - pow(centering,5);
@@ -243,25 +226,16 @@ void C5RawChannel::processDoubleReplacing(double **inputs, double **outputs, Vst
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/CStrip/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/CStrip/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/CStrip/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/CStrip/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/CStrip/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..36fe57d
--- /dev/null
+++ b/plugins/LinuxVST/src/CStrip/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/CStrip/CStrip.cpp b/plugins/LinuxVST/src/CStrip/CStrip.cpp
index 1c24d1b..2049ab8 100755
--- a/plugins/LinuxVST/src/CStrip/CStrip.cpp
+++ b/plugins/LinuxVST/src/CStrip/CStrip.cpp
@@ -153,11 +153,8 @@ CStrip::CStrip(audioMasterCallback audioMaster) :
nvgRA = nvgRB = 0.0;
//end ButterComp
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/CStrip/CStrip.h b/plugins/LinuxVST/src/CStrip/CStrip.h
index 10f6729..cc9f722 100755
--- a/plugins/LinuxVST/src/CStrip/CStrip.h
+++ b/plugins/LinuxVST/src/CStrip/CStrip.h
@@ -63,11 +63,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/LinuxVST/src/CStrip/CStripProc.cpp b/plugins/LinuxVST/src/CStrip/CStripProc.cpp
index 272b9b6..60ce59c 100755
--- a/plugins/LinuxVST/src/CStrip/CStripProc.cpp
+++ b/plugins/LinuxVST/src/CStrip/CStripProc.cpp
@@ -20,10 +20,8 @@ void CStrip::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
overallscale = getSampleRate();
compscale = compscale * overallscale;
//compscale is the one that's 1 or something like 2.2 for 96K rates
- float fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -728,25 +726,14 @@ void CStrip::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
inputSampleR *= outputgain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -771,10 +758,8 @@ void CStrip::processDoubleReplacing(double **inputs, double **outputs, VstInt32
overallscale = getSampleRate();
compscale = compscale * overallscale;
//compscale is the one that's 1 or something like 2.2 for 96K rates
- double fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
long double fpNew = 1.0 - fpOld;
-
long double inputSampleL;
long double inputSampleR;
@@ -1479,25 +1464,16 @@ void CStrip::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR *= outputgain;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Capacitor/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Capacitor/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Capacitor/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Capacitor/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Capacitor/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..28e146c
--- /dev/null
+++ b/plugins/LinuxVST/src/Capacitor/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Capacitor/Capacitor.cpp b/plugins/LinuxVST/src/Capacitor/Capacitor.cpp
index 2a62df6..0ade9c9 100755
--- a/plugins/LinuxVST/src/Capacitor/Capacitor.cpp
+++ b/plugins/LinuxVST/src/Capacitor/Capacitor.cpp
@@ -51,11 +51,8 @@ Capacitor::Capacitor(audioMasterCallback audioMaster) :
lastHighpass = 1000.0;
lastWet = 1000.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Capacitor/Capacitor.h b/plugins/LinuxVST/src/Capacitor/Capacitor.h
index d80c676..0799d39 100755
--- a/plugins/LinuxVST/src/Capacitor/Capacitor.h
+++ b/plugins/LinuxVST/src/Capacitor/Capacitor.h
@@ -94,11 +94,8 @@ private:
double lastHighpass;
double lastWet;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Capacitor/CapacitorProc.cpp b/plugins/LinuxVST/src/Capacitor/CapacitorProc.cpp
index 6accb0d..6b3582b 100755
--- a/plugins/LinuxVST/src/Capacitor/CapacitorProc.cpp
+++ b/plugins/LinuxVST/src/Capacitor/CapacitorProc.cpp
@@ -30,9 +30,6 @@ void Capacitor::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double invHighpass;
double dry;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -182,25 +179,14 @@ void Capacitor::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleL = (drySampleL * dry) + (inputSampleL * wet);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -235,9 +221,6 @@ void Capacitor::processDoubleReplacing(double **inputs, double **outputs, VstInt
double invHighpass;
double dry;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -387,25 +370,16 @@ void Capacitor::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleL = (drySampleL * dry) + (inputSampleL * wet);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Channel4/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Channel4/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Channel4/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Channel4/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Channel4/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..1a76777
--- /dev/null
+++ b/plugins/LinuxVST/src/Channel4/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Channel6/Channel6Proc.cpp b/plugins/LinuxVST/src/Channel6/Channel6Proc.cpp
index d206851..9f16b2a 100755
--- a/plugins/LinuxVST/src/Channel6/Channel6Proc.cpp
+++ b/plugins/LinuxVST/src/Channel6/Channel6Proc.cpp
@@ -121,18 +121,14 @@ void Channel6::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR *= output;
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -142,12 +138,6 @@ void Channel6::processReplacing(float **inputs, float **outputs, VstInt32 sample
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -264,18 +254,16 @@ void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR *= output;
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -285,10 +273,4 @@ void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt3
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/Chorus/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Chorus/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Chorus/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Chorus/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Chorus/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..6891b3b
--- /dev/null
+++ b/plugins/LinuxVST/src/Chorus/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Chorus/Chorus.cpp b/plugins/LinuxVST/src/Chorus/Chorus.cpp
index a0699ec..1f3965a 100755
--- a/plugins/LinuxVST/src/Chorus/Chorus.cpp
+++ b/plugins/LinuxVST/src/Chorus/Chorus.cpp
@@ -27,12 +27,9 @@ Chorus::Chorus(audioMasterCallback audioMaster) :
airEvenR = 0.0;
airOddR = 0.0;
airFactorR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Chorus/Chorus.h b/plugins/LinuxVST/src/Chorus/Chorus.h
index fb2fb44..5508ac3 100755
--- a/plugins/LinuxVST/src/Chorus/Chorus.h
+++ b/plugins/LinuxVST/src/Chorus/Chorus.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
const static int totalsamples = 16386;
float dL[totalsamples];
@@ -73,6 +70,7 @@ private:
double airEvenR;
double airOddR;
double airFactorR;
+ bool fpFlip;
float A;
float B;
diff --git a/plugins/LinuxVST/src/Chorus/ChorusProc.cpp b/plugins/LinuxVST/src/Chorus/ChorusProc.cpp
index aed2bc0..368ade7 100755
--- a/plugins/LinuxVST/src/Chorus/ChorusProc.cpp
+++ b/plugins/LinuxVST/src/Chorus/ChorusProc.cpp
@@ -30,9 +30,6 @@ void Chorus::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
double offset;
//this is a double buffer so we will be splitting it in two
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -134,26 +131,16 @@ void Chorus::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -188,9 +175,6 @@ void Chorus::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double offset;
//this is a double buffer so we will be splitting it in two
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -293,25 +277,17 @@ void Chorus::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/ChorusEnsemble/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/ChorusEnsemble/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/ChorusEnsemble/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/ChorusEnsemble/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/ChorusEnsemble/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..169e939
--- /dev/null
+++ b/plugins/LinuxVST/src/ChorusEnsemble/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.cpp b/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.cpp
index b1012f9..318b678 100755
--- a/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.cpp
+++ b/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.cpp
@@ -27,12 +27,9 @@ ChorusEnsemble::ChorusEnsemble(audioMasterCallback audioMaster) :
airEvenR = 0.0;
airOddR = 0.0;
airFactorR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.h b/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.h
index bd442ab..e7df332 100755
--- a/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.h
+++ b/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsemble.h
@@ -67,12 +67,9 @@ private:
double airEvenR;
double airOddR;
double airFactorR;
-
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsembleProc.cpp b/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsembleProc.cpp
index 2a783dd..1663244 100755
--- a/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsembleProc.cpp
+++ b/plugins/LinuxVST/src/ChorusEnsemble/ChorusEnsembleProc.cpp
@@ -17,9 +17,6 @@ void ChorusEnsemble::processReplacing(float **inputs, float **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double speed = pow(A,3) * 0.001;
speed *= overallscale;
@@ -174,27 +171,17 @@ void ChorusEnsemble::processReplacing(float **inputs, float **outputs, VstInt32
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
+ fpFlip = !fpFlip;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -216,9 +203,6 @@ void ChorusEnsemble::processDoubleReplacing(double **inputs, double **outputs, V
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double speed = pow(A,3) * 0.001;
speed *= overallscale;
@@ -373,27 +357,19 @@ void ChorusEnsemble::processDoubleReplacing(double **inputs, double **outputs, V
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
+ fpFlip = !fpFlip;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/ClipOnly/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/ClipOnly/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/ClipOnly/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/ClipOnly/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/ClipOnly/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..0762d52
--- /dev/null
+++ b/plugins/LinuxVST/src/ClipOnly/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Console4Buss/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Console4Buss/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Console4Buss/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Console4Buss/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Console4Buss/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..82160f2
--- /dev/null
+++ b/plugins/LinuxVST/src/Console4Buss/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Console4Buss/Console4Buss.cpp b/plugins/LinuxVST/src/Console4Buss/Console4Buss.cpp
index 79c7f6f..0c8e00c 100755
--- a/plugins/LinuxVST/src/Console4Buss/Console4Buss.cpp
+++ b/plugins/LinuxVST/src/Console4Buss/Console4Buss.cpp
@@ -22,11 +22,8 @@ Console4Buss::Console4Buss(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
// TODO: uncomment canDo entries according to your plugin's capabilities
// _canDo.insert("sendVstEvents"); // plug-in will send Vst events to Host.
diff --git a/plugins/LinuxVST/src/Console4Buss/Console4Buss.h b/plugins/LinuxVST/src/Console4Buss/Console4Buss.h
index b19e6f2..9a9cbfb 100755
--- a/plugins/LinuxVST/src/Console4Buss/Console4Buss.h
+++ b/plugins/LinuxVST/src/Console4Buss/Console4Buss.h
@@ -71,11 +71,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- double fpNShapeLA;
- double fpNShapeLB;
- double fpNShapeRA;
- double fpNShapeRB;
- bool fpFlip;
+ double fpNShapeL;
+ double fpNShapeR;
//default stuff
double lastSampleL;
double lastSampleR;
diff --git a/plugins/LinuxVST/src/Console4Buss/Console4BussProc.cpp b/plugins/LinuxVST/src/Console4Buss/Console4BussProc.cpp
index 712e496..dde872a 100755
--- a/plugins/LinuxVST/src/Console4Buss/Console4BussProc.cpp
+++ b/plugins/LinuxVST/src/Console4Buss/Console4BussProc.cpp
@@ -18,10 +18,6 @@ void Console4Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
-
long double inputSampleL;
long double inputSampleR;
long double half;
@@ -123,25 +119,14 @@ void Console4Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa
//this is the inverse processing for Console: boosts but not so much if there's slew.
//is this too subtle an effect?
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -163,9 +148,6 @@ void Console4Buss::processDoubleReplacing(double **inputs, double **outputs, Vst
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -267,25 +249,16 @@ void Console4Buss::processDoubleReplacing(double **inputs, double **outputs, Vst
//this is the inverse processing for Console: boosts but not so much if there's slew.
//is this too subtle an effect?
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
diff --git a/plugins/LinuxVST/src/Console4Channel/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Console4Channel/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Console4Channel/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Console4Channel/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Console4Channel/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..e9e8200
--- /dev/null
+++ b/plugins/LinuxVST/src/Console4Channel/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Console4Channel/Console4Channel.cpp b/plugins/LinuxVST/src/Console4Channel/Console4Channel.cpp
index 52f6190..2e524a1 100755
--- a/plugins/LinuxVST/src/Console4Channel/Console4Channel.cpp
+++ b/plugins/LinuxVST/src/Console4Channel/Console4Channel.cpp
@@ -20,11 +20,8 @@ Console4Channel::Console4Channel(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
// TODO: uncomment canDo entries according to your plugin's capabilities
// _canDo.insert("sendVstEvents"); // plug-in will send Vst events to Host.
diff --git a/plugins/LinuxVST/src/Console4Channel/Console4Channel.h b/plugins/LinuxVST/src/Console4Channel/Console4Channel.h
index 861ebe3..564853a 100755
--- a/plugins/LinuxVST/src/Console4Channel/Console4Channel.h
+++ b/plugins/LinuxVST/src/Console4Channel/Console4Channel.h
@@ -76,11 +76,8 @@ private:
double settingchase;
double chasespeed;
- double fpNShapeLA;
- double fpNShapeLB;
- double fpNShapeRA;
- double fpNShapeRB;
- bool fpFlip;
+ double fpNShapeL;
+ double fpNShapeR;
//default stuff
float gain;
};
diff --git a/plugins/LinuxVST/src/Console4Channel/Console4ChannelProc.cpp b/plugins/LinuxVST/src/Console4Channel/Console4ChannelProc.cpp
index 9bf7244..3538710 100755
--- a/plugins/LinuxVST/src/Console4Channel/Console4ChannelProc.cpp
+++ b/plugins/LinuxVST/src/Console4Channel/Console4ChannelProc.cpp
@@ -18,10 +18,6 @@ void Console4Channel::processReplacing(float **inputs, float **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
-
long double inputSampleL;
long double inputSampleR;
long double half;
@@ -105,25 +101,14 @@ void Console4Channel::processReplacing(float **inputs, float **outputs, VstInt32
//this is part of the Purest line: stuff that is on every track
//needs to be DAMN LOW ON MATH srsly guys
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -145,9 +130,6 @@ void Console4Channel::processDoubleReplacing(double **inputs, double **outputs,
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -232,25 +214,16 @@ void Console4Channel::processDoubleReplacing(double **inputs, double **outputs,
//this is part of the Purest line: stuff that is on every track
//needs to be DAMN LOW ON MATH srsly guys
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Console5Buss/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Console5Buss/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Console5Buss/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Console5Buss/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Console5Buss/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..f8fc15a
--- /dev/null
+++ b/plugins/LinuxVST/src/Console5Buss/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Console5Buss/Console5Buss.cpp b/plugins/LinuxVST/src/Console5Buss/Console5Buss.cpp
index 7f1c915..7e937a8 100755
--- a/plugins/LinuxVST/src/Console5Buss/Console5Buss.cpp
+++ b/plugins/LinuxVST/src/Console5Buss/Console5Buss.cpp
@@ -22,11 +22,8 @@ Console5Buss::Console5Buss(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Console5Buss/Console5Buss.h b/plugins/LinuxVST/src/Console5Buss/Console5Buss.h
index 6ece284..0166f33 100755
--- a/plugins/LinuxVST/src/Console5Buss/Console5Buss.h
+++ b/plugins/LinuxVST/src/Console5Buss/Console5Buss.h
@@ -61,11 +61,8 @@ private:
double gainchase;
double settingchase;
double chasespeed;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Console5Buss/Console5BussProc.cpp b/plugins/LinuxVST/src/Console5Buss/Console5BussProc.cpp
index 28b4980..21069e8 100755
--- a/plugins/LinuxVST/src/Console5Buss/Console5BussProc.cpp
+++ b/plugins/LinuxVST/src/Console5Buss/Console5BussProc.cpp
@@ -17,9 +17,6 @@ void Console5Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -151,25 +148,14 @@ void Console5Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa
lastFXBussR *= (1.0 - (nearZeroR * bassTrim));
//this cuts back the DC offset directly, relative to how near zero we are
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -191,9 +177,6 @@ void Console5Buss::processDoubleReplacing(double **inputs, double **outputs, Vst
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -325,25 +308,16 @@ void Console5Buss::processDoubleReplacing(double **inputs, double **outputs, Vst
lastFXBussR *= (1.0 - (nearZeroR * bassTrim));
//this cuts back the DC offset directly, relative to how near zero we are
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Console5Channel/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Console5Channel/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Console5Channel/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Console5Channel/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Console5Channel/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..ac0d461
--- /dev/null
+++ b/plugins/LinuxVST/src/Console5Channel/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Console5Channel/Console5Channel.cpp b/plugins/LinuxVST/src/Console5Channel/Console5Channel.cpp
index 9305bf4..1a8f6fb 100755
--- a/plugins/LinuxVST/src/Console5Channel/Console5Channel.cpp
+++ b/plugins/LinuxVST/src/Console5Channel/Console5Channel.cpp
@@ -22,11 +22,8 @@ Console5Channel::Console5Channel(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Console5Channel/Console5Channel.h b/plugins/LinuxVST/src/Console5Channel/Console5Channel.h
index 59e7950..bbc58b3 100755
--- a/plugins/LinuxVST/src/Console5Channel/Console5Channel.h
+++ b/plugins/LinuxVST/src/Console5Channel/Console5Channel.h
@@ -61,11 +61,8 @@ private:
double gainchase;
double settingchase;
double chasespeed;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Console5Channel/Console5ChannelProc.cpp b/plugins/LinuxVST/src/Console5Channel/Console5ChannelProc.cpp
index 428e5e4..a010170 100755
--- a/plugins/LinuxVST/src/Console5Channel/Console5ChannelProc.cpp
+++ b/plugins/LinuxVST/src/Console5Channel/Console5ChannelProc.cpp
@@ -17,9 +17,6 @@ void Console5Channel::processReplacing(float **inputs, float **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -152,25 +149,14 @@ void Console5Channel::processReplacing(float **inputs, float **outputs, VstInt32
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -192,9 +178,6 @@ void Console5Channel::processDoubleReplacing(double **inputs, double **outputs,
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -327,25 +310,16 @@ void Console5Channel::processDoubleReplacing(double **inputs, double **outputs,
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Console5DarkCh/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Console5DarkCh/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Console5DarkCh/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Console5DarkCh/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Console5DarkCh/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..1473e4d
--- /dev/null
+++ b/plugins/LinuxVST/src/Console5DarkCh/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.cpp b/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.cpp
index 0d613a9..350a6b3 100755
--- a/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.cpp
+++ b/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.cpp
@@ -22,11 +22,8 @@ Console5DarkCh::Console5DarkCh(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.h b/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.h
index 558e4f7..3265f5c 100755
--- a/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.h
+++ b/plugins/LinuxVST/src/Console5DarkCh/Console5DarkCh.h
@@ -61,11 +61,8 @@ private:
double gainchase;
double settingchase;
double chasespeed;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Console5DarkCh/Console5DarkChProc.cpp b/plugins/LinuxVST/src/Console5DarkCh/Console5DarkChProc.cpp
index e17ff88c..ba3a842 100755
--- a/plugins/LinuxVST/src/Console5DarkCh/Console5DarkChProc.cpp
+++ b/plugins/LinuxVST/src/Console5DarkCh/Console5DarkChProc.cpp
@@ -17,9 +17,6 @@ void Console5DarkCh::processReplacing(float **inputs, float **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -152,25 +149,14 @@ void Console5DarkCh::processReplacing(float **inputs, float **outputs, VstInt32
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -192,9 +178,6 @@ void Console5DarkCh::processDoubleReplacing(double **inputs, double **outputs, V
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -327,25 +310,16 @@ void Console5DarkCh::processDoubleReplacing(double **inputs, double **outputs, V
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.cpp b/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.cpp
index 68a7fd9..6653b91 100755
--- a/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.cpp
+++ b/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.cpp
@@ -36,11 +36,8 @@ CrunchyGrooveWear::CrunchyGrooveWear(audioMasterCallback audioMaster) :
cMidPrevR = 0.0;
dMidPrevR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.h b/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.h
index ed304c5..3489e5b 100755
--- a/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.h
+++ b/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWear.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double aMidL[21];
diff --git a/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp b/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp
index 4eec93e..3c9762e 100755
--- a/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp
+++ b/plugins/LinuxVST/src/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp
@@ -14,9 +14,6 @@ void CrunchyGrooveWear::processReplacing(float **inputs, float **outputs, VstInt
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = (pow(A,2)*19.0)+1.0;
double gain = overallscale;
@@ -434,25 +431,14 @@ void CrunchyGrooveWear::processReplacing(float **inputs, float **outputs, VstInt
drySampleR = inputSampleR;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -471,9 +457,6 @@ void CrunchyGrooveWear::processDoubleReplacing(double **inputs, double **outputs
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = (pow(A,2)*19.0)+1.0;
double gain = overallscale;
@@ -891,25 +874,16 @@ void CrunchyGrooveWear::processDoubleReplacing(double **inputs, double **outputs
drySampleR = inputSampleR;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Crystal/CrystalProc.cpp b/plugins/LinuxVST/src/Crystal/CrystalProc.cpp
index 9c62355..7e696a7 100755
--- a/plugins/LinuxVST/src/Crystal/CrystalProc.cpp
+++ b/plugins/LinuxVST/src/Crystal/CrystalProc.cpp
@@ -191,18 +191,14 @@ void Crystal::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
//when current and old samples are different from each other, otherwise you can't tell it's there.
//This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently.
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -212,12 +208,6 @@ void Crystal::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -404,18 +394,16 @@ void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//when current and old samples are different from each other, otherwise you can't tell it's there.
//This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently.
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -425,10 +413,4 @@ void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/DCVoltage/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/DCVoltage/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/DCVoltage/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/DCVoltage/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/DCVoltage/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..35085c6
--- /dev/null
+++ b/plugins/LinuxVST/src/DCVoltage/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/DeEss/DeEssProc.cpp b/plugins/LinuxVST/src/DeEss/DeEssProc.cpp
index 9a8e14b..9b030a4 100755
--- a/plugins/LinuxVST/src/DeEss/DeEssProc.cpp
+++ b/plugins/LinuxVST/src/DeEss/DeEssProc.cpp
@@ -148,18 +148,14 @@ void DeEss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
flip = !flip;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -169,12 +165,6 @@ void DeEss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -318,18 +308,16 @@ void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
flip = !flip;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -339,10 +327,4 @@ void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/DeRez/DeRez.cpp b/plugins/LinuxVST/src/DeRez/DeRez.cpp
index 404127a..cb9b514 100755
--- a/plugins/LinuxVST/src/DeRez/DeRez.cpp
+++ b/plugins/LinuxVST/src/DeRez/DeRez.cpp
@@ -23,11 +23,8 @@ DeRez::DeRez(audioMasterCallback audioMaster) :
incrementA = 0.0;
incrementB = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/DeRez/DeRez.h b/plugins/LinuxVST/src/DeRez/DeRez.h
index 89338e8..8ebdcd9 100755
--- a/plugins/LinuxVST/src/DeRez/DeRez.h
+++ b/plugins/LinuxVST/src/DeRez/DeRez.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/LinuxVST/src/DeRez/DeRezProc.cpp b/plugins/LinuxVST/src/DeRez/DeRezProc.cpp
index 247a364..cbe42d5 100755
--- a/plugins/LinuxVST/src/DeRez/DeRezProc.cpp
+++ b/plugins/LinuxVST/src/DeRez/DeRezProc.cpp
@@ -17,8 +17,6 @@ void DeRez::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double targetA = pow(A,3)+0.0005;
if (targetA > 1.0) targetA = 1.0;
@@ -132,26 +130,14 @@ void DeRez::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
lastSampleL = drySampleL;
lastSampleR = drySampleR;
- //noise shaping to 32-bit floating point
- float fpTemp;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -173,8 +159,6 @@ void DeRez::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double targetA = pow(A,3)+0.0005;
if (targetA > 1.0) targetA = 1.0;
@@ -288,26 +272,16 @@ void DeRez::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
lastSampleL = drySampleL;
lastSampleR = drySampleR;
- //noise shaping to 64-bit floating point
- double fpTemp;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Density/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Density/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Density/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Density/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Density/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..ac31fc9
--- /dev/null
+++ b/plugins/LinuxVST/src/Density/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Density/Density.cpp b/plugins/LinuxVST/src/Density/Density.cpp
index 1ecafde..bac4fb2 100755
--- a/plugins/LinuxVST/src/Density/Density.cpp
+++ b/plugins/LinuxVST/src/Density/Density.cpp
@@ -20,12 +20,9 @@ Density::Density(audioMasterCallback audioMaster) :
iirSampleBL = 0.0;
iirSampleAR = 0.0;
iirSampleBR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Density/Density.h b/plugins/LinuxVST/src/Density/Density.h
index 377d25d..b634c44 100755
--- a/plugins/LinuxVST/src/Density/Density.h
+++ b/plugins/LinuxVST/src/Density/Density.h
@@ -55,17 +55,14 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double iirSampleAL;
double iirSampleBL;
double iirSampleAR;
double iirSampleBR;
-
+ bool fpFlip;
float A;
float B;
float C;
diff --git a/plugins/LinuxVST/src/Density/DensityProc.cpp b/plugins/LinuxVST/src/Density/DensityProc.cpp
index 1e968c7..f229a9d 100755
--- a/plugins/LinuxVST/src/Density/DensityProc.cpp
+++ b/plugins/LinuxVST/src/Density/DensityProc.cpp
@@ -26,9 +26,6 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double out = fabs(density);
density = density * fabs(density);
double count;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -95,6 +92,7 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
inputSampleR -= iirSampleBR;
}
//highpass section
+ fpFlip = !fpFlip;
count = density;
while (count > 1.0)
@@ -150,25 +148,14 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -199,9 +186,6 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double out = fabs(density);
density = density * fabs(density);
double count;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -268,6 +252,7 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR -= iirSampleBR;
}
//highpass section
+ fpFlip = !fpFlip;
count = density;
while (count > 1.0)
@@ -323,25 +308,16 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Desk/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Desk/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Desk/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Desk/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Desk/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..9006873
--- /dev/null
+++ b/plugins/LinuxVST/src/Desk/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Desk/Desk.cpp b/plugins/LinuxVST/src/Desk/Desk.cpp
index 7a30943..9582f04 100755
--- a/plugins/LinuxVST/src/Desk/Desk.cpp
+++ b/plugins/LinuxVST/src/Desk/Desk.cpp
@@ -18,11 +18,8 @@ Desk::Desk(audioMasterCallback audioMaster) :
lastSampleR = 0.0;
lastOutSampleR = 0.0;
lastSlewR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Desk/Desk.h b/plugins/LinuxVST/src/Desk/Desk.h
index 8c5c398..f7f933d 100755
--- a/plugins/LinuxVST/src/Desk/Desk.h
+++ b/plugins/LinuxVST/src/Desk/Desk.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
long double lastSampleL;
diff --git a/plugins/LinuxVST/src/Desk/DeskProc.cpp b/plugins/LinuxVST/src/Desk/DeskProc.cpp
index a2bc92c..d53894b 100755
--- a/plugins/LinuxVST/src/Desk/DeskProc.cpp
+++ b/plugins/LinuxVST/src/Desk/DeskProc.cpp
@@ -29,9 +29,6 @@ void Desk::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
double bridgerectifier;
double combsample;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -151,25 +148,14 @@ void Desk::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
inputSampleR /= gain;
//end R
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -203,9 +189,6 @@ void Desk::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
double bridgerectifier;
double combsample;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -325,25 +308,16 @@ void Desk::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
inputSampleR /= gain;
//end R
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Desk4/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Desk4/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Desk4/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Desk4/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Desk4/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..a020b8d
--- /dev/null
+++ b/plugins/LinuxVST/src/Desk4/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Desk4/Desk4.cpp b/plugins/LinuxVST/src/Desk4/Desk4.cpp
index a8e20a7..0a05d87 100755
--- a/plugins/LinuxVST/src/Desk4/Desk4.cpp
+++ b/plugins/LinuxVST/src/Desk4/Desk4.cpp
@@ -30,11 +30,8 @@ Desk4::Desk4(audioMasterCallback audioMaster) :
lastSlewR = 0.0;
gcount = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Desk4/Desk4.h b/plugins/LinuxVST/src/Desk4/Desk4.h
index fa09cd0..802ee47 100755
--- a/plugins/LinuxVST/src/Desk4/Desk4.h
+++ b/plugins/LinuxVST/src/Desk4/Desk4.h
@@ -70,11 +70,8 @@ private:
double lastSlewR;
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Desk4/Desk4Proc.cpp b/plugins/LinuxVST/src/Desk4/Desk4Proc.cpp
index 515436c..fd165b6 100755
--- a/plugins/LinuxVST/src/Desk4/Desk4Proc.cpp
+++ b/plugins/LinuxVST/src/Desk4/Desk4Proc.cpp
@@ -17,9 +17,6 @@ void Desk4::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double gain = (pow(A,2)*10)+0.0001;
double gaintrim = (pow(A,2)*2)+1.0;
@@ -229,25 +226,14 @@ void Desk4::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -269,9 +255,6 @@ void Desk4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double gain = (pow(A,2)*10)+0.0001;
double gaintrim = (pow(A,2)*2)+1.0;
@@ -481,25 +464,16 @@ void Desk4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Distance/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Distance/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Distance/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Distance/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Distance/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..4359323
--- /dev/null
+++ b/plugins/LinuxVST/src/Distance/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Distance/Distance.cpp b/plugins/LinuxVST/src/Distance/Distance.cpp
index bae55c1..7ccd8fb 100755
--- a/plugins/LinuxVST/src/Distance/Distance.cpp
+++ b/plugins/LinuxVST/src/Distance/Distance.cpp
@@ -16,11 +16,8 @@ Distance::Distance(audioMasterCallback audioMaster) :
B = 1.0;
thirdresultL = prevresultL = lastclampL = clampL = changeL = lastL = 0.0;
thirdresultR = prevresultR = lastclampR = clampR = changeR = lastR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Distance/Distance.h b/plugins/LinuxVST/src/Distance/Distance.h
index 52ecc14..5566f84 100755
--- a/plugins/LinuxVST/src/Distance/Distance.h
+++ b/plugins/LinuxVST/src/Distance/Distance.h
@@ -67,11 +67,8 @@ private:
double prevresultR;
double lastR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Distance/DistanceProc.cpp b/plugins/LinuxVST/src/Distance/DistanceProc.cpp
index bdf3c13..32eb3fa 100755
--- a/plugins/LinuxVST/src/Distance/DistanceProc.cpp
+++ b/plugins/LinuxVST/src/Distance/DistanceProc.cpp
@@ -28,9 +28,6 @@ void Distance::processReplacing(float **inputs, float **outputs, VstInt32 sample
double dry = 1.0-wet;
double bridgerectifier;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double drySampleL;
@@ -126,25 +123,14 @@ void Distance::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (drySampleR * dry)+(inputSampleR*wet);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -177,9 +163,6 @@ void Distance::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double dry = 1.0-wet;
double bridgerectifier;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double drySampleL;
@@ -275,25 +258,16 @@ void Distance::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (drySampleR * dry)+(inputSampleR*wet);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Distance2/Distance2Proc.cpp b/plugins/LinuxVST/src/Distance2/Distance2Proc.cpp
index ef5bf5b..473f3c8 100755
--- a/plugins/LinuxVST/src/Distance2/Distance2Proc.cpp
+++ b/plugins/LinuxVST/src/Distance2/Distance2Proc.cpp
@@ -266,18 +266,14 @@ void Distance2::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -287,12 +283,6 @@ void Distance2::processReplacing(float **inputs, float **outputs, VstInt32 sampl
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -554,18 +544,16 @@ void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -575,10 +563,4 @@ void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/DitherFloat/DitherFloat.cpp b/plugins/LinuxVST/src/DitherFloat/DitherFloat.cpp
new file mode 100755
index 0000000..ffd9e94
--- /dev/null
+++ b/plugins/LinuxVST/src/DitherFloat/DitherFloat.cpp
@@ -0,0 +1,127 @@
+/* ========================================
+ * DitherFloat - DitherFloat.h
+ * Copyright (c) 2016 airwindows, All rights reserved
+ * ======================================== */
+
+#ifndef __DitherFloat_H
+#include "DitherFloat.h"
+#endif
+
+AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new DitherFloat(audioMaster);}
+
+DitherFloat::DitherFloat(audioMasterCallback audioMaster) :
+ AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
+{
+ A = 0.0;
+ B = 1.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+ _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
+ _canDo.insert("plugAsSend"); // plug-in can be used as a send effect.
+ _canDo.insert("x2in2out");
+ setNumInputs(kNumInputs);
+ setNumOutputs(kNumOutputs);
+ setUniqueID(kUniqueId);
+ canProcessReplacing(); // supports output replacing
+ canDoubleReplacing(); // supports double precision processing
+ programsAreChunks(true);
+ vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name
+}
+
+DitherFloat::~DitherFloat() {}
+VstInt32 DitherFloat::getVendorVersion () {return 1000;}
+void DitherFloat::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
+void DitherFloat::getProgramName(char *name) {vst_strncpy (name, _programName, kVstMaxProgNameLen);}
+//airwindows likes to ignore this stuff. Make your own programs, and make a different plugin rather than
+//trying to do versioning and preventing people from using older versions. Maybe they like the old one!
+
+static float pinParameter(float data)
+{
+ if (data < 0.0f) return 0.0f;
+ if (data > 1.0f) return 1.0f;
+ return data;
+}
+
+VstInt32 DitherFloat::getChunk (void** data, bool isPreset)
+{
+ float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
+ chunkData[0] = A;
+ chunkData[1] = B;
+ /* Note: The way this is set up, it will break if you manage to save settings on an Intel
+ machine and load them on a PPC Mac. However, it's fine if you stick to the machine you
+ started with. */
+
+ *data = chunkData;
+ return kNumParameters * sizeof(float);
+}
+
+VstInt32 DitherFloat::setChunk (void* data, VstInt32 byteSize, bool isPreset)
+{
+ float *chunkData = (float *)data;
+ A = pinParameter(chunkData[0]);
+ B = pinParameter(chunkData[1]);
+ /* We're ignoring byteSize as we found it to be a filthy liar */
+
+ /* calculate any other fields you need here - you could copy in
+ code from setParameter() here. */
+ return 0;
+}
+
+void DitherFloat::setParameter(VstInt32 index, float value) {
+ switch (index) {
+ case kParamA: A = value; break;
+ case kParamB: B = value; break;
+ default: throw; // unknown parameter, shouldn't happen!
+ }
+}
+
+float DitherFloat::getParameter(VstInt32 index) {
+ switch (index) {
+ case kParamA: return A; break;
+ case kParamB: return B; break;
+ default: break; // unknown parameter, shouldn't happen!
+ } return 0.0; //we only need to update the relevant name, this is simple to manage
+}
+
+void DitherFloat::getParameterName(VstInt32 index, char *text) {
+ switch (index) {
+ case kParamA: vst_strncpy (text, "Offset", kVstMaxParamStrLen); break;
+ case kParamB: vst_strncpy (text, "Dither", kVstMaxParamStrLen); break;
+ default: break; // unknown parameter, shouldn't happen!
+ } //this is our labels for displaying in the VST host
+}
+
+void DitherFloat::getParameterDisplay(VstInt32 index, char *text) {
+ switch (index) {
+ case kParamA: int2string ((VstInt32)(A * 32), text, kVstMaxParamStrLen); break;
+ case kParamB: float2string (B, text, kVstMaxParamStrLen); break;
+ default: break; // unknown parameter, shouldn't happen!
+ } //this displays the values and handles 'popups' where it's discrete choices
+}
+
+void DitherFloat::getParameterLabel(VstInt32 index, char *text) {
+ switch (index) {
+ case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
+ case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
+ default: break; // unknown parameter, shouldn't happen!
+ }
+}
+
+VstInt32 DitherFloat::canDo(char *text)
+{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
+
+bool DitherFloat::getEffectName(char* name) {
+ vst_strncpy(name, "DitherFloat", kVstMaxProductStrLen); return true;
+}
+
+VstPlugCategory DitherFloat::getPlugCategory() {return kPlugCategEffect;}
+
+bool DitherFloat::getProductString(char* text) {
+ vst_strncpy (text, "airwindows DitherFloat", kVstMaxProductStrLen); return true;
+}
+
+bool DitherFloat::getVendorString(char* text) {
+ vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
+}
diff --git a/plugins/LinuxVST/src/DitherFloat/DitherFloat.h b/plugins/LinuxVST/src/DitherFloat/DitherFloat.h
new file mode 100755
index 0000000..b8ddf51
--- /dev/null
+++ b/plugins/LinuxVST/src/DitherFloat/DitherFloat.h
@@ -0,0 +1,64 @@
+/* ========================================
+ * DitherFloat - DitherFloat.h
+ * Created 8/12/11 by SPIAdmin
+ * Copyright (c) 2011 __MyCompanyName__, All rights reserved
+ * ======================================== */
+
+#ifndef __DitherFloat_H
+#define __DitherFloat_H
+
+#ifndef __audioeffect__
+#include "audioeffectx.h"
+#endif
+
+#include <set>
+#include <string>
+#include <math.h>
+
+enum {
+ kParamA = 0,
+ kParamB = 1,
+ kNumParameters = 2
+}; //
+
+const int kNumPrograms = 0;
+const int kNumInputs = 2;
+const int kNumOutputs = 2;
+const unsigned long kUniqueId = 'dthf'; //Change this to what the AU identity is!
+
+class DitherFloat :
+ public AudioEffectX
+{
+public:
+ DitherFloat(audioMasterCallback audioMaster);
+ ~DitherFloat();
+ virtual bool getEffectName(char* name); // The plug-in name
+ virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in
+ virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg
+ virtual bool getVendorString(char* text); // Vendor info
+ virtual VstInt32 getVendorVersion(); // Version number
+ virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);
+ virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames);
+ virtual void getProgramName(char *name); // read the name from the host
+ virtual void setProgramName(char *name); // changes the name of the preset displayed in the host
+ virtual VstInt32 getChunk (void** data, bool isPreset);
+ virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset);
+ virtual float getParameter(VstInt32 index); // get the parameter value at the specified index
+ virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value
+ virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB)
+ virtual void getParameterName(VstInt32 index, char *text); // name of the parameter
+ virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value
+ virtual VstInt32 canDo(char *text);
+private:
+ char _programName[kVstMaxProgNameLen + 1];
+ std::set< std::string > _canDo;
+
+ long double fpNShapeL;
+ long double fpNShapeR;
+ //default stuff
+
+ float A;
+ float B;
+};
+
+#endif
diff --git a/plugins/LinuxVST/src/DitherFloat/DitherFloatProc.cpp b/plugins/LinuxVST/src/DitherFloat/DitherFloatProc.cpp
new file mode 100755
index 0000000..3c76a1a
--- /dev/null
+++ b/plugins/LinuxVST/src/DitherFloat/DitherFloatProc.cpp
@@ -0,0 +1,184 @@
+/* ========================================
+ * DitherFloat - DitherFloat.h
+ * Copyright (c) 2016 airwindows, All rights reserved
+ * ======================================== */
+
+#ifndef __DitherFloat_H
+#include "DitherFloat.h"
+#endif
+
+void DitherFloat::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
+{
+ float* in1 = inputs[0];
+ float* in2 = inputs[1];
+ float* out1 = outputs[0];
+ float* out2 = outputs[1];
+
+ double overallscale = 1.0;
+ overallscale /= 44100.0;
+ overallscale *= getSampleRate();
+
+ int floatOffset = (A * 32);
+ long double blend = B;
+
+ long double gain = 0;
+
+ switch (floatOffset)
+ {
+ case 0: gain = 1.0; break;
+ case 1: gain = 2.0; break;
+ case 2: gain = 4.0; break;
+ case 3: gain = 8.0; break;
+ case 4: gain = 16.0; break;
+ case 5: gain = 32.0; break;
+ case 6: gain = 64.0; break;
+ case 7: gain = 128.0; break;
+ case 8: gain = 256.0; break;
+ case 9: gain = 512.0; break;
+ case 10: gain = 1024.0; break;
+ case 11: gain = 2048.0; break;
+ case 12: gain = 4096.0; break;
+ case 13: gain = 8192.0; break;
+ case 14: gain = 16384.0; break;
+ case 15: gain = 32768.0; break;
+ case 16: gain = 65536.0; break;
+ case 17: gain = 131072.0; break;
+ case 18: gain = 262144.0; break;
+ case 19: gain = 524288.0; break;
+ case 20: gain = 1048576.0; break;
+ case 21: gain = 2097152.0; break;
+ case 22: gain = 4194304.0; break;
+ case 23: gain = 8388608.0; break;
+ case 24: gain = 16777216.0; break;
+ case 25: gain = 33554432.0; break;
+ case 26: gain = 67108864.0; break;
+ case 27: gain = 134217728.0; break;
+ case 28: gain = 268435456.0; break;
+ case 29: gain = 536870912.0; break;
+ case 30: gain = 1073741824.0; break;
+ case 31: gain = 2147483648.0; break;
+ case 32: gain = 4294967296.0; break;
+ }
+ //we are directly punching in the gain values rather than calculating them
+
+ while (--sampleFrames >= 0)
+ {
+ long double inputSampleL = *in1 + (gain-1);
+ long double inputSampleR = *in2 + (gain-1);
+
+
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo;
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo;
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+
+
+
+ inputSampleL = (float)inputSampleL; //equivalent of 'floor' for 32 bit floating point
+ inputSampleR = (float)inputSampleR; //equivalent of 'floor' for 32 bit floating point
+ //We do that separately, we're truncating to floating point WHILE heavily offset.
+
+ *out1 = inputSampleL - (gain-1);
+ *out2 = inputSampleR - (gain-1);
+
+ *in1++;
+ *in2++;
+ *out1++;
+ *out2++;
+ }
+}
+
+void DitherFloat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
+{
+ double* in1 = inputs[0];
+ double* in2 = inputs[1];
+ double* out1 = outputs[0];
+ double* out2 = outputs[1];
+
+ double overallscale = 1.0;
+ overallscale /= 44100.0;
+ overallscale *= getSampleRate();
+
+ int floatOffset = (A * 32);
+ long double blend = B;
+
+ long double gain = 0;
+
+ switch (floatOffset)
+ {
+ case 0: gain = 1.0; break;
+ case 1: gain = 2.0; break;
+ case 2: gain = 4.0; break;
+ case 3: gain = 8.0; break;
+ case 4: gain = 16.0; break;
+ case 5: gain = 32.0; break;
+ case 6: gain = 64.0; break;
+ case 7: gain = 128.0; break;
+ case 8: gain = 256.0; break;
+ case 9: gain = 512.0; break;
+ case 10: gain = 1024.0; break;
+ case 11: gain = 2048.0; break;
+ case 12: gain = 4096.0; break;
+ case 13: gain = 8192.0; break;
+ case 14: gain = 16384.0; break;
+ case 15: gain = 32768.0; break;
+ case 16: gain = 65536.0; break;
+ case 17: gain = 131072.0; break;
+ case 18: gain = 262144.0; break;
+ case 19: gain = 524288.0; break;
+ case 20: gain = 1048576.0; break;
+ case 21: gain = 2097152.0; break;
+ case 22: gain = 4194304.0; break;
+ case 23: gain = 8388608.0; break;
+ case 24: gain = 16777216.0; break;
+ case 25: gain = 33554432.0; break;
+ case 26: gain = 67108864.0; break;
+ case 27: gain = 134217728.0; break;
+ case 28: gain = 268435456.0; break;
+ case 29: gain = 536870912.0; break;
+ case 30: gain = 1073741824.0; break;
+ case 31: gain = 2147483648.0; break;
+ case 32: gain = 4294967296.0; break;
+ }
+ //we are directly punching in the gain values rather than calculating them
+
+ while (--sampleFrames >= 0)
+ {
+ long double inputSampleL = *in1 + (gain-1);
+ long double inputSampleR = *in2 + (gain-1);
+
+
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo;
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo;
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+
+
+
+ inputSampleL = (float)inputSampleL; //equivalent of 'floor' for 32 bit floating point
+ inputSampleR = (float)inputSampleR; //equivalent of 'floor' for 32 bit floating point
+ //We do that separately, we're truncating to floating point WHILE heavily offset.
+
+ //note for 64 bit version: this is not for actually dithering 64 bit floats!
+ //This is specifically for demonstrating the sound of 32 bit floating point dither
+ //even over a 64 bit buss. Therefore it should be using float, above!
+
+ *out1 = inputSampleL - (gain-1);
+ *out2 = inputSampleR - (gain-1);
+
+ *in1++;
+ *in2++;
+ *out1++;
+ *out2++;
+ }
+}
diff --git a/plugins/LinuxVST/src/Drive/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Drive/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Drive/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Drive/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Drive/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..da1c31d
--- /dev/null
+++ b/plugins/LinuxVST/src/Drive/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Drive/Drive.cpp b/plugins/LinuxVST/src/Drive/Drive.cpp
index 35d0594..ac5f228 100755
--- a/plugins/LinuxVST/src/Drive/Drive.cpp
+++ b/plugins/LinuxVST/src/Drive/Drive.cpp
@@ -20,12 +20,9 @@ Drive::Drive(audioMasterCallback audioMaster) :
iirSampleBL = 0.0;
iirSampleAR = 0.0;
iirSampleBR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Drive/Drive.h b/plugins/LinuxVST/src/Drive/Drive.h
index c7039c5..525a09e 100755
--- a/plugins/LinuxVST/src/Drive/Drive.h
+++ b/plugins/LinuxVST/src/Drive/Drive.h
@@ -55,17 +55,14 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double iirSampleAL;
double iirSampleBL;
double iirSampleAR;
double iirSampleBR;
-
+ bool fpFlip;
float A;
float B;
float C;
diff --git a/plugins/LinuxVST/src/Drive/DriveProc.cpp b/plugins/LinuxVST/src/Drive/DriveProc.cpp
index 3670e85..074ccfd 100755
--- a/plugins/LinuxVST/src/Drive/DriveProc.cpp
+++ b/plugins/LinuxVST/src/Drive/DriveProc.cpp
@@ -26,9 +26,6 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double glitch = 0.60;
double out;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -95,6 +92,7 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR -= iirSampleBR;
}
//highpass section
+ fpFlip = !fpFlip;
if (inputSampleL > 1.0) inputSampleL = 1.0;
@@ -129,25 +127,14 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -178,9 +165,6 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double glitch = 0.60;
double out;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -247,6 +231,7 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR -= iirSampleBR;
}
//highpass section
+ fpFlip = !fpFlip;
if (inputSampleL > 1.0) inputSampleL = 1.0;
@@ -281,25 +266,16 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/DrumSlam/DrumSlam.cpp b/plugins/LinuxVST/src/DrumSlam/DrumSlam.cpp
index 8a6ae7b..5b88619 100755
--- a/plugins/LinuxVST/src/DrumSlam/DrumSlam.cpp
+++ b/plugins/LinuxVST/src/DrumSlam/DrumSlam.cpp
@@ -35,12 +35,9 @@ DrumSlam::DrumSlam(audioMasterCallback audioMaster) :
iirSampleGR = 0.0;
iirSampleHR = 0.0;
lastSampleR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/DrumSlam/DrumSlam.h b/plugins/LinuxVST/src/DrumSlam/DrumSlam.h
index 5ec2fda..418282d 100755
--- a/plugins/LinuxVST/src/DrumSlam/DrumSlam.h
+++ b/plugins/LinuxVST/src/DrumSlam/DrumSlam.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double iirSampleAL;
@@ -80,7 +77,7 @@ private:
double iirSampleGR;
double iirSampleHR;
double lastSampleR;
-
+ bool fpFlip;
float A;
float B;
float C;
diff --git a/plugins/LinuxVST/src/DrumSlam/DrumSlamProc.cpp b/plugins/LinuxVST/src/DrumSlam/DrumSlamProc.cpp
index 171b353..2e86142 100755
--- a/plugins/LinuxVST/src/DrumSlam/DrumSlamProc.cpp
+++ b/plugins/LinuxVST/src/DrumSlam/DrumSlamProc.cpp
@@ -25,8 +25,6 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample
double out = B;
double wet = C;
double dry = 1.0 - wet;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -125,6 +123,8 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample
highSampleL = inputSampleL - iirSampleHL;
highSampleR = inputSampleR - iirSampleHR;
}
+ fpFlip = !fpFlip;
+
//generate the tone bands we're using
if (lowSampleL > 1.0) {lowSampleL = 1.0;}
if (lowSampleL < -1.0) {lowSampleL = -1.0;}
@@ -219,26 +219,14 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -268,8 +256,6 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double out = B;
double wet = C;
double dry = 1.0 - wet;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -368,6 +354,8 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3
highSampleL = inputSampleL - iirSampleHL;
highSampleR = inputSampleR - iirSampleHR;
}
+ fpFlip = !fpFlip;
+
//generate the tone bands we're using
if (lowSampleL > 1.0) {lowSampleL = 1.0;}
if (lowSampleL < -1.0) {lowSampleL = -1.0;}
@@ -462,26 +450,16 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/DubCenter/DubCenterProc.cpp b/plugins/LinuxVST/src/DubCenter/DubCenterProc.cpp
index 75c162b..b0c49a3 100755
--- a/plugins/LinuxVST/src/DubCenter/DubCenterProc.cpp
+++ b/plugins/LinuxVST/src/DubCenter/DubCenterProc.cpp
@@ -306,18 +306,14 @@ void DubCenter::processReplacing(float **inputs, float **outputs, VstInt32 sampl
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -327,12 +323,6 @@ void DubCenter::processReplacing(float **inputs, float **outputs, VstInt32 sampl
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -633,18 +623,16 @@ void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -654,10 +642,4 @@ void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/DubSub/DubSubProc.cpp b/plugins/LinuxVST/src/DubSub/DubSubProc.cpp
index 037480c..7a0349d 100755
--- a/plugins/LinuxVST/src/DubSub/DubSubProc.cpp
+++ b/plugins/LinuxVST/src/DubSub/DubSubProc.cpp
@@ -392,18 +392,14 @@ void DubSub::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -413,12 +409,6 @@ void DubSub::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -805,18 +795,16 @@ void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -826,10 +814,4 @@ void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/DustBunny/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/DustBunny/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/DustBunny/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/DustBunny/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/DustBunny/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..03ccec9
--- /dev/null
+++ b/plugins/LinuxVST/src/DustBunny/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/EQ/EQ.cpp b/plugins/LinuxVST/src/EQ/EQ.cpp
index ebdadaa..f2e4e01 100755
--- a/plugins/LinuxVST/src/EQ/EQ.cpp
+++ b/plugins/LinuxVST/src/EQ/EQ.cpp
@@ -111,11 +111,8 @@ EQ::EQ(audioMasterCallback audioMaster) :
flip = false;
flipthree = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/EQ/EQ.h b/plugins/LinuxVST/src/EQ/EQ.h
index 4317a2d..26fade4 100755
--- a/plugins/LinuxVST/src/EQ/EQ.h
+++ b/plugins/LinuxVST/src/EQ/EQ.h
@@ -59,11 +59,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/LinuxVST/src/EQ/EQProc.cpp b/plugins/LinuxVST/src/EQ/EQProc.cpp
index 6d994a9..917dc7e 100755
--- a/plugins/LinuxVST/src/EQ/EQProc.cpp
+++ b/plugins/LinuxVST/src/EQ/EQProc.cpp
@@ -20,9 +20,6 @@ void EQ::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames
overallscale = getSampleRate();
compscale = compscale * overallscale;
//compscale is the one that's 1 or something like 2.2 for 96K rates
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -434,25 +431,14 @@ void EQ::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames
inputSampleR *= outputgain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -477,9 +463,6 @@ void EQ::processDoubleReplacing(double **inputs, double **outputs, VstInt32 samp
overallscale = getSampleRate();
compscale = compscale * overallscale;
//compscale is the one that's 1 or something like 2.2 for 96K rates
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -891,25 +874,16 @@ void EQ::processDoubleReplacing(double **inputs, double **outputs, VstInt32 samp
inputSampleR *= outputgain;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/EdIsDim/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/EdIsDim/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/EdIsDim/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/EdIsDim/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/EdIsDim/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..d170019
--- /dev/null
+++ b/plugins/LinuxVST/src/EdIsDim/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/EdIsDim/EdIsDim.cpp b/plugins/LinuxVST/src/EdIsDim/EdIsDim.cpp
index 6af5dd4..eb6abd3 100755
--- a/plugins/LinuxVST/src/EdIsDim/EdIsDim.cpp
+++ b/plugins/LinuxVST/src/EdIsDim/EdIsDim.cpp
@@ -13,11 +13,8 @@ EdIsDim::EdIsDim(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/EdIsDim/EdIsDim.h b/plugins/LinuxVST/src/EdIsDim/EdIsDim.h
index 8c51883..4f62705 100755
--- a/plugins/LinuxVST/src/EdIsDim/EdIsDim.h
+++ b/plugins/LinuxVST/src/EdIsDim/EdIsDim.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/EdIsDim/EdIsDimProc.cpp b/plugins/LinuxVST/src/EdIsDim/EdIsDimProc.cpp
index 8ee927d..0d033eb 100755
--- a/plugins/LinuxVST/src/EdIsDim/EdIsDimProc.cpp
+++ b/plugins/LinuxVST/src/EdIsDim/EdIsDimProc.cpp
@@ -14,9 +14,6 @@ void EdIsDim::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -75,25 +72,14 @@ void EdIsDim::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
mid = (inputSampleL+inputSampleR)/2.0;
side = (inputSampleL-inputSampleR)/2.0;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = mid;
*out2 = side;
@@ -112,9 +98,6 @@ void EdIsDim::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -174,25 +157,16 @@ void EdIsDim::processDoubleReplacing(double **inputs, double **outputs, VstInt32
mid = (inputSampleL+inputSampleR)/2.0;
side = (inputSampleL-inputSampleR)/2.0;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = mid;
*out2 = side;
diff --git a/plugins/LinuxVST/src/ElectroHat/ElectroHat.cpp b/plugins/LinuxVST/src/ElectroHat/ElectroHat.cpp
index 33d1058..6be41e4 100755
--- a/plugins/LinuxVST/src/ElectroHat/ElectroHat.cpp
+++ b/plugins/LinuxVST/src/ElectroHat/ElectroHat.cpp
@@ -25,11 +25,8 @@ ElectroHat::ElectroHat(audioMasterCallback audioMaster) :
lok = 0;
flip = true;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/ElectroHat/ElectroHat.h b/plugins/LinuxVST/src/ElectroHat/ElectroHat.h
index e8aa325..85315cd 100755
--- a/plugins/LinuxVST/src/ElectroHat/ElectroHat.h
+++ b/plugins/LinuxVST/src/ElectroHat/ElectroHat.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double storedSampleL;
diff --git a/plugins/LinuxVST/src/ElectroHat/ElectroHatProc.cpp b/plugins/LinuxVST/src/ElectroHat/ElectroHatProc.cpp
index 69b1a00..ee5a307 100755
--- a/plugins/LinuxVST/src/ElectroHat/ElectroHatProc.cpp
+++ b/plugins/LinuxVST/src/ElectroHat/ElectroHatProc.cpp
@@ -20,9 +20,6 @@ void ElectroHat::processReplacing(float **inputs, float **outputs, VstInt32 samp
bool highSample = false;
if (getSampleRate() > 64000) highSample = true;
//we will go to another dither for 88 and 96K
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -126,25 +123,14 @@ void ElectroHat::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -169,9 +155,6 @@ void ElectroHat::processDoubleReplacing(double **inputs, double **outputs, VstIn
bool highSample = false;
if (getSampleRate() > 64000) highSample = true;
//we will go to another dither for 88 and 96K
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -275,25 +258,16 @@ void ElectroHat::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Energy/EnergyProc.cpp b/plugins/LinuxVST/src/Energy/EnergyProc.cpp
index a72b868..a0a86f8 100755
--- a/plugins/LinuxVST/src/Energy/EnergyProc.cpp
+++ b/plugins/LinuxVST/src/Energy/EnergyProc.cpp
@@ -742,18 +742,14 @@ void Energy::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
//we don't need a drySample because we never touched inputSample
//so, this provides the inv/dry/wet control all by itself
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -763,12 +759,6 @@ void Energy::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -1506,18 +1496,16 @@ void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//we don't need a drySample because we never touched inputSample
//so, this provides the inv/dry/wet control all by itself
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -1527,10 +1515,4 @@ void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/Ensemble/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Ensemble/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Ensemble/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Ensemble/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Ensemble/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..6022e68
--- /dev/null
+++ b/plugins/LinuxVST/src/Ensemble/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Ensemble/Ensemble.cpp b/plugins/LinuxVST/src/Ensemble/Ensemble.cpp
index be624b2..b90bf6e 100755
--- a/plugins/LinuxVST/src/Ensemble/Ensemble.cpp
+++ b/plugins/LinuxVST/src/Ensemble/Ensemble.cpp
@@ -28,12 +28,9 @@ Ensemble::Ensemble(audioMasterCallback audioMaster) :
airEvenR = 0.0;
airOddR = 0.0;
airFactorR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Ensemble/Ensemble.h b/plugins/LinuxVST/src/Ensemble/Ensemble.h
index 32ba8c0..7697d93 100755
--- a/plugins/LinuxVST/src/Ensemble/Ensemble.h
+++ b/plugins/LinuxVST/src/Ensemble/Ensemble.h
@@ -55,11 +55,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
const static int totalsamples = 65540;
float dL[totalsamples];
@@ -74,7 +71,7 @@ private:
double airEvenR;
double airOddR;
double airFactorR;
-
+ bool fpFlip;
float A;
float B;
float C;
diff --git a/plugins/LinuxVST/src/Ensemble/EnsembleProc.cpp b/plugins/LinuxVST/src/Ensemble/EnsembleProc.cpp
index 679e868..e9a3a43 100755
--- a/plugins/LinuxVST/src/Ensemble/EnsembleProc.cpp
+++ b/plugins/LinuxVST/src/Ensemble/EnsembleProc.cpp
@@ -37,9 +37,6 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample
double tempL;
double tempR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -117,7 +114,8 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample
airPrevR = inputSampleR;
inputSampleR += (airFactorR*brighten);
//air, compensates for loss of highs in flanger's interpolation
-
+ fpFlip = !fpFlip;
+
if (gcount < 1 || gcount > 32767) {gcount = 32767;}
count = gcount;
dL[count+32767] = dL[count] = tempL = inputSampleL;
@@ -155,25 +153,14 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -215,9 +202,6 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double tempL;
double tempR;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -295,6 +279,7 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3
airPrevR = inputSampleR;
inputSampleR += (airFactorR*brighten);
//air, compensates for loss of highs in flanger's interpolation
+ fpFlip = !fpFlip;
if (gcount < 1 || gcount > 32767) {gcount = 32767;}
count = gcount;
@@ -333,25 +318,16 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/EveryTrim/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/EveryTrim/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/EveryTrim/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/EveryTrim/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/EveryTrim/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..649aa5c
--- /dev/null
+++ b/plugins/LinuxVST/src/EveryTrim/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/EveryTrim/EveryTrim.cpp b/plugins/LinuxVST/src/EveryTrim/EveryTrim.cpp
index 1e81d35..b0a98d4 100755
--- a/plugins/LinuxVST/src/EveryTrim/EveryTrim.cpp
+++ b/plugins/LinuxVST/src/EveryTrim/EveryTrim.cpp
@@ -17,11 +17,8 @@ EveryTrim::EveryTrim(audioMasterCallback audioMaster) :
C = 0.5;
D = 0.5;
E = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/EveryTrim/EveryTrim.h b/plugins/LinuxVST/src/EveryTrim/EveryTrim.h
index 28d9c27..4efc3cd 100755
--- a/plugins/LinuxVST/src/EveryTrim/EveryTrim.h
+++ b/plugins/LinuxVST/src/EveryTrim/EveryTrim.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/EveryTrim/EveryTrimProc.cpp b/plugins/LinuxVST/src/EveryTrim/EveryTrimProc.cpp
index 30d764f..3c30eda 100755
--- a/plugins/LinuxVST/src/EveryTrim/EveryTrimProc.cpp
+++ b/plugins/LinuxVST/src/EveryTrim/EveryTrimProc.cpp
@@ -14,9 +14,6 @@ void EveryTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double leftgain = pow(10.0,((A*24.0)-12.0)/20.0);
double rightgain = pow(10.0,((B*24.0)-12.0)/20.0);
@@ -83,25 +80,14 @@ void EveryTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -120,9 +106,6 @@ void EveryTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double leftgain = pow(10.0,((A*24.0)-12.0)/20.0);
double rightgain = pow(10.0,((B*24.0)-12.0)/20.0);
@@ -189,25 +172,16 @@ void EveryTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/FathomFive/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/FathomFive/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/FathomFive/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/FathomFive/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/FathomFive/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..42015e9
--- /dev/null
+++ b/plugins/LinuxVST/src/FathomFive/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/FathomFive/FathomFive.cpp b/plugins/LinuxVST/src/FathomFive/FathomFive.cpp
index 8cd3f52..fd04b6d 100755
--- a/plugins/LinuxVST/src/FathomFive/FathomFive.cpp
+++ b/plugins/LinuxVST/src/FathomFive/FathomFive.cpp
@@ -100,16 +100,6 @@ void FathomFive::setParameter(VstInt32 index, float value) {
//variables can also be set in the processreplacing loop, and there they'll be set every buffersize
//here they're set when a parameter's actually changed, which should be less frequent, but
//you must use global variables in the FathomFive.h file to do it.
-// switch((VstInt32)( D * 3.999 ))
-// {
-// case 0: fpFlip = true; break; //choice A
-// case 1: fpFlip = false; break; //choice B
-// case 2: break; //choice C
-// case 3: break; //choice D
-// default: break; //should not happen
-// }
- //this relates to using D as a 'popup' and changing things based on that switch.
- //we are using fpFlip just because it's already there globally, as an example.
}
float FathomFive::getParameter(VstInt32 index) {
diff --git a/plugins/LinuxVST/src/Floor/FloorProc.cpp b/plugins/LinuxVST/src/Floor/FloorProc.cpp
index 69a2ccb..865446b 100755
--- a/plugins/LinuxVST/src/Floor/FloorProc.cpp
+++ b/plugins/LinuxVST/src/Floor/FloorProc.cpp
@@ -247,18 +247,14 @@ void Floor::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -268,12 +264,6 @@ void Floor::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -516,18 +506,16 @@ void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -537,10 +525,4 @@ void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/Fracture/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Fracture/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Fracture/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Fracture/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Fracture/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..f5e4242
--- /dev/null
+++ b/plugins/LinuxVST/src/Fracture/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Fracture/Fracture.cpp b/plugins/LinuxVST/src/Fracture/Fracture.cpp
index 255475a..03f3b19 100755
--- a/plugins/LinuxVST/src/Fracture/Fracture.cpp
+++ b/plugins/LinuxVST/src/Fracture/Fracture.cpp
@@ -16,11 +16,8 @@ Fracture::Fracture(audioMasterCallback audioMaster) :
B = 0.5; //2 from 1 to 3: (B*2.999)+1
C = 1.0;
D = 1.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Fracture/Fracture.h b/plugins/LinuxVST/src/Fracture/Fracture.h
index 659f94b..49d2718 100755
--- a/plugins/LinuxVST/src/Fracture/Fracture.h
+++ b/plugins/LinuxVST/src/Fracture/Fracture.h
@@ -55,11 +55,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Fracture/FractureProc.cpp b/plugins/LinuxVST/src/Fracture/FractureProc.cpp
index 8e217d8..5c1aaa9 100755
--- a/plugins/LinuxVST/src/Fracture/FractureProc.cpp
+++ b/plugins/LinuxVST/src/Fracture/FractureProc.cpp
@@ -14,9 +14,6 @@ void Fracture::processReplacing(float **inputs, float **outputs, VstInt32 sample
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double density = A*4;
double fracture = (((B*2.999)+1)*3.14159265358979);
@@ -101,25 +98,14 @@ void Fracture::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (drySampleL * dry)+(inputSampleL * wet);
inputSampleR = (drySampleR * dry)+(inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -141,9 +127,6 @@ void Fracture::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double density = A*4;
double fracture = (((B*2.999)+1)*3.14159265358979);
@@ -228,25 +211,16 @@ void Fracture::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (drySampleL * dry)+(inputSampleL * wet);
inputSampleR = (drySampleR * dry)+(inputSampleR * wet);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/FromTape/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/FromTape/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/FromTape/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/FromTape/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/FromTape/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..f635737
--- /dev/null
+++ b/plugins/LinuxVST/src/FromTape/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/FromTape/FromTape.cpp b/plugins/LinuxVST/src/FromTape/FromTape.cpp
index 55c5ced..40b7876 100755
--- a/plugins/LinuxVST/src/FromTape/FromTape.cpp
+++ b/plugins/LinuxVST/src/FromTape/FromTape.cpp
@@ -82,11 +82,8 @@ FromTape::FromTape(audioMasterCallback audioMaster) :
flip = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/FromTape/FromTape.h b/plugins/LinuxVST/src/FromTape/FromTape.h
index 376b767..40efabc 100755
--- a/plugins/LinuxVST/src/FromTape/FromTape.h
+++ b/plugins/LinuxVST/src/FromTape/FromTape.h
@@ -120,11 +120,8 @@ private:
double iirSampleYR;
double iirSampleZR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/FromTape/FromTapeProc.cpp b/plugins/LinuxVST/src/FromTape/FromTapeProc.cpp
index 42753e5..2d268ef 100755
--- a/plugins/LinuxVST/src/FromTape/FromTapeProc.cpp
+++ b/plugins/LinuxVST/src/FromTape/FromTapeProc.cpp
@@ -37,9 +37,6 @@ void FromTape::processReplacing(float **inputs, float **outputs, VstInt32 sample
double drySampleR;
double randy;
double invrandy;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -224,25 +221,14 @@ void FromTape::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -284,9 +270,6 @@ void FromTape::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double drySampleR;
double randy;
double invrandy;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -471,25 +454,16 @@ void FromTape::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Gatelope/GatelopeProc.cpp b/plugins/LinuxVST/src/Gatelope/GatelopeProc.cpp
index b32bddb..f429042 100755
--- a/plugins/LinuxVST/src/Gatelope/GatelopeProc.cpp
+++ b/plugins/LinuxVST/src/Gatelope/GatelopeProc.cpp
@@ -196,18 +196,14 @@ void Gatelope::processReplacing(float **inputs, float **outputs, VstInt32 sample
flip = !flip;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -217,12 +213,6 @@ void Gatelope::processReplacing(float **inputs, float **outputs, VstInt32 sample
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -414,18 +404,16 @@ void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt3
flip = !flip;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -435,10 +423,4 @@ void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt3
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/Golem/Golem.cpp b/plugins/LinuxVST/src/Golem/Golem.cpp
index 8f63b48..c99c5cd 100755
--- a/plugins/LinuxVST/src/Golem/Golem.cpp
+++ b/plugins/LinuxVST/src/Golem/Golem.cpp
@@ -17,10 +17,8 @@ Golem::Golem(audioMasterCallback audioMaster) :
C = 0.0;
for(count = 0; count < 4098; count++) {p[count] = 0.0;}
count = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
flip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/LinuxVST/src/Golem/Golem.h b/plugins/LinuxVST/src/Golem/Golem.h
index 8bb81d8..e02ab78 100755
--- a/plugins/LinuxVST/src/Golem/Golem.h
+++ b/plugins/LinuxVST/src/Golem/Golem.h
@@ -54,10 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
//default stuff
double p[4099];
diff --git a/plugins/LinuxVST/src/Golem/GolemProc.cpp b/plugins/LinuxVST/src/Golem/GolemProc.cpp
index 9235869..1d7e9f5 100755
--- a/plugins/LinuxVST/src/Golem/GolemProc.cpp
+++ b/plugins/LinuxVST/src/Golem/GolemProc.cpp
@@ -14,9 +14,6 @@ void Golem::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int phase = (int)((C * 5.999)+1);
double balance = ((A*2.0)-1.0) / 2.0;
double gainL = 0.5 - balance;
@@ -115,25 +112,14 @@ void Golem::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR = inputSampleL;
//the output is totally mono
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -152,9 +138,6 @@ void Golem::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int phase = (int)((C * 5.999)+1);
double balance = ((A*2.0)-1.0) / 2.0;
double gainL = 0.5 - balance;
@@ -253,25 +236,16 @@ void Golem::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR = inputSampleL;
//the output is totally mono
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/GrooveWear/GrooveWear.cpp b/plugins/LinuxVST/src/GrooveWear/GrooveWear.cpp
index e553daa..cbe1fc5 100644..100755
--- a/plugins/LinuxVST/src/GrooveWear/GrooveWear.cpp
+++ b/plugins/LinuxVST/src/GrooveWear/GrooveWear.cpp
@@ -36,11 +36,8 @@ GrooveWear::GrooveWear(audioMasterCallback audioMaster) :
cMidPrevR = 0.0;
dMidPrevR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/GrooveWear/GrooveWear.h b/plugins/LinuxVST/src/GrooveWear/GrooveWear.h
index 7b933c2..4bf9745 100644..100755
--- a/plugins/LinuxVST/src/GrooveWear/GrooveWear.h
+++ b/plugins/LinuxVST/src/GrooveWear/GrooveWear.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double aMidL[21];
diff --git a/plugins/LinuxVST/src/GrooveWear/GrooveWearProc.cpp b/plugins/LinuxVST/src/GrooveWear/GrooveWearProc.cpp
index a22f6df..e663203 100644..100755
--- a/plugins/LinuxVST/src/GrooveWear/GrooveWearProc.cpp
+++ b/plugins/LinuxVST/src/GrooveWear/GrooveWearProc.cpp
@@ -14,9 +14,6 @@ void GrooveWear::processReplacing(float **inputs, float **outputs, VstInt32 samp
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = (pow(A,2)*19.0)+1.0;
double gain = overallscale;
@@ -433,25 +430,14 @@ void GrooveWear::processReplacing(float **inputs, float **outputs, VstInt32 samp
drySampleR = inputSampleR;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -470,9 +456,6 @@ void GrooveWear::processDoubleReplacing(double **inputs, double **outputs, VstIn
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = (pow(A,2)*19.0)+1.0;
double gain = overallscale;
@@ -889,25 +872,16 @@ void GrooveWear::processDoubleReplacing(double **inputs, double **outputs, VstIn
drySampleR = inputSampleR;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/GuitarConditioner/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/GuitarConditioner/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/GuitarConditioner/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/GuitarConditioner/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/GuitarConditioner/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..9e37109
--- /dev/null
+++ b/plugins/LinuxVST/src/GuitarConditioner/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.cpp b/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.cpp
index 8f3ccfc..b0388ab 100755
--- a/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.cpp
+++ b/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.cpp
@@ -12,12 +12,9 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new G
GuitarConditioner::GuitarConditioner(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
-
lastSampleTL = 0.0;
lastSampleBL = 0.0; //for Slews. T for treble, B for bass
iirSampleTAL = 0.0;
diff --git a/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.h b/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.h
index 7bd73ab..3be09e1 100755
--- a/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.h
+++ b/plugins/LinuxVST/src/GuitarConditioner/GuitarConditioner.h
@@ -49,13 +49,10 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
-
+ bool fpFlip;
double lastSampleTL;
double lastSampleBL; //for Slews
double iirSampleTAL;
diff --git a/plugins/LinuxVST/src/GuitarConditioner/GuitarConditionerProc.cpp b/plugins/LinuxVST/src/GuitarConditioner/GuitarConditionerProc.cpp
index 83970f2..b25d600 100755
--- a/plugins/LinuxVST/src/GuitarConditioner/GuitarConditionerProc.cpp
+++ b/plugins/LinuxVST/src/GuitarConditioner/GuitarConditionerProc.cpp
@@ -17,9 +17,6 @@ void GuitarConditioner::processReplacing(float **inputs, float **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -164,26 +161,18 @@ void GuitarConditioner::processReplacing(float **inputs, float **outputs, VstInt
lastSampleBR = bassR; //bassR slew
inputSampleL = trebleL + bassL; //final merge
- inputSampleR = trebleR + bassR; //final merge
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
+ inputSampleR = trebleR + bassR; //final merge
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -205,9 +194,6 @@ void GuitarConditioner::processDoubleReplacing(double **inputs, double **outputs
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -353,26 +339,19 @@ void GuitarConditioner::processDoubleReplacing(double **inputs, double **outputs
lastSampleBR = bassR; //bassR slew
inputSampleL = trebleL + bassL; //final merge
- inputSampleR = trebleR + bassR; //final merge
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
+ inputSampleR = trebleR + bassR; //final merge
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/HardVacuum/HardVacuum.cpp b/plugins/LinuxVST/src/HardVacuum/HardVacuum.cpp
index 2ad1a4a..9c14f89 100755
--- a/plugins/LinuxVST/src/HardVacuum/HardVacuum.cpp
+++ b/plugins/LinuxVST/src/HardVacuum/HardVacuum.cpp
@@ -19,11 +19,8 @@ HardVacuum::HardVacuum(audioMasterCallback audioMaster) :
E = 1.0;
lastSampleL = 0.0;
lastSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/HardVacuum/HardVacuum.h b/plugins/LinuxVST/src/HardVacuum/HardVacuum.h
index 6321df6..7f4c098 100755
--- a/plugins/LinuxVST/src/HardVacuum/HardVacuum.h
+++ b/plugins/LinuxVST/src/HardVacuum/HardVacuum.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/LinuxVST/src/HardVacuum/HardVacuumProc.cpp b/plugins/LinuxVST/src/HardVacuum/HardVacuumProc.cpp
index f8fe4fd..e0e07e2 100755
--- a/plugins/LinuxVST/src/HardVacuum/HardVacuumProc.cpp
+++ b/plugins/LinuxVST/src/HardVacuum/HardVacuumProc.cpp
@@ -33,9 +33,6 @@ void HardVacuum::processReplacing(float **inputs, float **outputs, VstInt32 samp
double skewL;
double skewR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -176,25 +173,14 @@ void HardVacuum::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -232,9 +218,6 @@ void HardVacuum::processDoubleReplacing(double **inputs, double **outputs, VstIn
double skewL;
double skewR;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -376,25 +359,16 @@ void HardVacuum::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/HermeTrim/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/HermeTrim/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/HermeTrim/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/HermeTrim/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/HermeTrim/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..d06b803
--- /dev/null
+++ b/plugins/LinuxVST/src/HermeTrim/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/HermeTrim/HermeTrim.cpp b/plugins/LinuxVST/src/HermeTrim/HermeTrim.cpp
index 562df2c..117cc45 100755
--- a/plugins/LinuxVST/src/HermeTrim/HermeTrim.cpp
+++ b/plugins/LinuxVST/src/HermeTrim/HermeTrim.cpp
@@ -17,11 +17,8 @@ HermeTrim::HermeTrim(audioMasterCallback audioMaster) :
C = 0.5;
D = 0.5;
E = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/HermeTrim/HermeTrim.h b/plugins/LinuxVST/src/HermeTrim/HermeTrim.h
index b8503ca..f0bc8ed 100755
--- a/plugins/LinuxVST/src/HermeTrim/HermeTrim.h
+++ b/plugins/LinuxVST/src/HermeTrim/HermeTrim.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/HermeTrim/HermeTrimProc.cpp b/plugins/LinuxVST/src/HermeTrim/HermeTrimProc.cpp
index d920843..66d3144 100755
--- a/plugins/LinuxVST/src/HermeTrim/HermeTrimProc.cpp
+++ b/plugins/LinuxVST/src/HermeTrim/HermeTrimProc.cpp
@@ -14,9 +14,6 @@ void HermeTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double leftgain = pow(10.0,((A*3.0)-1.5)/20.0);
double rightgain = pow(10.0,((B*3.0)-1.5)/20.0);
@@ -83,25 +80,14 @@ void HermeTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -120,9 +106,6 @@ void HermeTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double leftgain = pow(10.0,((A*3.0)-1.5)/20.0);
double rightgain = pow(10.0,((B*3.0)-1.5)/20.0);
@@ -189,25 +172,16 @@ void HermeTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Hermepass/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Hermepass/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Hermepass/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Hermepass/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Hermepass/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..2a195c6
--- /dev/null
+++ b/plugins/LinuxVST/src/Hermepass/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Hermepass/Hermepass.cpp b/plugins/LinuxVST/src/Hermepass/Hermepass.cpp
index 3bfb1aa..4e4a532 100755
--- a/plugins/LinuxVST/src/Hermepass/Hermepass.cpp
+++ b/plugins/LinuxVST/src/Hermepass/Hermepass.cpp
@@ -32,12 +32,9 @@ Hermepass::Hermepass(audioMasterCallback audioMaster) :
iirFR = 0.0;
iirGR = 0.0;
iirHR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Hermepass/Hermepass.h b/plugins/LinuxVST/src/Hermepass/Hermepass.h
index 4f29497..1000bb9 100755
--- a/plugins/LinuxVST/src/Hermepass/Hermepass.h
+++ b/plugins/LinuxVST/src/Hermepass/Hermepass.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double iirAL;
double iirBL; //first stage is the flipping one, for lowest slope. It is always engaged, and is the highest one
@@ -76,7 +73,7 @@ private:
double iirFR; //our slope control will have a pow() on it so that the high orders are way to the right side
double iirGR;
double iirHR; //seven poles max, and the final pole is always at 20hz directly.
-
+ bool fpFlip;
float A;
diff --git a/plugins/LinuxVST/src/Hermepass/HermepassProc.cpp b/plugins/LinuxVST/src/Hermepass/HermepassProc.cpp
index 01b35aa..fddffe3 100755
--- a/plugins/LinuxVST/src/Hermepass/HermepassProc.cpp
+++ b/plugins/LinuxVST/src/Hermepass/HermepassProc.cpp
@@ -17,10 +17,8 @@ void Hermepass::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ long double fpNew = 1.0 - fpOld;
double rangescale = 0.1 / overallscale;
double cutoff = pow(A,3);
@@ -175,26 +173,17 @@ void Hermepass::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR -= correction;
//end R channel
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -216,10 +205,8 @@ void Hermepass::processDoubleReplacing(double **inputs, double **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
long double fpOld = 0.618033988749894848204586; //golden ratio!
long double fpNew = 1.0 - fpOld;
-
double rangescale = 0.1 / overallscale;
double cutoff = pow(A,3);
@@ -374,26 +361,19 @@ void Hermepass::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR -= correction;
//end R channel
-
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/HighImpact/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/HighImpact/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/HighImpact/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/HighImpact/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/HighImpact/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..56b69ec
--- /dev/null
+++ b/plugins/LinuxVST/src/HighImpact/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/HighImpact/HighImpact.cpp b/plugins/LinuxVST/src/HighImpact/HighImpact.cpp
index 0944b18..960d80c 100755
--- a/plugins/LinuxVST/src/HighImpact/HighImpact.cpp
+++ b/plugins/LinuxVST/src/HighImpact/HighImpact.cpp
@@ -17,11 +17,8 @@ HighImpact::HighImpact(audioMasterCallback audioMaster) :
C = 0.0;
lastSampleL = 0.0;
lastSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/HighImpact/HighImpact.h b/plugins/LinuxVST/src/HighImpact/HighImpact.h
index 9c7a4a0..a57230b 100755
--- a/plugins/LinuxVST/src/HighImpact/HighImpact.h
+++ b/plugins/LinuxVST/src/HighImpact/HighImpact.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/LinuxVST/src/HighImpact/HighImpactProc.cpp b/plugins/LinuxVST/src/HighImpact/HighImpactProc.cpp
index 037bbe9..f24804a 100755
--- a/plugins/LinuxVST/src/HighImpact/HighImpactProc.cpp
+++ b/plugins/LinuxVST/src/HighImpact/HighImpactProc.cpp
@@ -14,9 +14,6 @@ void HighImpact::processReplacing(float **inputs, float **outputs, VstInt32 samp
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -161,25 +158,14 @@ void HighImpact::processReplacing(float **inputs, float **outputs, VstInt32 samp
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -201,9 +187,6 @@ void HighImpact::processDoubleReplacing(double **inputs, double **outputs, VstIn
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -348,25 +331,16 @@ void HighImpact::processDoubleReplacing(double **inputs, double **outputs, VstIn
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Highpass/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Highpass/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Highpass/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Highpass/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Highpass/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..9f7300c
--- /dev/null
+++ b/plugins/LinuxVST/src/Highpass/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Highpass/Highpass.cpp b/plugins/LinuxVST/src/Highpass/Highpass.cpp
index ed43f9d..86ebe24 100755
--- a/plugins/LinuxVST/src/Highpass/Highpass.cpp
+++ b/plugins/LinuxVST/src/Highpass/Highpass.cpp
@@ -19,10 +19,8 @@ Highpass::Highpass(audioMasterCallback audioMaster) :
iirSampleBL = 0.0;
iirSampleAR = 0.0;
iirSampleBR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/LinuxVST/src/Highpass/Highpass.h b/plugins/LinuxVST/src/Highpass/Highpass.h
index 03d8609..673f951 100755
--- a/plugins/LinuxVST/src/Highpass/Highpass.h
+++ b/plugins/LinuxVST/src/Highpass/Highpass.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
@@ -68,7 +65,7 @@ private:
double iirSampleBL;
double iirSampleAR;
double iirSampleBR;
-
+ bool fpFlip;
};
#endif
diff --git a/plugins/LinuxVST/src/Highpass/HighpassProc.cpp b/plugins/LinuxVST/src/Highpass/HighpassProc.cpp
index b1e7de9..371ed57 100755
--- a/plugins/LinuxVST/src/Highpass/HighpassProc.cpp
+++ b/plugins/LinuxVST/src/Highpass/HighpassProc.cpp
@@ -26,9 +26,6 @@ void Highpass::processReplacing(float **inputs, float **outputs, VstInt32 sample
double inputSampleR;
double outputSampleL;
double outputSampleR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -114,33 +111,21 @@ void Highpass::processReplacing(float **inputs, float **outputs, VstInt32 sample
iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount));
outputSampleR = outputSampleR - iirSampleBR;
}
+ fpFlip = !fpFlip;
if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry);
if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = outputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLA;
-
- fpTemp = outputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = outputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLB;
-
- fpTemp = outputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
@@ -171,9 +156,6 @@ void Highpass::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double inputSampleR;
double outputSampleL;
double outputSampleR;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -259,33 +241,23 @@ void Highpass::processDoubleReplacing(double **inputs, double **outputs, VstInt3
iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount));
outputSampleR = outputSampleR - iirSampleBR;
}
+ fpFlip = !fpFlip;
if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry);
if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = outputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLA;
-
- fpTemp = outputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = outputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLB;
-
- fpTemp = outputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
diff --git a/plugins/LinuxVST/src/Hombre/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Hombre/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Hombre/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Hombre/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Hombre/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..1c81394
--- /dev/null
+++ b/plugins/LinuxVST/src/Hombre/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Hombre/Hombre.cpp b/plugins/LinuxVST/src/Hombre/Hombre.cpp
index 9ef8844..8b03ed1 100755
--- a/plugins/LinuxVST/src/Hombre/Hombre.cpp
+++ b/plugins/LinuxVST/src/Hombre/Hombre.cpp
@@ -17,11 +17,8 @@ Hombre::Hombre(audioMasterCallback audioMaster) :
for(int count = 0; count < 4000; count++) {pL[count] = 0.0; pR[count] = 0.0;}
gcount = 0;
slide = 0.421;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Hombre/Hombre.h b/plugins/LinuxVST/src/Hombre/Hombre.h
index 94e29b1..e23f6f3 100755
--- a/plugins/LinuxVST/src/Hombre/Hombre.h
+++ b/plugins/LinuxVST/src/Hombre/Hombre.h
@@ -58,11 +58,8 @@ private:
double slide;
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Hombre/HombreProc.cpp b/plugins/LinuxVST/src/Hombre/HombreProc.cpp
index 01e08bd..16bf513 100755
--- a/plugins/LinuxVST/src/Hombre/HombreProc.cpp
+++ b/plugins/LinuxVST/src/Hombre/HombreProc.cpp
@@ -17,9 +17,6 @@ void Hombre::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double target = A;
double offsetA;
@@ -134,25 +131,14 @@ void Hombre::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -174,9 +160,6 @@ void Hombre::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double target = A;
double offsetA;
@@ -291,25 +274,16 @@ void Hombre::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/IronOxide5/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/IronOxide5/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/IronOxide5/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/IronOxide5/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/IronOxide5/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..171a825
--- /dev/null
+++ b/plugins/LinuxVST/src/IronOxide5/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/IronOxide5/IronOxide5.cpp b/plugins/LinuxVST/src/IronOxide5/IronOxide5.cpp
index 2d7c84f..914f53b 100755
--- a/plugins/LinuxVST/src/IronOxide5/IronOxide5.cpp
+++ b/plugins/LinuxVST/src/IronOxide5/IronOxide5.cpp
@@ -45,11 +45,8 @@ IronOxide5::IronOxide5(audioMasterCallback audioMaster) :
rateof = 0.5;
nextmax = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/IronOxide5/IronOxide5.h b/plugins/LinuxVST/src/IronOxide5/IronOxide5.h
index a7cad5d..82d4c9a 100755
--- a/plugins/LinuxVST/src/IronOxide5/IronOxide5.h
+++ b/plugins/LinuxVST/src/IronOxide5/IronOxide5.h
@@ -101,11 +101,8 @@ private:
double nextmax;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/IronOxide5/IronOxide5Proc.cpp b/plugins/LinuxVST/src/IronOxide5/IronOxide5Proc.cpp
index c0fbb35..e42d69f 100755
--- a/plugins/LinuxVST/src/IronOxide5/IronOxide5Proc.cpp
+++ b/plugins/LinuxVST/src/IronOxide5/IronOxide5Proc.cpp
@@ -17,9 +17,6 @@ void IronOxide5::processReplacing(float **inputs, float **outputs, VstInt32 samp
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = pow(10.0,((A*36.0)-18.0)/20.0);
double outputgain = pow(10.0,((F*36.0)-18.0)/20.0);
@@ -422,25 +419,14 @@ void IronOxide5::processReplacing(float **inputs, float **outputs, VstInt32 samp
}
//end invdrywet block with outputgain
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -462,9 +448,6 @@ void IronOxide5::processDoubleReplacing(double **inputs, double **outputs, VstIn
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = pow(10.0,((A*36.0)-18.0)/20.0);
double outputgain = pow(10.0,((F*36.0)-18.0)/20.0);
@@ -867,25 +850,16 @@ void IronOxide5::processDoubleReplacing(double **inputs, double **outputs, VstIn
}
//end invdrywet block with outputgain
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/IronOxideClassic/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/IronOxideClassic/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/IronOxideClassic/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/IronOxideClassic/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/IronOxideClassic/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..b85b7c1
--- /dev/null
+++ b/plugins/LinuxVST/src/IronOxideClassic/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.cpp b/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.cpp
index 012d8a3..8ce7103 100755
--- a/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.cpp
+++ b/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.cpp
@@ -22,12 +22,9 @@ IronOxideClassic::IronOxideClassic(audioMasterCallback audioMaster) :
iirSampleAL = iirSampleBL = 0.0;
fastIIRAR = fastIIRBR = slowIIRAR = slowIIRBR = 0.0;
iirSampleAR = iirSampleBR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.h b/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.h
index b7f8bfa..bafb457 100755
--- a/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.h
+++ b/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassic.h
@@ -71,12 +71,9 @@ private:
double slowIIRBR;
int gcount;
-
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassicProc.cpp b/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassicProc.cpp
index c245166..97bbaca 100755
--- a/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassicProc.cpp
+++ b/plugins/LinuxVST/src/IronOxideClassic/IronOxideClassicProc.cpp
@@ -17,9 +17,6 @@ void IronOxideClassic::processReplacing(float **inputs, float **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = pow(10.0,((A*36.0)-18.0)/20.0);
double outputgain = pow(10.0,((C*36.0)-18.0)/20.0);
@@ -343,26 +340,16 @@ void IronOxideClassic::processReplacing(float **inputs, float **outputs, VstInt3
inputSampleL *= outputgain;
inputSampleR *= outputgain;
}
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -384,9 +371,6 @@ void IronOxideClassic::processDoubleReplacing(double **inputs, double **outputs,
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = pow(10.0,((A*36.0)-18.0)/20.0);
double outputgain = pow(10.0,((C*36.0)-18.0)/20.0);
@@ -710,26 +694,18 @@ void IronOxideClassic::processDoubleReplacing(double **inputs, double **outputs,
inputSampleL *= outputgain;
inputSampleR *= outputgain;
}
-
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Logical4/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Logical4/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Logical4/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Logical4/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Logical4/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..0a67ad3
--- /dev/null
+++ b/plugins/LinuxVST/src/Logical4/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Logical4/Logical4.cpp b/plugins/LinuxVST/src/Logical4/Logical4.cpp
index b17cc55..15d185b 100755
--- a/plugins/LinuxVST/src/Logical4/Logical4.cpp
+++ b/plugins/LinuxVST/src/Logical4/Logical4.cpp
@@ -77,12 +77,9 @@ Logical4::Logical4(audioMasterCallback audioMaster) :
gcount = 0;
//end Power Sags
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Logical4/Logical4.h b/plugins/LinuxVST/src/Logical4/Logical4.h
index 71e118e..fd802c8 100755
--- a/plugins/LinuxVST/src/Logical4/Logical4.h
+++ b/plugins/LinuxVST/src/Logical4/Logical4.h
@@ -143,10 +143,8 @@ private:
int gcount;
- double fpNShapeLA;
- double fpNShapeLB;
- double fpNShapeRA;
- double fpNShapeRB;
+ double fpNShapeL;
+ double fpNShapeR;
bool fpFlip;
//default stuff
diff --git a/plugins/LinuxVST/src/Logical4/Logical4Proc.cpp b/plugins/LinuxVST/src/Logical4/Logical4Proc.cpp
index 0d09fcf..5d079f3 100755
--- a/plugins/LinuxVST/src/Logical4/Logical4Proc.cpp
+++ b/plugins/LinuxVST/src/Logical4/Logical4Proc.cpp
@@ -17,9 +17,8 @@ void Logical4::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
+ long double fpNew = 1.0 - fpOld;
float drySampleL;
float drySampleR;
@@ -869,27 +868,17 @@ void Logical4::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
+ fpFlip = !fpFlip;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -911,9 +900,8 @@ void Logical4::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
+ long double fpNew = 1.0 - fpOld;
float drySampleL;
float drySampleR;
@@ -1762,26 +1750,18 @@ void Logical4::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
-
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Loud/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Loud/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Loud/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Loud/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Loud/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..abcac37
--- /dev/null
+++ b/plugins/LinuxVST/src/Loud/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Loud/Loud.cpp b/plugins/LinuxVST/src/Loud/Loud.cpp
index 43f7ffc..009124d 100755
--- a/plugins/LinuxVST/src/Loud/Loud.cpp
+++ b/plugins/LinuxVST/src/Loud/Loud.cpp
@@ -15,11 +15,8 @@ Loud::Loud(audioMasterCallback audioMaster) :
A = 0.0;
B = 1.0;
C = 1.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Loud/Loud.h b/plugins/LinuxVST/src/Loud/Loud.h
index 85b66a2..17537c2 100755
--- a/plugins/LinuxVST/src/Loud/Loud.h
+++ b/plugins/LinuxVST/src/Loud/Loud.h
@@ -56,11 +56,8 @@ private:
double lastSampleL;
double lastSampleR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Loud/LoudProc.cpp b/plugins/LinuxVST/src/Loud/LoudProc.cpp
index 8aedede..35ee29b 100755
--- a/plugins/LinuxVST/src/Loud/LoudProc.cpp
+++ b/plugins/LinuxVST/src/Loud/LoudProc.cpp
@@ -18,9 +18,6 @@ void Loud::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
overallscale /= 44100.0;
overallscale *= getSampleRate();
double boost = pow(A+1.0,5);
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double output = B;
double wet = C;
double dry = 1.0-wet;
@@ -143,25 +140,14 @@ void Loud::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -184,9 +170,6 @@ void Loud::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
overallscale /= 44100.0;
overallscale *= getSampleRate();
double boost = pow(A+1.0,5);
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double output = B;
double wet = C;
double dry = 1.0-wet;
@@ -308,25 +291,16 @@ void Loud::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Lowpass/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Lowpass/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Lowpass/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Lowpass/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Lowpass/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..f5cbb3f
--- /dev/null
+++ b/plugins/LinuxVST/src/Lowpass/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Lowpass/Lowpass.cpp b/plugins/LinuxVST/src/Lowpass/Lowpass.cpp
index 8178799..18064fc 100755
--- a/plugins/LinuxVST/src/Lowpass/Lowpass.cpp
+++ b/plugins/LinuxVST/src/Lowpass/Lowpass.cpp
@@ -19,10 +19,8 @@ Lowpass::Lowpass(audioMasterCallback audioMaster) :
iirSampleBL = 0.0;
iirSampleAR = 0.0;
iirSampleBR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/LinuxVST/src/Lowpass/Lowpass.h b/plugins/LinuxVST/src/Lowpass/Lowpass.h
index 1b99c55..40ac456 100755
--- a/plugins/LinuxVST/src/Lowpass/Lowpass.h
+++ b/plugins/LinuxVST/src/Lowpass/Lowpass.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
@@ -68,7 +65,7 @@ private:
double iirSampleBL;
double iirSampleAR;
double iirSampleBR;
-
+ bool fpFlip;
};
#endif
diff --git a/plugins/LinuxVST/src/Lowpass/LowpassProc.cpp b/plugins/LinuxVST/src/Lowpass/LowpassProc.cpp
index bcce714..bcc3690 100755
--- a/plugins/LinuxVST/src/Lowpass/LowpassProc.cpp
+++ b/plugins/LinuxVST/src/Lowpass/LowpassProc.cpp
@@ -27,9 +27,6 @@ void Lowpass::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double inputSampleR;
double outputSampleL;
double outputSampleR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -116,33 +113,21 @@ void Lowpass::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount));
outputSampleR = iirSampleBR;
}
+ fpFlip = !fpFlip;
if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry);
if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = outputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLA;
-
- fpTemp = outputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = outputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLB;
-
- fpTemp = outputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
@@ -174,9 +159,6 @@ void Lowpass::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double inputSampleR;
double outputSampleL;
double outputSampleR;
- double fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -263,33 +245,23 @@ void Lowpass::processDoubleReplacing(double **inputs, double **outputs, VstInt32
iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount));
outputSampleR = iirSampleBR;
}
+ fpFlip = !fpFlip;
if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry);
if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = outputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLA;
-
- fpTemp = outputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = outputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLB;
-
- fpTemp = outputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
diff --git a/plugins/LinuxVST/src/Melt/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Melt/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Melt/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Melt/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Melt/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..ee90f48
--- /dev/null
+++ b/plugins/LinuxVST/src/Melt/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Melt/Melt.cpp b/plugins/LinuxVST/src/Melt/Melt.cpp
index 9722e1f..35ede1e 100755
--- a/plugins/LinuxVST/src/Melt/Melt.cpp
+++ b/plugins/LinuxVST/src/Melt/Melt.cpp
@@ -26,11 +26,8 @@ Melt::Melt(audioMasterCallback audioMaster) :
slowCount = 0;
gcount = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Melt/Melt.h b/plugins/LinuxVST/src/Melt/Melt.h
index a8e0f38..af11f0f 100755
--- a/plugins/LinuxVST/src/Melt/Melt.h
+++ b/plugins/LinuxVST/src/Melt/Melt.h
@@ -70,11 +70,8 @@ private:
int slowCount;
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Melt/MeltProc.cpp b/plugins/LinuxVST/src/Melt/MeltProc.cpp
index 48a1c11..8a55732 100755
--- a/plugins/LinuxVST/src/Melt/MeltProc.cpp
+++ b/plugins/LinuxVST/src/Melt/MeltProc.cpp
@@ -21,9 +21,6 @@ void Melt::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
double wet = D;
double dry = 1.0-wet;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -271,25 +268,14 @@ void Melt::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -315,9 +301,6 @@ void Melt::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
double wet = D;
double dry = 1.0-wet;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -565,25 +548,16 @@ void Melt::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/MidSide/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/MidSide/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/MidSide/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/MidSide/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/MidSide/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..652923f
--- /dev/null
+++ b/plugins/LinuxVST/src/MidSide/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/MidSide/MidSide.cpp b/plugins/LinuxVST/src/MidSide/MidSide.cpp
index bc37393..8f61cff 100755
--- a/plugins/LinuxVST/src/MidSide/MidSide.cpp
+++ b/plugins/LinuxVST/src/MidSide/MidSide.cpp
@@ -13,11 +13,8 @@ MidSide::MidSide(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/MidSide/MidSide.h b/plugins/LinuxVST/src/MidSide/MidSide.h
index 28b2ae7..4d139c8 100755
--- a/plugins/LinuxVST/src/MidSide/MidSide.h
+++ b/plugins/LinuxVST/src/MidSide/MidSide.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/MidSide/MidSideProc.cpp b/plugins/LinuxVST/src/MidSide/MidSideProc.cpp
index 2df14f4..cca7a5c 100755
--- a/plugins/LinuxVST/src/MidSide/MidSideProc.cpp
+++ b/plugins/LinuxVST/src/MidSide/MidSideProc.cpp
@@ -14,9 +14,6 @@ void MidSide::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -76,25 +73,14 @@ void MidSide::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
mid *= midgain;
side *= sidegain;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = mid;
*out2 = side;
@@ -113,9 +99,6 @@ void MidSide::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -175,25 +158,16 @@ void MidSide::processDoubleReplacing(double **inputs, double **outputs, VstInt32
mid *= midgain;
side *= sidegain;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = mid;
*out2 = side;
diff --git a/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.cpp b/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.cpp
index 9bc129a..409f983 100755
--- a/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.cpp
+++ b/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.cpp
@@ -31,11 +31,8 @@ NCSeventeen::NCSeventeen(audioMasterCallback audioMaster) :
flip = false;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.h b/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.h
index 01179e9..b3ecd94 100755
--- a/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.h
+++ b/plugins/LinuxVST/src/NCSeventeen/NCSeventeen.h
@@ -70,11 +70,8 @@ private:
bool flip;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/NCSeventeen/NCSeventeenProc.cpp b/plugins/LinuxVST/src/NCSeventeen/NCSeventeenProc.cpp
index b2f2aa1..e124cb5 100755
--- a/plugins/LinuxVST/src/NCSeventeen/NCSeventeenProc.cpp
+++ b/plugins/LinuxVST/src/NCSeventeen/NCSeventeenProc.cpp
@@ -19,9 +19,6 @@ void NCSeventeen::processReplacing(float **inputs, float **outputs, VstInt32 sam
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double IIRscaleback = 0.0004716;
double bassScaleback = 0.0002364;
@@ -347,25 +344,14 @@ void NCSeventeen::processReplacing(float **inputs, float **outputs, VstInt32 sam
if (inputSampleR < -0.95) inputSampleR = -0.95;
//iron bar
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -389,9 +375,6 @@ void NCSeventeen::processDoubleReplacing(double **inputs, double **outputs, VstI
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double IIRscaleback = 0.0004716;
double bassScaleback = 0.0002364;
@@ -716,25 +699,16 @@ void NCSeventeen::processDoubleReplacing(double **inputs, double **outputs, VstI
if (inputSampleR < -0.95) inputSampleR = -0.95;
//iron bar
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Noise/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Noise/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Noise/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Noise/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Noise/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..78a0fe9
--- /dev/null
+++ b/plugins/LinuxVST/src/Noise/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Noise/Noise.cpp b/plugins/LinuxVST/src/Noise/Noise.cpp
index 76d00c8..d955a29 100755
--- a/plugins/LinuxVST/src/Noise/Noise.cpp
+++ b/plugins/LinuxVST/src/Noise/Noise.cpp
@@ -36,11 +36,8 @@ Noise::Noise(audioMasterCallback audioMaster) :
flipR = false;
filterflip = false;
for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;}
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Noise/Noise.h b/plugins/LinuxVST/src/Noise/Noise.h
index 0ee4d76..67c32bc 100755
--- a/plugins/LinuxVST/src/Noise/Noise.h
+++ b/plugins/LinuxVST/src/Noise/Noise.h
@@ -81,11 +81,8 @@ private:
double f[11];
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Noise/NoiseProc.cpp b/plugins/LinuxVST/src/Noise/NoiseProc.cpp
index e185120..31cba20 100755
--- a/plugins/LinuxVST/src/Noise/NoiseProc.cpp
+++ b/plugins/LinuxVST/src/Noise/NoiseProc.cpp
@@ -104,9 +104,6 @@ void Noise::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
f[9] /= overallscale;
//and now it's neatly scaled, too
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
@@ -299,25 +296,14 @@ void Noise::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
//sometimes I'm really tired and can't do stuff, and I remember trying to simplify this
//and breaking it somehow. So, there ya go, strange obtuse code.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -426,9 +412,6 @@ void Noise::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
f[9] /= overallscale;
//and now it's neatly scaled, too
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -619,25 +602,16 @@ void Noise::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
//sometimes I'm really tired and can't do stuff, and I remember trying to simplify this
//and breaking it somehow. So, there ya go, strange obtuse code.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.cpp b/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.cpp
index 6941556..eb05bc3 100755
--- a/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.cpp
+++ b/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.cpp
@@ -195,11 +195,8 @@ NonlinearSpace::NonlinearSpace(audioMasterCallback audioMaster) :
countdown = -1;
flip = true;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.h b/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.h
index e915b21..dbaa0b3 100755
--- a/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.h
+++ b/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpace.h
@@ -208,11 +208,8 @@ private:
double nonlin;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpaceProc.cpp b/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpaceProc.cpp
index 597e184..f9df9fc 100755
--- a/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpaceProc.cpp
+++ b/plugins/LinuxVST/src/NonlinearSpace/NonlinearSpaceProc.cpp
@@ -14,9 +14,6 @@ void NonlinearSpace::processReplacing(float **inputs, float **outputs, VstInt32
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -746,25 +743,14 @@ void NonlinearSpace::processReplacing(float **inputs, float **outputs, VstInt32
inputSampleR += drySampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
flip = !flip;
*out1 = inputSampleL;
@@ -784,9 +770,6 @@ void NonlinearSpace::processDoubleReplacing(double **inputs, double **outputs, V
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -1516,25 +1499,16 @@ void NonlinearSpace::processDoubleReplacing(double **inputs, double **outputs, V
inputSampleR += drySampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
flip = !flip;
*out1 = inputSampleL;
diff --git a/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.cpp b/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.cpp
index bf8828e..59e2824 100755
--- a/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.cpp
+++ b/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.cpp
@@ -25,11 +25,8 @@ OneCornerClip::OneCornerClip(audioMasterCallback audioMaster) :
limitPosR = 0.0;
limitNegR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.h b/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.h
index 07f480a..4f039fa 100755
--- a/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.h
+++ b/plugins/LinuxVST/src/OneCornerClip/OneCornerClip.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/LinuxVST/src/OneCornerClip/OneCornerClipProc.cpp b/plugins/LinuxVST/src/OneCornerClip/OneCornerClipProc.cpp
index 0398b60..c45c69b 100755
--- a/plugins/LinuxVST/src/OneCornerClip/OneCornerClipProc.cpp
+++ b/plugins/LinuxVST/src/OneCornerClip/OneCornerClipProc.cpp
@@ -17,9 +17,6 @@ void OneCornerClip::processReplacing(float **inputs, float **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputGain = pow(10.0,(((A*36.0)-12.0)/20.0));
double posThreshold = B;
@@ -157,25 +154,14 @@ void OneCornerClip::processReplacing(float **inputs, float **outputs, VstInt32 s
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
if (clipEngage == false)
{
@@ -204,9 +190,6 @@ void OneCornerClip::processDoubleReplacing(double **inputs, double **outputs, Vs
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputGain = pow(10.0,(((A*36.0)-12.0)/20.0));
double posThreshold = B;
@@ -345,25 +328,16 @@ void OneCornerClip::processDoubleReplacing(double **inputs, double **outputs, Vs
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
if (clipEngage == false)
{
diff --git a/plugins/LinuxVST/src/PDBuss/PDBuss.cpp b/plugins/LinuxVST/src/PDBuss/PDBuss.cpp
index 323d8cf..8b31d8b 100755
--- a/plugins/LinuxVST/src/PDBuss/PDBuss.cpp
+++ b/plugins/LinuxVST/src/PDBuss/PDBuss.cpp
@@ -21,11 +21,8 @@ PDBuss::PDBuss(audioMasterCallback audioMaster) :
previousSampleL = 0.0;
previousSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/PDBuss/PDBuss.h b/plugins/LinuxVST/src/PDBuss/PDBuss.h
index 5c7a504..3e6d9b8 100755
--- a/plugins/LinuxVST/src/PDBuss/PDBuss.h
+++ b/plugins/LinuxVST/src/PDBuss/PDBuss.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double gainchase;
double settingchase;
diff --git a/plugins/LinuxVST/src/PDBuss/PDBussProc.cpp b/plugins/LinuxVST/src/PDBuss/PDBussProc.cpp
index c099057..6da8fa0 100755
--- a/plugins/LinuxVST/src/PDBuss/PDBussProc.cpp
+++ b/plugins/LinuxVST/src/PDBuss/PDBussProc.cpp
@@ -13,9 +13,6 @@ void PDBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double intensity = B;
@@ -122,25 +119,14 @@ void PDBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -158,9 +144,6 @@ void PDBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double intensity = B;
@@ -267,25 +250,16 @@ void PDBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/PDChannel/PDChannel.cpp b/plugins/LinuxVST/src/PDChannel/PDChannel.cpp
index d300fc8..aef639d 100755
--- a/plugins/LinuxVST/src/PDChannel/PDChannel.cpp
+++ b/plugins/LinuxVST/src/PDChannel/PDChannel.cpp
@@ -21,11 +21,8 @@ PDChannel::PDChannel(audioMasterCallback audioMaster) :
previousSampleL = 0.0;
previousSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/PDChannel/PDChannel.h b/plugins/LinuxVST/src/PDChannel/PDChannel.h
index e92117c..ea233e2 100755
--- a/plugins/LinuxVST/src/PDChannel/PDChannel.h
+++ b/plugins/LinuxVST/src/PDChannel/PDChannel.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double gainchase;
double settingchase;
diff --git a/plugins/LinuxVST/src/PDChannel/PDChannelProc.cpp b/plugins/LinuxVST/src/PDChannel/PDChannelProc.cpp
index d8f79df..fb5932d 100755
--- a/plugins/LinuxVST/src/PDChannel/PDChannelProc.cpp
+++ b/plugins/LinuxVST/src/PDChannel/PDChannelProc.cpp
@@ -13,9 +13,6 @@ void PDChannel::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double intensity = B;
@@ -115,25 +112,14 @@ void PDChannel::processReplacing(float **inputs, float **outputs, VstInt32 sampl
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -151,9 +137,6 @@ void PDChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double intensity = B;
@@ -253,25 +236,16 @@ void PDChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/PhaseNudge/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/PhaseNudge/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/PhaseNudge/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/PhaseNudge/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/PhaseNudge/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..11ae01b
--- /dev/null
+++ b/plugins/LinuxVST/src/PhaseNudge/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.cpp b/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.cpp
index 8a77175..e9e5c8d 100755
--- a/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.cpp
+++ b/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.cpp
@@ -16,11 +16,8 @@ PhaseNudge::PhaseNudge(audioMasterCallback audioMaster) :
B = 1.0;
for(int count = 0; count < 1502; count++) {dL[count] = 0.0; dR[count] = 0.0;}
one = 1; maxdelay = 9001;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.h b/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.h
index cba0ac8..2926ccb 100755
--- a/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.h
+++ b/plugins/LinuxVST/src/PhaseNudge/PhaseNudge.h
@@ -57,11 +57,8 @@ private:
double dR[1503];
int one, maxdelay;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/PhaseNudge/PhaseNudgeProc.cpp b/plugins/LinuxVST/src/PhaseNudge/PhaseNudgeProc.cpp
index 494c841..150ecd5 100755
--- a/plugins/LinuxVST/src/PhaseNudge/PhaseNudgeProc.cpp
+++ b/plugins/LinuxVST/src/PhaseNudge/PhaseNudgeProc.cpp
@@ -14,9 +14,6 @@ void PhaseNudge::processReplacing(float **inputs, float **outputs, VstInt32 samp
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int allpasstemp;
double outallpass = 0.618033988749894848204586; //golden ratio!
@@ -136,25 +133,14 @@ void PhaseNudge::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (drySampleR * dry)+(inputSampleR * wet);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -173,9 +159,6 @@ void PhaseNudge::processDoubleReplacing(double **inputs, double **outputs, VstIn
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int allpasstemp;
double outallpass = 0.618033988749894848204586; //golden ratio!
@@ -294,25 +277,16 @@ void PhaseNudge::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (drySampleR * dry)+(inputSampleR * wet);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Point/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Point/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Point/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Point/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Point/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..8ad608b
--- /dev/null
+++ b/plugins/LinuxVST/src/Point/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Point/Point.cpp b/plugins/LinuxVST/src/Point/Point.cpp
index 22885b5..f795470 100755
--- a/plugins/LinuxVST/src/Point/Point.cpp
+++ b/plugins/LinuxVST/src/Point/Point.cpp
@@ -24,10 +24,8 @@ Point::Point(audioMasterCallback audioMaster) :
nibBR = 0.0;
nobBR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/LinuxVST/src/Point/Point.h b/plugins/LinuxVST/src/Point/Point.h
index 12c8001..ff898cb 100755
--- a/plugins/LinuxVST/src/Point/Point.h
+++ b/plugins/LinuxVST/src/Point/Point.h
@@ -54,10 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool fpFlip;
//default stuff
double nibAL;
diff --git a/plugins/LinuxVST/src/Point/PointProc.cpp b/plugins/LinuxVST/src/Point/PointProc.cpp
index a00263d..a3bbe3c 100755
--- a/plugins/LinuxVST/src/Point/PointProc.cpp
+++ b/plugins/LinuxVST/src/Point/PointProc.cpp
@@ -27,9 +27,6 @@ void Point::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double nibnobFactor = 0.0; //start with the fallthrough value, why not
double absolute;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -128,26 +125,16 @@ void Point::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
}
}
inputSampleR *= nibnobFactor;
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -179,9 +166,6 @@ void Point::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double nibnobFactor = 0.0; //start with the fallthrough value, why not
double absolute;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -280,26 +264,18 @@ void Point::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
}
}
inputSampleR *= nibnobFactor;
-
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Pop/PopProc.cpp b/plugins/LinuxVST/src/Pop/PopProc.cpp
index ae7dd4d..baa9420 100755
--- a/plugins/LinuxVST/src/Pop/PopProc.cpp
+++ b/plugins/LinuxVST/src/Pop/PopProc.cpp
@@ -268,18 +268,14 @@ void Pop::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
inputSampleR = (drySampleR*(1.0-wet))+(inputSampleR*wet);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -289,12 +285,6 @@ void Pop::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -558,18 +548,16 @@ void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
inputSampleR = (drySampleR*(1.0-wet))+(inputSampleR*wet);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -579,10 +567,4 @@ void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/PowerSag/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/PowerSag/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/PowerSag/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/PowerSag/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/PowerSag/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..b1569f1
--- /dev/null
+++ b/plugins/LinuxVST/src/PowerSag/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/PowerSag/PowerSag.cpp b/plugins/LinuxVST/src/PowerSag/PowerSag.cpp
index 0218186..d1d0745 100755
--- a/plugins/LinuxVST/src/PowerSag/PowerSag.cpp
+++ b/plugins/LinuxVST/src/PowerSag/PowerSag.cpp
@@ -18,11 +18,8 @@ PowerSag::PowerSag(audioMasterCallback audioMaster) :
gcount = 0;
A = 0.0;
B = 0.3;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/PowerSag/PowerSag.h b/plugins/LinuxVST/src/PowerSag/PowerSag.h
index 930f05b..38839b6 100755
--- a/plugins/LinuxVST/src/PowerSag/PowerSag.h
+++ b/plugins/LinuxVST/src/PowerSag/PowerSag.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double dL[9000];
double dR[9000];
diff --git a/plugins/LinuxVST/src/PowerSag/PowerSagProc.cpp b/plugins/LinuxVST/src/PowerSag/PowerSagProc.cpp
index d1afa31..de43be6 100755
--- a/plugins/LinuxVST/src/PowerSag/PowerSagProc.cpp
+++ b/plugins/LinuxVST/src/PowerSag/PowerSagProc.cpp
@@ -22,9 +22,6 @@ void PowerSag::processReplacing(float **inputs, float **outputs, VstInt32 sample
double out;
double bridgerectifier;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -123,25 +120,14 @@ void PowerSag::processReplacing(float **inputs, float **outputs, VstInt32 sample
gcount--;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -168,9 +154,6 @@ void PowerSag::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double out;
double bridgerectifier;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -269,25 +252,16 @@ void PowerSag::processDoubleReplacing(double **inputs, double **outputs, VstInt3
gcount--;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Pressure4/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Pressure4/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Pressure4/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Pressure4/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Pressure4/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..a911044
--- /dev/null
+++ b/plugins/LinuxVST/src/Pressure4/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Pressure4/Pressure4.cpp b/plugins/LinuxVST/src/Pressure4/Pressure4.cpp
index 8ae2adc..10ed5fa 100755
--- a/plugins/LinuxVST/src/Pressure4/Pressure4.cpp
+++ b/plugins/LinuxVST/src/Pressure4/Pressure4.cpp
@@ -16,10 +16,8 @@ Pressure4::Pressure4(audioMasterCallback audioMaster) :
B = 0.2;
C = 1.0;
D = 1.0;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
muSpeedA = 10000;
muSpeedB = 10000;
muCoefficientA = 1;
diff --git a/plugins/LinuxVST/src/Pressure4/Pressure4.h b/plugins/LinuxVST/src/Pressure4/Pressure4.h
index 29d20eb..6cf3448 100755
--- a/plugins/LinuxVST/src/Pressure4/Pressure4.h
+++ b/plugins/LinuxVST/src/Pressure4/Pressure4.h
@@ -62,10 +62,8 @@ private:
double muSpeedB;
double muCoefficientA;
double muCoefficientB;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
float A;
diff --git a/plugins/LinuxVST/src/Pressure4/Pressure4Proc.cpp b/plugins/LinuxVST/src/Pressure4/Pressure4Proc.cpp
index 02b8a78..7e285df 100755
--- a/plugins/LinuxVST/src/Pressure4/Pressure4Proc.cpp
+++ b/plugins/LinuxVST/src/Pressure4/Pressure4Proc.cpp
@@ -43,9 +43,6 @@ void Pressure4::processReplacing(float **inputs, float **outputs, VstInt32 sampl
unmewiness = 1.0-mewiness;
}
// µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -195,27 +192,14 @@ void Pressure4::processReplacing(float **inputs, float **outputs, VstInt32 sampl
else {inputSampleR = -bridgerectifier;}
//second stage of overdrive to prevent overs and allow bloody loud extremeness
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
@@ -263,9 +247,6 @@ void Pressure4::processDoubleReplacing(double **inputs, double **outputs, VstInt
unmewiness = 1.0-mewiness;
}
// µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -416,27 +397,16 @@ void Pressure4::processDoubleReplacing(double **inputs, double **outputs, VstInt
else {inputSampleR = -bridgerectifier;}
//second stage of overdrive to prevent overs and allow bloody loud extremeness
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.cpp b/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.cpp
index ed0b223..2d8e619 100644..100755
--- a/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.cpp
+++ b/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.cpp
@@ -12,11 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new P
PurestConsoleBuss::PurestConsoleBuss(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.h b/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.h
index 0d237ec..51495fc 100644..100755
--- a/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.h
+++ b/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
};
diff --git a/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBussProc.cpp b/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBussProc.cpp
index c06258a..6211eeb 100644..100755
--- a/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBussProc.cpp
+++ b/plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBussProc.cpp
@@ -14,9 +14,6 @@ void PurestConsoleBuss::processReplacing(float **inputs, float **outputs, VstInt
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -74,25 +71,14 @@ void PurestConsoleBuss::processReplacing(float **inputs, float **outputs, VstInt
inputSampleR = asin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -111,9 +97,6 @@ void PurestConsoleBuss::processDoubleReplacing(double **inputs, double **outputs
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -171,25 +154,16 @@ void PurestConsoleBuss::processDoubleReplacing(double **inputs, double **outputs
inputSampleR = asin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.cpp b/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.cpp
index b9f3e04..35649a6 100644..100755
--- a/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.cpp
+++ b/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.cpp
@@ -12,11 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new P
PurestConsoleChannel::PurestConsoleChannel(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.h b/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.h
index c0a1648..51e728f 100644..100755
--- a/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.h
+++ b/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
};
diff --git a/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannelProc.cpp b/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannelProc.cpp
index 630cba7..2fc513a 100644..100755
--- a/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannelProc.cpp
+++ b/plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannelProc.cpp
@@ -14,9 +14,6 @@ void PurestConsoleChannel::processReplacing(float **inputs, float **outputs, Vst
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -68,25 +65,14 @@ void PurestConsoleChannel::processReplacing(float **inputs, float **outputs, Vst
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -105,9 +91,6 @@ void PurestConsoleChannel::processDoubleReplacing(double **inputs, double **outp
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -159,25 +142,16 @@ void PurestConsoleChannel::processDoubleReplacing(double **inputs, double **outp
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/PurestDrive/PurestDrive.cpp b/plugins/LinuxVST/src/PurestDrive/PurestDrive.cpp
index e2451fe..a1d9264 100644..100755
--- a/plugins/LinuxVST/src/PurestDrive/PurestDrive.cpp
+++ b/plugins/LinuxVST/src/PurestDrive/PurestDrive.cpp
@@ -17,11 +17,8 @@ PurestDrive::PurestDrive(audioMasterCallback audioMaster) :
previousSampleL = 0.0;
previousSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/PurestDrive/PurestDrive.h b/plugins/LinuxVST/src/PurestDrive/PurestDrive.h
index 1f5b349..abcd65b 100644..100755
--- a/plugins/LinuxVST/src/PurestDrive/PurestDrive.h
+++ b/plugins/LinuxVST/src/PurestDrive/PurestDrive.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double previousSampleL;
diff --git a/plugins/LinuxVST/src/PurestDrive/PurestDriveProc.cpp b/plugins/LinuxVST/src/PurestDrive/PurestDriveProc.cpp
index e453883..f5cc804 100644..100755
--- a/plugins/LinuxVST/src/PurestDrive/PurestDriveProc.cpp
+++ b/plugins/LinuxVST/src/PurestDrive/PurestDriveProc.cpp
@@ -14,9 +14,6 @@ void PurestDrive::processReplacing(float **inputs, float **outputs, VstInt32 sam
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = A;
double drySampleL;
@@ -90,25 +87,14 @@ void PurestDrive::processReplacing(float **inputs, float **outputs, VstInt32 sam
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -127,9 +113,6 @@ void PurestDrive::processDoubleReplacing(double **inputs, double **outputs, VstI
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = A;
double drySampleL;
@@ -204,25 +187,16 @@ void PurestDrive::processDoubleReplacing(double **inputs, double **outputs, VstI
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/PurestEcho/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/PurestEcho/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/PurestEcho/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/PurestEcho/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/PurestEcho/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..1ddbf82
--- /dev/null
+++ b/plugins/LinuxVST/src/PurestEcho/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/PurestEcho/PurestEcho.cpp b/plugins/LinuxVST/src/PurestEcho/PurestEcho.cpp
index 6b8c302..6bcaa3f 100755
--- a/plugins/LinuxVST/src/PurestEcho/PurestEcho.cpp
+++ b/plugins/LinuxVST/src/PurestEcho/PurestEcho.cpp
@@ -19,11 +19,8 @@ PurestEcho::PurestEcho(audioMasterCallback audioMaster) :
E = 0.0;
for(int count = 0; count < totalsamples-1; count++) {dL[count] = 0;dR[count] = 0;}
gcount = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/PurestEcho/PurestEcho.h b/plugins/LinuxVST/src/PurestEcho/PurestEcho.h
index a298dd2..870e158 100755
--- a/plugins/LinuxVST/src/PurestEcho/PurestEcho.h
+++ b/plugins/LinuxVST/src/PurestEcho/PurestEcho.h
@@ -62,11 +62,8 @@ private:
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/PurestEcho/PurestEchoProc.cpp b/plugins/LinuxVST/src/PurestEcho/PurestEchoProc.cpp
index 77e4b2f..e8e141c 100755
--- a/plugins/LinuxVST/src/PurestEcho/PurestEchoProc.cpp
+++ b/plugins/LinuxVST/src/PurestEcho/PurestEchoProc.cpp
@@ -76,9 +76,6 @@ void PurestEcho::processReplacing(float **inputs, float **outputs, VstInt32 samp
double delaysBufferL;
double delaysBufferR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -177,25 +174,14 @@ void PurestEcho::processReplacing(float **inputs, float **outputs, VstInt32 samp
gcount--;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -276,9 +262,6 @@ void PurestEcho::processDoubleReplacing(double **inputs, double **outputs, VstIn
double delaysBufferL;
double delaysBufferR;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -377,25 +360,16 @@ void PurestEcho::processDoubleReplacing(double **inputs, double **outputs, VstIn
gcount--;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/PurestGain/PurestGain.cpp b/plugins/LinuxVST/src/PurestGain/PurestGain.cpp
index 3091a12..b1b77fe 100644..100755
--- a/plugins/LinuxVST/src/PurestGain/PurestGain.cpp
+++ b/plugins/LinuxVST/src/PurestGain/PurestGain.cpp
@@ -18,11 +18,8 @@ PurestGain::PurestGain(audioMasterCallback audioMaster) :
settingchase = -90.0;
gainBchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/PurestGain/PurestGain.h b/plugins/LinuxVST/src/PurestGain/PurestGain.h
index 7869425..9e2baea 100644..100755
--- a/plugins/LinuxVST/src/PurestGain/PurestGain.h
+++ b/plugins/LinuxVST/src/PurestGain/PurestGain.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double gainchase;
double settingchase;
diff --git a/plugins/LinuxVST/src/PurestGain/PurestGainProc.cpp b/plugins/LinuxVST/src/PurestGain/PurestGainProc.cpp
index 38f2849..4aa6d96 100644..100755
--- a/plugins/LinuxVST/src/PurestGain/PurestGainProc.cpp
+++ b/plugins/LinuxVST/src/PurestGain/PurestGainProc.cpp
@@ -43,9 +43,6 @@ void PurestGain::processReplacing(float **inputs, float **outputs, VstInt32 samp
//done with slow fade controller
double outputgain;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -118,45 +115,19 @@ void PurestGain::processReplacing(float **inputs, float **outputs, VstInt32 samp
if (1.0 == outputgain)
{
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
*out1 = *in1;
*out2 = *in2;
} else {
inputSampleL *= outputgain;
inputSampleR *= outputgain;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
}
@@ -204,9 +175,6 @@ void PurestGain::processDoubleReplacing(double **inputs, double **outputs, VstIn
//done with slow fade controller
double outputgain;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -273,45 +241,21 @@ void PurestGain::processDoubleReplacing(double **inputs, double **outputs, VstIn
if (1.0 == outputgain)
{
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
*out1 = *in1;
*out2 = *in2;
} else {
inputSampleL *= outputgain;
inputSampleR *= outputgain;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
}
diff --git a/plugins/LinuxVST/src/PurestWarm/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/PurestWarm/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/PurestWarm/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/PurestWarm/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/PurestWarm/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..91f4254
--- /dev/null
+++ b/plugins/LinuxVST/src/PurestWarm/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/PurestWarm/PurestWarm.cpp b/plugins/LinuxVST/src/PurestWarm/PurestWarm.cpp
index 475e845..eeee37b 100755
--- a/plugins/LinuxVST/src/PurestWarm/PurestWarm.cpp
+++ b/plugins/LinuxVST/src/PurestWarm/PurestWarm.cpp
@@ -13,11 +13,8 @@ PurestWarm::PurestWarm(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/PurestWarm/PurestWarm.h b/plugins/LinuxVST/src/PurestWarm/PurestWarm.h
index c67a91e..98bb0ce 100755
--- a/plugins/LinuxVST/src/PurestWarm/PurestWarm.h
+++ b/plugins/LinuxVST/src/PurestWarm/PurestWarm.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/PurestWarm/PurestWarmProc.cpp b/plugins/LinuxVST/src/PurestWarm/PurestWarmProc.cpp
index b5a5070..101c931 100755
--- a/plugins/LinuxVST/src/PurestWarm/PurestWarmProc.cpp
+++ b/plugins/LinuxVST/src/PurestWarm/PurestWarmProc.cpp
@@ -14,9 +14,6 @@ void PurestWarm::processReplacing(float **inputs, float **outputs, VstInt32 samp
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int polarity = (int) ( A * 1.999 );
@@ -71,103 +68,55 @@ void PurestWarm::processReplacing(float **inputs, float **outputs, VstInt32 samp
if (inputSampleL < 0)
{
inputSampleL = -(sin(-inputSampleL*1.57079634)/1.57079634);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- }
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
}
-
if (inputSampleR < 0)
{
inputSampleR = -(sin(-inputSampleR*1.57079634)/1.57079634);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- }
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
}
-
} else {
-
if (inputSampleL > 0)
{
inputSampleL = sin(inputSampleL*1.57079634)/1.57079634;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- }
- }
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+ }
if (inputSampleR > 0)
{
inputSampleR = sin(inputSampleR*1.57079634)/1.57079634;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- }
- }
-
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+ }
}
//that's it. Only applies on one half of the waveform, other half is passthrough untouched.
- //even the floating point noise shaping to the 32 bit buss is only applied as needed.
-
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -186,9 +135,6 @@ void PurestWarm::processDoubleReplacing(double **inputs, double **outputs, VstIn
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int polarity = (int) ( A * 1.999 );
@@ -243,103 +189,63 @@ void PurestWarm::processDoubleReplacing(double **inputs, double **outputs, VstIn
if (inputSampleL < 0)
{
inputSampleL = -(sin(-inputSampleL*1.57079634)/1.57079634);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
}
if (inputSampleR < 0)
{
inputSampleR = -(sin(-inputSampleR*1.57079634)/1.57079634);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
}
-
} else {
-
if (inputSampleL > 0)
{
inputSampleL = sin(inputSampleL*1.57079634)/1.57079634;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
}
-
if (inputSampleR > 0)
{
inputSampleR = sin(inputSampleR*1.57079634)/1.57079634;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
}
-
}
//that's it. Only applies on one half of the waveform, other half is passthrough untouched.
- //even the floating point noise shaping to the 32 bit buss is only applied as needed.
-
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Pyewacket/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Pyewacket/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Pyewacket/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Pyewacket/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Pyewacket/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..be9ac10
--- /dev/null
+++ b/plugins/LinuxVST/src/Pyewacket/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Pyewacket/Pyewacket.cpp b/plugins/LinuxVST/src/Pyewacket/Pyewacket.cpp
index ee2db40..d500e74 100755
--- a/plugins/LinuxVST/src/Pyewacket/Pyewacket.cpp
+++ b/plugins/LinuxVST/src/Pyewacket/Pyewacket.cpp
@@ -18,11 +18,8 @@ Pyewacket::Pyewacket(audioMasterCallback audioMaster) :
chase = 1.0;
lastrectifierL = 0.0;
lastrectifierR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Pyewacket/Pyewacket.h b/plugins/LinuxVST/src/Pyewacket/Pyewacket.h
index 593001f..087a198 100755
--- a/plugins/LinuxVST/src/Pyewacket/Pyewacket.h
+++ b/plugins/LinuxVST/src/Pyewacket/Pyewacket.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double chase;
double lastrectifierL;
diff --git a/plugins/LinuxVST/src/Pyewacket/PyewacketProc.cpp b/plugins/LinuxVST/src/Pyewacket/PyewacketProc.cpp
index 83112a2..8b3021a 100755
--- a/plugins/LinuxVST/src/Pyewacket/PyewacketProc.cpp
+++ b/plugins/LinuxVST/src/Pyewacket/PyewacketProc.cpp
@@ -17,9 +17,8 @@ void Pyewacket::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
+ long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double drySampleL;
@@ -134,25 +133,14 @@ void Pyewacket::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR *= outputGain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -174,9 +162,8 @@ void Pyewacket::processDoubleReplacing(double **inputs, double **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
+ long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double drySampleL;
@@ -291,25 +278,16 @@ void Pyewacket::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR *= outputGain;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Righteous4/Righteous4Proc.cpp b/plugins/LinuxVST/src/Righteous4/Righteous4Proc.cpp
index 7ed44cf..630360f 100755
--- a/plugins/LinuxVST/src/Righteous4/Righteous4Proc.cpp
+++ b/plugins/LinuxVST/src/Righteous4/Righteous4Proc.cpp
@@ -300,17 +300,14 @@ void Righteous4::processReplacing(float **inputs, float **outputs, VstInt32 samp
//output dither section
if (bitDepth == 3) {
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
} else {
//entire Naturalize section used when not on 32 bit out
@@ -515,12 +512,6 @@ void Righteous4::processReplacing(float **inputs, float **outputs, VstInt32 samp
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -529,11 +520,11 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
+ long double fpNew = 1.0 - fpOld;
double IIRscaleback = 0.0002597;//scaleback of harmonic avg
IIRscaleback /= overallscale;
IIRscaleback = 1.0 - IIRscaleback;
@@ -816,17 +807,16 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn
//output dither section
if (bitDepth == 3) {
- //noise shaping to 32-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
} else {
//entire Naturalize section used when not on 32 bit out
@@ -1031,10 +1021,4 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
} \ No newline at end of file
diff --git a/plugins/LinuxVST/src/SideDull/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/SideDull/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/SideDull/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/SideDull/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/SideDull/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..68a45bd
--- /dev/null
+++ b/plugins/LinuxVST/src/SideDull/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/SideDull/SideDull.cpp b/plugins/LinuxVST/src/SideDull/SideDull.cpp
index 547f1fd..479bdfd 100755
--- a/plugins/LinuxVST/src/SideDull/SideDull.cpp
+++ b/plugins/LinuxVST/src/SideDull/SideDull.cpp
@@ -16,10 +16,8 @@ SideDull::SideDull(audioMasterCallback audioMaster) :
iirSampleA = 0.0;
iirSampleB = 0.0;
flip = true;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/SideDull/SideDull.h b/plugins/LinuxVST/src/SideDull/SideDull.h
index 6f431ac..ef5e892 100755
--- a/plugins/LinuxVST/src/SideDull/SideDull.h
+++ b/plugins/LinuxVST/src/SideDull/SideDull.h
@@ -55,10 +55,8 @@ private:
double iirSampleA;
double iirSampleB;
bool flip;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
float A;
};
diff --git a/plugins/LinuxVST/src/SideDull/SideDullProc.cpp b/plugins/LinuxVST/src/SideDull/SideDullProc.cpp
index 347e5e8..7b77744 100755
--- a/plugins/LinuxVST/src/SideDull/SideDullProc.cpp
+++ b/plugins/LinuxVST/src/SideDull/SideDullProc.cpp
@@ -17,9 +17,6 @@ void SideDull::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -88,27 +85,14 @@ void SideDull::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -130,9 +114,6 @@ void SideDull::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -201,27 +182,16 @@ void SideDull::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Sidepass/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Sidepass/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Sidepass/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Sidepass/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Sidepass/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..5aee656
--- /dev/null
+++ b/plugins/LinuxVST/src/Sidepass/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Sidepass/Sidepass.cpp b/plugins/LinuxVST/src/Sidepass/Sidepass.cpp
index 98f6f3a..a28c212 100755
--- a/plugins/LinuxVST/src/Sidepass/Sidepass.cpp
+++ b/plugins/LinuxVST/src/Sidepass/Sidepass.cpp
@@ -16,10 +16,8 @@ Sidepass::Sidepass(audioMasterCallback audioMaster) :
iirSampleA = 0.0;
iirSampleB = 0.0;
flip = true;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Sidepass/Sidepass.h b/plugins/LinuxVST/src/Sidepass/Sidepass.h
index 0e496f5..1b31b91 100755
--- a/plugins/LinuxVST/src/Sidepass/Sidepass.h
+++ b/plugins/LinuxVST/src/Sidepass/Sidepass.h
@@ -55,10 +55,8 @@ private:
double iirSampleA;
double iirSampleB;
bool flip;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/Sidepass/SidepassProc.cpp b/plugins/LinuxVST/src/Sidepass/SidepassProc.cpp
index d022df3..834ae3e 100755
--- a/plugins/LinuxVST/src/Sidepass/SidepassProc.cpp
+++ b/plugins/LinuxVST/src/Sidepass/SidepassProc.cpp
@@ -17,9 +17,6 @@ void Sidepass::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double iirAmount = pow(A,3)/overallscale;
long double inputSampleL;
long double inputSampleR;
@@ -87,25 +84,14 @@ void Sidepass::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -127,9 +113,6 @@ void Sidepass::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double iirAmount = pow(A,3)/overallscale;
long double inputSampleL;
long double inputSampleR;
@@ -197,25 +180,16 @@ void Sidepass::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/SingleEndedTriode/SingleEndedTriodeProc.cpp b/plugins/LinuxVST/src/SingleEndedTriode/SingleEndedTriodeProc.cpp
index 5781165..ef6694c 100755
--- a/plugins/LinuxVST/src/SingleEndedTriode/SingleEndedTriodeProc.cpp
+++ b/plugins/LinuxVST/src/SingleEndedTriode/SingleEndedTriodeProc.cpp
@@ -127,18 +127,14 @@ void SingleEndedTriode::processReplacing(float **inputs, float **outputs, VstInt
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -148,12 +144,6 @@ void SingleEndedTriode::processReplacing(float **inputs, float **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -276,18 +266,16 @@ void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -297,10 +285,4 @@ void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
} \ No newline at end of file
diff --git a/plugins/LinuxVST/src/Slew/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Slew/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Slew/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Slew/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Slew/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..95f3018
--- /dev/null
+++ b/plugins/LinuxVST/src/Slew/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Slew2/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Slew2/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Slew2/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Slew2/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Slew2/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..b0d4c72
--- /dev/null
+++ b/plugins/LinuxVST/src/Slew2/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/SlewOnly/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/SlewOnly/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/SlewOnly/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/SlewOnly/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/SlewOnly/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..19a25dd
--- /dev/null
+++ b/plugins/LinuxVST/src/SlewOnly/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Spiral/SpiralProc.cpp b/plugins/LinuxVST/src/Spiral/SpiralProc.cpp
index d43a93a..4aea5bc 100755
--- a/plugins/LinuxVST/src/Spiral/SpiralProc.cpp
+++ b/plugins/LinuxVST/src/Spiral/SpiralProc.cpp
@@ -60,18 +60,14 @@ void Spiral::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
inputSampleL = sin(inputSampleL * fabs(inputSampleL)) / ((inputSampleL == 0.0) ?1:fabs(inputSampleL));
inputSampleR = sin(inputSampleR * fabs(inputSampleR)) / ((inputSampleR == 0.0) ?1:fabs(inputSampleR));
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -81,12 +77,6 @@ void Spiral::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -142,18 +132,16 @@ void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleL = sin(inputSampleL * fabs(inputSampleL)) / ((inputSampleL == 0.0) ?1:fabs(inputSampleL));
inputSampleR = sin(inputSampleR * fabs(inputSampleR)) / ((inputSampleR == 0.0) ?1:fabs(inputSampleR));
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -163,10 +151,4 @@ void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/Spiral2/Spiral2Proc.cpp b/plugins/LinuxVST/src/Spiral2/Spiral2Proc.cpp
index d309448..a8669c5 100755
--- a/plugins/LinuxVST/src/Spiral2/Spiral2Proc.cpp
+++ b/plugins/LinuxVST/src/Spiral2/Spiral2Proc.cpp
@@ -118,18 +118,14 @@ void Spiral2::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
prevSampleR = drySampleR;
flip = !flip;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -139,12 +135,6 @@ void Spiral2::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -259,18 +249,16 @@ void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32
prevSampleR = drySampleR;
flip = !flip;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -280,10 +268,4 @@ void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/StarChild/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/StarChild/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/StarChild/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/StarChild/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/StarChild/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..1c72906
--- /dev/null
+++ b/plugins/LinuxVST/src/StarChild/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/StarChild/StarChild.cpp b/plugins/LinuxVST/src/StarChild/StarChild.cpp
index 84becbc..1b29d50 100755
--- a/plugins/LinuxVST/src/StarChild/StarChild.cpp
+++ b/plugins/LinuxVST/src/StarChild/StarChild.cpp
@@ -65,11 +65,8 @@ StarChild::StarChild(audioMasterCallback audioMaster) :
increment = 1;
dutyCycle = 1;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/StarChild/StarChild.h b/plugins/LinuxVST/src/StarChild/StarChild.h
index 7ae986a..630be3c 100755
--- a/plugins/LinuxVST/src/StarChild/StarChild.h
+++ b/plugins/LinuxVST/src/StarChild/StarChild.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double d[45102];
diff --git a/plugins/LinuxVST/src/StarChild/StarChildProc.cpp b/plugins/LinuxVST/src/StarChild/StarChildProc.cpp
index 03c8e31..047948a 100755
--- a/plugins/LinuxVST/src/StarChild/StarChildProc.cpp
+++ b/plugins/LinuxVST/src/StarChild/StarChildProc.cpp
@@ -14,9 +14,6 @@ void StarChild::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -392,25 +389,14 @@ void StarChild::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR += drySampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -429,9 +415,6 @@ void StarChild::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -807,25 +790,16 @@ void StarChild::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR += drySampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/StereoFX/StereoFX.cpp b/plugins/LinuxVST/src/StereoFX/StereoFX.cpp
index 63c23db..704cbf3 100755
--- a/plugins/LinuxVST/src/StereoFX/StereoFX.cpp
+++ b/plugins/LinuxVST/src/StereoFX/StereoFX.cpp
@@ -17,10 +17,8 @@ StereoFX::StereoFX(audioMasterCallback audioMaster) :
C = 0.0;
iirSampleA = 0.0;
iirSampleB = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
flip = false;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/LinuxVST/src/StereoFX/StereoFX.h b/plugins/LinuxVST/src/StereoFX/StereoFX.h
index 6748d1e..7a36059 100755
--- a/plugins/LinuxVST/src/StereoFX/StereoFX.h
+++ b/plugins/LinuxVST/src/StereoFX/StereoFX.h
@@ -56,10 +56,8 @@ private:
double iirSampleA;
double iirSampleB;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
//default stuff
diff --git a/plugins/LinuxVST/src/StereoFX/StereoFXProc.cpp b/plugins/LinuxVST/src/StereoFX/StereoFXProc.cpp
index 49be44f..0e9de74 100755
--- a/plugins/LinuxVST/src/StereoFX/StereoFXProc.cpp
+++ b/plugins/LinuxVST/src/StereoFX/StereoFXProc.cpp
@@ -17,9 +17,6 @@ void StereoFX::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double mid;
@@ -138,25 +135,14 @@ void StereoFX::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -178,9 +164,6 @@ void StereoFX::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double mid;
@@ -299,25 +282,16 @@ void StereoFX::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Surge/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Surge/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Surge/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Surge/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Surge/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..03e6045
--- /dev/null
+++ b/plugins/LinuxVST/src/Surge/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Surge/Surge.cpp b/plugins/LinuxVST/src/Surge/Surge.cpp
index 711c0df..222fbcf 100755
--- a/plugins/LinuxVST/src/Surge/Surge.cpp
+++ b/plugins/LinuxVST/src/Surge/Surge.cpp
@@ -12,10 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new S
Surge::Surge(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
flip = true;
chaseA = 0.0;
chaseB = 0.0;
diff --git a/plugins/LinuxVST/src/Surge/Surge.h b/plugins/LinuxVST/src/Surge/Surge.h
index 0e485c3..7f42c9f 100755
--- a/plugins/LinuxVST/src/Surge/Surge.h
+++ b/plugins/LinuxVST/src/Surge/Surge.h
@@ -53,10 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
long double chaseA;
long double chaseB;
diff --git a/plugins/LinuxVST/src/Surge/SurgeProc.cpp b/plugins/LinuxVST/src/Surge/SurgeProc.cpp
index 7a72b2f..cd82bad 100755
--- a/plugins/LinuxVST/src/Surge/SurgeProc.cpp
+++ b/plugins/LinuxVST/src/Surge/SurgeProc.cpp
@@ -17,9 +17,6 @@ void Surge::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -120,27 +117,14 @@ void Surge::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -162,9 +146,6 @@ void Surge::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -264,27 +245,16 @@ void Surge::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/SurgeTide/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/SurgeTide/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/SurgeTide/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/SurgeTide/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/SurgeTide/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..17702f9
--- /dev/null
+++ b/plugins/LinuxVST/src/SurgeTide/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/SurgeTide/SurgeTide.cpp b/plugins/LinuxVST/src/SurgeTide/SurgeTide.cpp
index 8df46c0..494e886 100755
--- a/plugins/LinuxVST/src/SurgeTide/SurgeTide.cpp
+++ b/plugins/LinuxVST/src/SurgeTide/SurgeTide.cpp
@@ -15,10 +15,8 @@ SurgeTide::SurgeTide(audioMasterCallback audioMaster) :
A = 0.5;
B = 0.3;
C = 1.0;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
flip = true;
chaseA = 0.0;
chaseB = 0.0;
diff --git a/plugins/LinuxVST/src/SurgeTide/SurgeTide.h b/plugins/LinuxVST/src/SurgeTide/SurgeTide.h
index 27495d7..8f8cd42 100755
--- a/plugins/LinuxVST/src/SurgeTide/SurgeTide.h
+++ b/plugins/LinuxVST/src/SurgeTide/SurgeTide.h
@@ -54,10 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
long double chaseA;
long double chaseB;
diff --git a/plugins/LinuxVST/src/SurgeTide/SurgeTideProc.cpp b/plugins/LinuxVST/src/SurgeTide/SurgeTideProc.cpp
index 2fc6a1a..59a92aa 100755
--- a/plugins/LinuxVST/src/SurgeTide/SurgeTideProc.cpp
+++ b/plugins/LinuxVST/src/SurgeTide/SurgeTideProc.cpp
@@ -17,9 +17,6 @@ void SurgeTide::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -110,27 +107,14 @@ void SurgeTide::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -152,9 +136,6 @@ void SurgeTide::processDoubleReplacing(double **inputs, double **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -245,27 +226,16 @@ void SurgeTide::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Swell/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Swell/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Swell/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Swell/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Swell/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..f1f16de
--- /dev/null
+++ b/plugins/LinuxVST/src/Swell/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Swell/Swell.cpp b/plugins/LinuxVST/src/Swell/Swell.cpp
index 30518d8..e197cfb 100755
--- a/plugins/LinuxVST/src/Swell/Swell.cpp
+++ b/plugins/LinuxVST/src/Swell/Swell.cpp
@@ -21,11 +21,8 @@ Swell::Swell(audioMasterCallback audioMaster) :
louderL = false;
louderR = false;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Swell/Swell.h b/plugins/LinuxVST/src/Swell/Swell.h
index c383df2..7c108b7 100755
--- a/plugins/LinuxVST/src/Swell/Swell.h
+++ b/plugins/LinuxVST/src/Swell/Swell.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
diff --git a/plugins/LinuxVST/src/Swell/SwellProc.cpp b/plugins/LinuxVST/src/Swell/SwellProc.cpp
index 28c0aba..3ab1e9b 100755
--- a/plugins/LinuxVST/src/Swell/SwellProc.cpp
+++ b/plugins/LinuxVST/src/Swell/SwellProc.cpp
@@ -17,9 +17,6 @@ void Swell::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double thresholdOn = pow(A,2) * B;
double speedOn = (pow(B,2)*0.001)/overallscale;
@@ -97,25 +94,14 @@ void Swell::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -137,9 +123,6 @@ void Swell::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double thresholdOn = pow(A,2) * B;
double speedOn = (pow(B,2)*0.001)/overallscale;
@@ -217,25 +200,16 @@ void Swell::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/TapeDelay/TapeDelayProc.cpp b/plugins/LinuxVST/src/TapeDelay/TapeDelayProc.cpp
index 43fa743..e2f1ade 100755
--- a/plugins/LinuxVST/src/TapeDelay/TapeDelayProc.cpp
+++ b/plugins/LinuxVST/src/TapeDelay/TapeDelayProc.cpp
@@ -156,18 +156,14 @@ void TapeDelay::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleL = (inputSampleL * dry) + (dL[delay] * wet);
inputSampleR = (inputSampleR * dry) + (dR[delay] * wet);
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -177,12 +173,6 @@ void TapeDelay::processReplacing(float **inputs, float **outputs, VstInt32 sampl
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -333,18 +323,16 @@ void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleL = (inputSampleL * dry) + (dL[delay] * wet);
inputSampleR = (inputSampleR * dry) + (dR[delay] * wet);
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -354,10 +342,4 @@ void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/TapeDust/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/TapeDust/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/TapeDust/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/TapeDust/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/TapeDust/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..df95641
--- /dev/null
+++ b/plugins/LinuxVST/src/TapeDust/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/TapeDust/TapeDust.cpp b/plugins/LinuxVST/src/TapeDust/TapeDust.cpp
index 9638c14..0ce16e0 100755
--- a/plugins/LinuxVST/src/TapeDust/TapeDust.cpp
+++ b/plugins/LinuxVST/src/TapeDust/TapeDust.cpp
@@ -22,10 +22,8 @@ TapeDust::TapeDust(audioMasterCallback audioMaster) :
fR[count] = 0.0;
}
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/LinuxVST/src/TapeDust/TapeDust.h b/plugins/LinuxVST/src/TapeDust/TapeDust.h
index 7b3a7fd..facbf40 100755
--- a/plugins/LinuxVST/src/TapeDust/TapeDust.h
+++ b/plugins/LinuxVST/src/TapeDust/TapeDust.h
@@ -53,10 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool fpFlip;
//default stuff
diff --git a/plugins/LinuxVST/src/TapeDust/TapeDustProc.cpp b/plugins/LinuxVST/src/TapeDust/TapeDustProc.cpp
index 3d6588d..429a366 100755
--- a/plugins/LinuxVST/src/TapeDust/TapeDustProc.cpp
+++ b/plugins/LinuxVST/src/TapeDust/TapeDustProc.cpp
@@ -13,9 +13,6 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -93,6 +90,7 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = -inputSampleL;
inputSampleR = -inputSampleR;
}
+ fpFlip = !fpFlip;
for(int count = 0; count < 9; count++) {
if (gainL > 1.0) {
@@ -120,25 +118,14 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -156,9 +143,6 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -236,6 +220,7 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = -inputSampleL;
inputSampleR = -inputSampleR;
}
+ fpFlip = !fpFlip;
for(int count = 0; count < 9; count++) {
if (gainL > 1.0) {
@@ -263,25 +248,16 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/TapeFat/TapeFatProc.cpp b/plugins/LinuxVST/src/TapeFat/TapeFatProc.cpp
index 3f81d20..8eb0e98 100755
--- a/plugins/LinuxVST/src/TapeFat/TapeFatProc.cpp
+++ b/plugins/LinuxVST/src/TapeFat/TapeFatProc.cpp
@@ -119,18 +119,14 @@ void TapeFat::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
gcount--;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -140,12 +136,6 @@ void TapeFat::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -260,18 +250,16 @@ void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32
gcount--;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -281,10 +269,4 @@ void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/Thunder/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Thunder/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Thunder/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Thunder/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Thunder/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..b01488d
--- /dev/null
+++ b/plugins/LinuxVST/src/Thunder/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Thunder/Thunder.cpp b/plugins/LinuxVST/src/Thunder/Thunder.cpp
index 015eabd..7bc8226 100755
--- a/plugins/LinuxVST/src/Thunder/Thunder.cpp
+++ b/plugins/LinuxVST/src/Thunder/Thunder.cpp
@@ -15,10 +15,8 @@ Thunder::Thunder(audioMasterCallback audioMaster) :
A = 0.0;
B = 1.0;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
muSpeedA = 10000;
muSpeedB = 10000;
muCoefficientA = 1;
diff --git a/plugins/LinuxVST/src/Thunder/Thunder.h b/plugins/LinuxVST/src/Thunder/Thunder.h
index 1ef1d03..9e49054 100755
--- a/plugins/LinuxVST/src/Thunder/Thunder.h
+++ b/plugins/LinuxVST/src/Thunder/Thunder.h
@@ -69,10 +69,8 @@ private:
double iirSampleAM;
double iirSampleBM;
double iirSampleCM;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
float A;
diff --git a/plugins/LinuxVST/src/Thunder/ThunderProc.cpp b/plugins/LinuxVST/src/Thunder/ThunderProc.cpp
index bd401d4..2cf454d 100755
--- a/plugins/LinuxVST/src/Thunder/ThunderProc.cpp
+++ b/plugins/LinuxVST/src/Thunder/ThunderProc.cpp
@@ -40,9 +40,6 @@ void Thunder::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double resultML;
double resultMR;
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -225,27 +222,14 @@ void Thunder::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
inputSampleR *= outputGain;
}
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
@@ -291,9 +275,6 @@ void Thunder::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double resultML;
double resultMR;
- double fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -476,27 +457,16 @@ void Thunder::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR *= outputGain;
}
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
diff --git a/plugins/LinuxVST/src/ToTape5/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/ToTape5/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/ToTape5/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/ToTape5/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/ToTape5/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..b0c4487
--- /dev/null
+++ b/plugins/LinuxVST/src/ToTape5/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/ToTape5/ToTape5.cpp b/plugins/LinuxVST/src/ToTape5/ToTape5.cpp
index 01f61cb..6136aaf 100755
--- a/plugins/LinuxVST/src/ToTape5/ToTape5.cpp
+++ b/plugins/LinuxVST/src/ToTape5/ToTape5.cpp
@@ -98,11 +98,8 @@ ToTape5::ToTape5(audioMasterCallback audioMaster) :
hcount = 0;
flip = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/ToTape5/ToTape5.h b/plugins/LinuxVST/src/ToTape5/ToTape5.h
index ac26df5..d049014 100755
--- a/plugins/LinuxVST/src/ToTape5/ToTape5.h
+++ b/plugins/LinuxVST/src/ToTape5/ToTape5.h
@@ -140,11 +140,8 @@ private:
double iirSampleZR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/ToTape5/ToTape5Proc.cpp b/plugins/LinuxVST/src/ToTape5/ToTape5Proc.cpp
index 4d2d5c7..5824f80 100755
--- a/plugins/LinuxVST/src/ToTape5/ToTape5Proc.cpp
+++ b/plugins/LinuxVST/src/ToTape5/ToTape5Proc.cpp
@@ -17,7 +17,7 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
-
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
double inputgain = pow(A+1.0,3);
double outputgain = E;
double wet = F;
@@ -63,9 +63,6 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double tempSampleR;
double drySampleR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -358,25 +355,14 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -398,7 +384,7 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
-
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
double inputgain = pow(A+1.0,3);
double outputgain = E;
double wet = F;
@@ -443,10 +429,6 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double bridgerectifierR;
double tempSampleR;
double drySampleR;
-
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -738,25 +720,16 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/ToVinyl4/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/ToVinyl4/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/ToVinyl4/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/ToVinyl4/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/ToVinyl4/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..33b5837
--- /dev/null
+++ b/plugins/LinuxVST/src/ToVinyl4/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.cpp b/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.cpp
index b0c91f8..429187c 100755
--- a/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.cpp
+++ b/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.cpp
@@ -87,11 +87,8 @@ ToVinyl4::ToVinyl4(audioMasterCallback audioMaster) :
B = 0.3424051; //44.0 hz = ((B*B)*290)+10 (B*B)*290 = 34 (B*B) = 0.1172413 sqrt() = 0.3424051
C = 0.32;
D = 0.064;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.h b/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.h
index 57bffac..6a2dc26 100755
--- a/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.h
+++ b/plugins/LinuxVST/src/ToVinyl4/ToVinyl4.h
@@ -142,11 +142,8 @@ private:
double bMidPrev;
double bSidePrev;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/ToVinyl4/ToVinyl4Proc.cpp b/plugins/LinuxVST/src/ToVinyl4/ToVinyl4Proc.cpp
index 8d9dc0c..a67af99 100755
--- a/plugins/LinuxVST/src/ToVinyl4/ToVinyl4Proc.cpp
+++ b/plugins/LinuxVST/src/ToVinyl4/ToVinyl4Proc.cpp
@@ -17,9 +17,6 @@ void ToVinyl4::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double fusswithscale = 50000; //corrected
double cutofffreq = ((A*A)*290.0)+10.0;
@@ -464,25 +461,14 @@ void ToVinyl4::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = accumulatorSample;
//we just re-use accumulatorSample to do this little shuffle
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -504,9 +490,6 @@ void ToVinyl4::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double fusswithscale = 50000; //corrected
double cutofffreq = ((A*A)*290.0)+10.0;
@@ -950,25 +933,16 @@ void ToVinyl4::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = accumulatorSample;
//we just re-use accumulatorSample to do this little shuffle
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/ToneSlant/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/ToneSlant/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/ToneSlant/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/ToneSlant/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/ToneSlant/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..b31a1bb
--- /dev/null
+++ b/plugins/LinuxVST/src/ToneSlant/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/ToneSlant/ToneSlant.cpp b/plugins/LinuxVST/src/ToneSlant/ToneSlant.cpp
index 0ed3618..d99fa60 100755
--- a/plugins/LinuxVST/src/ToneSlant/ToneSlant.cpp
+++ b/plugins/LinuxVST/src/ToneSlant/ToneSlant.cpp
@@ -15,11 +15,8 @@ ToneSlant::ToneSlant(audioMasterCallback audioMaster) :
A = 0.0;
B = 0.0;
for(int count = 0; count < 102; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;}
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/ToneSlant/ToneSlant.h b/plugins/LinuxVST/src/ToneSlant/ToneSlant.h
index 655cc55..7c52bca 100755
--- a/plugins/LinuxVST/src/ToneSlant/ToneSlant.h
+++ b/plugins/LinuxVST/src/ToneSlant/ToneSlant.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/ToneSlant/ToneSlantProc.cpp b/plugins/LinuxVST/src/ToneSlant/ToneSlantProc.cpp
index b594b05..d78cfb5 100755
--- a/plugins/LinuxVST/src/ToneSlant/ToneSlantProc.cpp
+++ b/plugins/LinuxVST/src/ToneSlant/ToneSlantProc.cpp
@@ -14,9 +14,6 @@ void ToneSlant::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputSampleL;
double inputSampleR;
@@ -109,25 +106,14 @@ void ToneSlant::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR += (correctionSampleR * applySlant);
//our one math operation on the input data coming in
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -146,9 +132,6 @@ void ToneSlant::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputSampleL;
double inputSampleR;
@@ -240,25 +223,16 @@ void ToneSlant::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR += (correctionSampleR * applySlant);
//our one math operation on the input data coming in
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/TransDesk/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/TransDesk/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/TransDesk/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/TransDesk/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/TransDesk/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..1e5676d
--- /dev/null
+++ b/plugins/LinuxVST/src/TransDesk/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/TransDesk/TransDesk.cpp b/plugins/LinuxVST/src/TransDesk/TransDesk.cpp
index 24443bd..3f352f7 100755
--- a/plugins/LinuxVST/src/TransDesk/TransDesk.cpp
+++ b/plugins/LinuxVST/src/TransDesk/TransDesk.cpp
@@ -25,11 +25,8 @@ TransDesk::TransDesk(audioMasterCallback audioMaster) :
lastOutSampleR = 0.0;
lastSlewR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/TransDesk/TransDesk.h b/plugins/LinuxVST/src/TransDesk/TransDesk.h
index b3b891d..5729b4c 100755
--- a/plugins/LinuxVST/src/TransDesk/TransDesk.h
+++ b/plugins/LinuxVST/src/TransDesk/TransDesk.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
int gcount;
diff --git a/plugins/LinuxVST/src/TransDesk/TransDeskProc.cpp b/plugins/LinuxVST/src/TransDesk/TransDeskProc.cpp
index c7df5e8..c8b45c2 100755
--- a/plugins/LinuxVST/src/TransDesk/TransDeskProc.cpp
+++ b/plugins/LinuxVST/src/TransDesk/TransDeskProc.cpp
@@ -17,9 +17,6 @@ void TransDesk::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = 0.02198359;
double depthA = 3.0;
@@ -200,25 +197,14 @@ void TransDesk::processReplacing(float **inputs, float **outputs, VstInt32 sampl
gcount--;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -240,9 +226,6 @@ void TransDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = 0.02198359;
double depthA = 3.0;
@@ -423,25 +406,16 @@ void TransDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt
gcount--;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Tremolo/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/Tremolo/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/Tremolo/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Tremolo/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/Tremolo/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..9d04545
--- /dev/null
+++ b/plugins/LinuxVST/src/Tremolo/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/Tremolo/Tremolo.cpp b/plugins/LinuxVST/src/Tremolo/Tremolo.cpp
index be5d06d..f0b649d 100755
--- a/plugins/LinuxVST/src/Tremolo/Tremolo.cpp
+++ b/plugins/LinuxVST/src/Tremolo/Tremolo.cpp
@@ -21,11 +21,8 @@ Tremolo::Tremolo(audioMasterCallback audioMaster) :
depthAmount = 0.0;
lastSpeed = 1000.0;
lastDepth = 1000.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Tremolo/Tremolo.h b/plugins/LinuxVST/src/Tremolo/Tremolo.h
index ea40aa6..11fc718 100755
--- a/plugins/LinuxVST/src/Tremolo/Tremolo.h
+++ b/plugins/LinuxVST/src/Tremolo/Tremolo.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double sweep;
diff --git a/plugins/LinuxVST/src/Tremolo/TremoloProc.cpp b/plugins/LinuxVST/src/Tremolo/TremoloProc.cpp
index d0de7cc..d27dc86 100755
--- a/plugins/LinuxVST/src/Tremolo/TremoloProc.cpp
+++ b/plugins/LinuxVST/src/Tremolo/TremoloProc.cpp
@@ -17,9 +17,6 @@ void Tremolo::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
speedChase = pow(A,4);
depthChase = B;
@@ -151,25 +148,14 @@ void Tremolo::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
inputSampleR = (drySampleR * (1-depth)) + (inputSampleR*depth);
//end R
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -191,9 +177,6 @@ void Tremolo::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
speedChase = pow(A,4);
depthChase = B;
@@ -326,25 +309,16 @@ void Tremolo::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR = (drySampleR * (1-depth)) + (inputSampleR*depth);
//end R
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/TubeDesk/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/TubeDesk/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/TubeDesk/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/TubeDesk/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/TubeDesk/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..318d2bc
--- /dev/null
+++ b/plugins/LinuxVST/src/TubeDesk/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/TubeDesk/TubeDesk.cpp b/plugins/LinuxVST/src/TubeDesk/TubeDesk.cpp
index fc4bd75..5a7465c 100755
--- a/plugins/LinuxVST/src/TubeDesk/TubeDesk.cpp
+++ b/plugins/LinuxVST/src/TubeDesk/TubeDesk.cpp
@@ -25,11 +25,8 @@ TubeDesk::TubeDesk(audioMasterCallback audioMaster) :
lastOutSampleR = 0.0;
lastSlewR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/TubeDesk/TubeDesk.h b/plugins/LinuxVST/src/TubeDesk/TubeDesk.h
index b41b283..fb15768 100755
--- a/plugins/LinuxVST/src/TubeDesk/TubeDesk.h
+++ b/plugins/LinuxVST/src/TubeDesk/TubeDesk.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
int gcount;
diff --git a/plugins/LinuxVST/src/TubeDesk/TubeDeskProc.cpp b/plugins/LinuxVST/src/TubeDesk/TubeDeskProc.cpp
index 2636076..cccf6e2 100755
--- a/plugins/LinuxVST/src/TubeDesk/TubeDeskProc.cpp
+++ b/plugins/LinuxVST/src/TubeDesk/TubeDeskProc.cpp
@@ -17,9 +17,6 @@ void TubeDesk::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = 0.4384938;
double depthA = 549.0;
@@ -199,25 +196,14 @@ void TubeDesk::processReplacing(float **inputs, float **outputs, VstInt32 sample
gcount--;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -239,9 +225,6 @@ void TubeDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = 0.4384938;
double depthA = 549.0;
@@ -421,25 +404,16 @@ void TubeDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt3
gcount--;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/UnBox/UnBoxProc.cpp b/plugins/LinuxVST/src/UnBox/UnBoxProc.cpp
index 12133dc..3cb3aab 100755
--- a/plugins/LinuxVST/src/UnBox/UnBoxProc.cpp
+++ b/plugins/LinuxVST/src/UnBox/UnBoxProc.cpp
@@ -218,18 +218,14 @@ void UnBox::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
if (output != 1.0) {inputSampleL *= output; inputSampleR *= output;}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -239,12 +235,6 @@ void UnBox::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -458,18 +448,16 @@ void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
if (output != 1.0) {inputSampleL *= output; inputSampleR *= output;}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -479,10 +467,4 @@ void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/VariMu/VariMuProc.cpp b/plugins/LinuxVST/src/VariMu/VariMuProc.cpp
index b966cd8..323b5e4 100755
--- a/plugins/LinuxVST/src/VariMu/VariMuProc.cpp
+++ b/plugins/LinuxVST/src/VariMu/VariMuProc.cpp
@@ -233,18 +233,14 @@ void VariMu::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -254,12 +250,6 @@ void VariMu::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -488,18 +478,16 @@ void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -509,10 +497,4 @@ void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo b/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/VSTProject/v14/.suo b/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..29e8736
--- /dev/null
+++ b/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp b/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp
index c30bd47..19f1d94 100644..100755
--- a/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp
+++ b/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp
@@ -28,11 +28,8 @@ VoiceOfTheStarship::VoiceOfTheStarship(audioMasterCallback audioMaster) :
for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;}
lastAlgorithm = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.h b/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.h
index febb344..519923b 100644..100755
--- a/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.h
+++ b/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.h
@@ -73,11 +73,8 @@ private:
int lastAlgorithm;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp b/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp
index 32979d0..bbb14fa 100644..100755
--- a/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp
+++ b/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp
@@ -79,9 +79,6 @@ void VoiceOfTheStarship::processReplacing(float **inputs, float **outputs, VstIn
double inputSampleL;
double inputSampleR;
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -181,25 +178,14 @@ void VoiceOfTheStarship::processReplacing(float **inputs, float **outputs, VstIn
filterflip = !filterflip;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -283,9 +269,6 @@ void VoiceOfTheStarship::processDoubleReplacing(double **inputs, double **output
double inputSampleL;
double inputSampleR;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -384,25 +367,16 @@ void VoiceOfTheStarship::processDoubleReplacing(double **inputs, double **output
flipR = !flipR;
filterflip = !filterflip;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/Wider/Wider.cpp b/plugins/LinuxVST/src/Wider/Wider.cpp
index c1e57d0..26d4d47 100755
--- a/plugins/LinuxVST/src/Wider/Wider.cpp
+++ b/plugins/LinuxVST/src/Wider/Wider.cpp
@@ -17,11 +17,8 @@ Wider::Wider(audioMasterCallback audioMaster) :
C = 1.0;
for(int fcount = 0; fcount < 4098; fcount++) {p[fcount] = 0.0;}
count = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/LinuxVST/src/Wider/Wider.h b/plugins/LinuxVST/src/Wider/Wider.h
index 8b04cfb..6a6a2df 100755
--- a/plugins/LinuxVST/src/Wider/Wider.h
+++ b/plugins/LinuxVST/src/Wider/Wider.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double p[4099];
diff --git a/plugins/LinuxVST/src/Wider/WiderProc.cpp b/plugins/LinuxVST/src/Wider/WiderProc.cpp
index 618e651..f90fa21 100755
--- a/plugins/LinuxVST/src/Wider/WiderProc.cpp
+++ b/plugins/LinuxVST/src/Wider/WiderProc.cpp
@@ -17,9 +17,6 @@ void Wider::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -141,25 +138,14 @@ void Wider::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleL = (drySampleL * dry) + ((mid+side) * wet);
inputSampleR = (drySampleR * dry) + ((mid-side) * wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -181,9 +167,6 @@ void Wider::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -305,25 +288,16 @@ void Wider::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleL = (drySampleL * dry) + ((mid+side) * wet);
inputSampleR = (drySampleR * dry) + ((mid-side) * wet);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/LinuxVST/src/uLawDecode/uLawDecodeProc.cpp b/plugins/LinuxVST/src/uLawDecode/uLawDecodeProc.cpp
index a78b3c2..1835623 100755
--- a/plugins/LinuxVST/src/uLawDecode/uLawDecodeProc.cpp
+++ b/plugins/LinuxVST/src/uLawDecode/uLawDecodeProc.cpp
@@ -88,18 +88,14 @@ void uLawDecode::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -109,12 +105,6 @@ void uLawDecode::processReplacing(float **inputs, float **outputs, VstInt32 samp
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -198,18 +188,16 @@ void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -219,10 +207,4 @@ void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstIn
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/LinuxVST/src/uLawEncode/uLawEncodeProc.cpp b/plugins/LinuxVST/src/uLawEncode/uLawEncodeProc.cpp
index 3d86a7f..c5dd74d 100755
--- a/plugins/LinuxVST/src/uLawEncode/uLawEncodeProc.cpp
+++ b/plugins/LinuxVST/src/uLawEncode/uLawEncodeProc.cpp
@@ -88,18 +88,14 @@ void uLawEncode::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -109,12 +105,6 @@ void uLawEncode::processReplacing(float **inputs, float **outputs, VstInt32 samp
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -198,18 +188,16 @@ void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -219,10 +207,4 @@ void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstIn
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/ADClip7/ADClip7.cpp b/plugins/MacAU/ADClip7/ADClip7.cpp
index 688c254..4835b0f 100755
--- a/plugins/MacAU/ADClip7/ADClip7.cpp
+++ b/plugins/MacAU/ADClip7/ADClip7.cpp
@@ -205,9 +205,7 @@ void ADClip7::ADClip7Kernel::Reset()
refclip = 0.99;
iirLowsA = 0.0;
iirLowsB = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -225,7 +223,6 @@ void ADClip7::ADClip7Kernel::Process( const Float32 *inSourceP,
Float64 overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
Float64 fpOld = 0.618033988749894848204586; //golden ratio!
Float64 fpNew = 1.0 - fpOld;
@@ -479,19 +476,11 @@ void ADClip7::ADClip7Kernel::Process( const Float32 *inSourceP,
if (inputSample < -refclip) inputSample = -refclip;
//final iron bar
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/ADClip7/ADClip7.h b/plugins/MacAU/ADClip7/ADClip7.h
index 5388f80..215cc2c 100755
--- a/plugins/MacAU/ADClip7/ADClip7.h
+++ b/plugins/MacAU/ADClip7/ADClip7.h
@@ -148,9 +148,7 @@ public:
Float64 iirLowsA;
Float64 iirLowsB;
long double refclip;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser
index 6d857bb..941868c 100755
--- a/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser
@@ -49,55 +49,45 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538004990;
- PBXWorkspaceStateSaveDate = 538004990;
+ PBXPerProjectTemplateStateSaveDate = 569587824;
+ PBXWorkspaceStateSaveDate = 569587824;
};
perUserProjectItems = {
- 8B79CD0220114E0500E8A187 /* PBXTextBookmark */ = 8B79CD0220114E0500E8A187 /* PBXTextBookmark */;
- 8B7B31211F8EA92200DC6305 /* PBXTextBookmark */ = 8B7B31211F8EA92200DC6305 /* PBXTextBookmark */;
- 8B80DAAF1F83179100B72A72 /* PBXTextBookmark */ = 8B80DAAF1F83179100B72A72 /* PBXTextBookmark */;
+ 8B79272821F33919006E9731 /* PBXTextBookmark */ = 8B79272821F33919006E9731 /* PBXTextBookmark */;
+ 8B79273321F33979006E9731 /* PBXTextBookmark */ = 8B79273321F33979006E9731 /* PBXTextBookmark */;
8BAC117C1F8245C00066CBCE /* PlistBookmark */ = 8BAC117C1F8245C00066CBCE /* PlistBookmark */;
+ 8BBB330321C4563C00825986 /* PBXTextBookmark */ = 8BBB330321C4563C00825986 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B79CD0220114E0500E8A187 /* PBXTextBookmark */ = {
+ 8B79272821F33919006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* ADClip7.h */;
- name = "ADClip7.h: 58";
- rLen = 0;
- rLoc = 2914;
- rType = 0;
- vrLen = 231;
- vrLoc = 2754;
- };
- 8B7B31211F8EA92200DC6305 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* ADClip7.h */;
- name = "ADClip7.h: 58";
- rLen = 0;
- rLoc = 2914;
+ fRef = 8BA05A660720730100365D66 /* ADClip7.cpp */;
+ name = "ADClip7.cpp: 205";
+ rLen = 7;
+ rLoc = 9006;
rType = 0;
- vrLen = 253;
- vrLoc = 2732;
+ vrLen = 261;
+ vrLoc = 9866;
};
- 8B80DAAF1F83179100B72A72 /* PBXTextBookmark */ = {
+ 8B79273321F33979006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ADClip7.cpp */;
name = "ADClip7.cpp: 205";
rLen = 7;
rLoc = 9006;
rType = 0;
- vrLen = 372;
- vrLoc = 9703;
+ vrLen = 215;
+ vrLoc = 9864;
};
8BA05A660720730100365D66 /* ADClip7.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {980, 7163}}";
- sepNavSelRange = "{18297, 0}";
- sepNavVisRange = "{17647, 1478}";
- sepNavWindowFrame = "{{335, 43}, {1027, 835}}";
+ sepNavIntBoundsRect = "{{0, 0}, {572, 6513}}";
+ sepNavSelRange = "{9006, 7}";
+ sepNavVisRange = "{9864, 215}";
+ sepNavWindowFrame = "{{327, 43}, {1027, 835}}";
};
};
8BA05A690720730100365D66 /* ADClip7Version.h */ = {
@@ -120,12 +110,22 @@
rLen = 0;
rLoc = 9223372036854775808;
};
+ 8BBB330321C4563C00825986 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* ADClip7.h */;
+ name = "ADClip7.h: 58";
+ rLen = 0;
+ rLoc = 2914;
+ rType = 0;
+ vrLen = 229;
+ vrLoc = 2756;
+ };
8BC6025B073B072D006C4272 /* ADClip7.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 2197}}";
- sepNavSelRange = "{2914, 0}";
- sepNavVisRange = "{2754, 231}";
- sepNavWindowFrame = "{{859, 43}, {1027, 835}}";
+ sepNavIntBoundsRect = "{{0, 0}, {980, 2132}}";
+ sepNavSelRange = "{5842, 0}";
+ sepNavVisRange = "{4309, 1634}";
+ sepNavWindowFrame = "{{413, 43}, {1027, 835}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3
index 7b3b431..186a188 100755
--- a/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 170 841 654 0 0 1440 878 </string>
+ <string>391 159 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -342,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>ADClip7.h</string>
+ <string>ADClip7.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -350,16 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>ADClip7.h</string>
+ <string>ADClip7.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B79CD0220114E0500E8A187</string>
+ <string>8B79273321F33979006E9731</string>
<key>history</key>
<array>
<string>8BAC117C1F8245C00066CBCE</string>
- <string>8B80DAAF1F83179100B72A72</string>
- <string>8B7B31211F8EA92200DC6305</string>
+ <string>8BBB330321C4563C00825986</string>
+ <string>8B79272821F33919006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 126}}</string>
+ <string>{{0, 0}, {531, 92}}</string>
<key>RubberWindowFrame</key>
- <string>599 170 841 654 0 0 1440 878 </string>
+ <string>391 159 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>126pt</string>
+ <string>92pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>482pt</string>
+ <string>516pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 455}}</string>
- <key>RubberWindowFrame</key>
- <string>599 170 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 489}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 379}}</string>
+ <string>{{10, 27}, {531, 489}}</string>
+ <key>RubberWindowFrame</key>
+ <string>391 159 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -482,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B79CD0320114E0500E8A187</string>
+ <string>8B79273421F33979006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B79CD0420114E0500E8A187</string>
+ <string>8B79273521F33979006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B79CD0520114E0500E8A187</string>
+ <string>8B79273621F33979006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538004997.98427904</real>
+ <real>569588089.57457805</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -676,10 +674,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
+ <string>8B79273721F33979006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/ADClip7/ADClip7.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 170 841 654 0 0 1440 878 </string>
+ <string>391 159 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/ADT/ADT.cpp b/plugins/MacAU/ADT/ADT.cpp
index b12c056..098adaa 100755
--- a/plugins/MacAU/ADT/ADT.cpp
+++ b/plugins/MacAU/ADT/ADT.cpp
@@ -317,23 +317,15 @@ void ADT::ADTKernel::Process( const Float32 *inSourceP,
if (output < 1.0) inputSample *= output;
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.pbxuser
index 2f05153..3d176d1 100755
--- a/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561258474;
- PBXWorkspaceStateSaveDate = 561258474;
+ PBXPerProjectTemplateStateSaveDate = 569588119;
+ PBXWorkspaceStateSaveDate = 569588119;
};
perUserProjectItems = {
8B15DB8E21742E37007AD769 /* PlistBookmark */ = 8B15DB8E21742E37007AD769 /* PlistBookmark */;
- 8BE627BC215F0C7700E4E476 /* PlistBookmark */ = 8BE627BC215F0C7700E4E476 /* PlistBookmark */;
+ 8B79275021F339F0006E9731 /* PlistBookmark */ = 8B79275021F339F0006E9731 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -72,12 +72,24 @@
rLen = 0;
rLoc = 0;
};
+ 8B79275021F339F0006E9731 /* PlistBookmark */ = {
+ isa = PlistBookmark;
+ fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
+ fallbackIsa = PBXBookmark;
+ isK = 0;
+ kPath = (
+ CFBundleName,
+ );
+ name = /Users/christopherjohnson/Desktop/MacAU/ADT/Info.plist;
+ rLen = 0;
+ rLoc = 0;
+ };
8BA05A660720730100365D66 /* ADT.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {719, 4563}}";
- sepNavSelRange = "{14352, 0}";
- sepNavVisRange = "{0, 0}";
- sepNavWindowFrame = "{{701, 68}, {890, 810}}";
+ sepNavIntBoundsRect = "{{0, 0}, {843, 4654}}";
+ sepNavSelRange = "{13854, 0}";
+ sepNavVisRange = "{12187, 1670}";
+ sepNavWindowFrame = "{{396, 68}, {890, 810}}";
};
};
8BA05A690720730100365D66 /* ADTVersion.h */ = {
@@ -92,8 +104,8 @@
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {894, 2028}}";
sepNavSelRange = "{5711, 0}";
- sepNavVisRange = "{2516, 1388}";
- sepNavWindowFrame = "{{712, 68}, {890, 810}}";
+ sepNavVisRange = "{4340, 1557}";
+ sepNavWindowFrame = "{{550, 68}, {890, 810}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
@@ -110,18 +122,6 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BE627BC215F0C7700E4E476 /* PlistBookmark */ = {
- isa = PlistBookmark;
- fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
- fallbackIsa = PBXBookmark;
- isK = 0;
- kPath = (
- CFBundleName,
- );
- name = /Users/christopherjohnson/Desktop/MacAU/ADT/Info.plist;
- rLen = 0;
- rLoc = 9223372036854775808;
- };
8D01CCC60486CAD60068D4B7 /* ADT */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3
index fb2f9be..4fab981 100755
--- a/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>841</integer>
- <integer>841</integer>
+ <integer>653</integer>
+ <integer>653</integer>
</array>
<key>Perspectives</key>
<array>
@@ -324,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>775 349 653 504 0 0 1440 878 </string>
+ <string>597 292 653 504 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +352,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B15DB8E21742E37007AD769</string>
+ <string>8B79275021F339F0006E9731</string>
<key>history</key>
<array>
- <string>8BE627BC215F0C7700E4E476</string>
+ <string>8B15DB8E21742E37007AD769</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,7 +371,7 @@
<key>Frame</key>
<string>{{0, 0}, {343, 0}}</string>
<key>RubberWindowFrame</key>
- <string>775 349 653 504 0 0 1440 878 </string>
+ <string>597 292 653 504 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -395,8 +395,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {343, 431}}</string>
- <key>RubberWindowFrame</key>
- <string>775 349 653 504 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {343, 431}}</string>
+ <key>RubberWindowFrame</key>
+ <string>597 292 653 504 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B15DB7F21741FEB007AD769</string>
+ <string>8B79274221F339AE006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B15DB8021741FEB007AD769</string>
+ <string>8B79274321F339AE006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B15DB8121741FEB007AD769</string>
+ <string>8B79274421F339AE006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -655,7 +655,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561262135.87675905</real>
+ <real>569588208.91309297</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,7 +675,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/ADT/ADT.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>775 349 653 504 0 0 1440 878 </string>
+ <string>597 292 653 504 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.cpp b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.cpp
index 9fbaade..8d93557 100755
--- a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.cpp
+++ b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.cpp
@@ -181,10 +181,7 @@ void AQuickVoiceClip::AQuickVoiceClipKernel::Reset()
iirSampleC = 0.0;
iirSampleD = 0.0;
flip = false;
- demotimer = 0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -227,9 +224,6 @@ void AQuickVoiceClip::AQuickVoiceClipKernel::Process( const Float32 *inSourceP
Float64 outputSample;
bool clipOnset;
Float64 drySample;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -430,21 +424,7 @@ void AQuickVoiceClip::AQuickVoiceClipKernel::Process( const Float32 *inSourceP
inputSample += (((lastOutSample + lastOut2Sample + lastOut3Sample) / 3.6)*lpDepth);
}
if (lpDepth < 0.0) lpDepth = 0.0;
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output, hasn't been applied yet
-
+
inputSample *= (1.0-maxRecent);
inputSample += (passThrough * maxRecent);
//there's our raw signal, without antialiasing. Brings up low level stuff and softens more when hot
@@ -453,6 +433,11 @@ void AQuickVoiceClip::AQuickVoiceClipKernel::Process( const Float32 *inSourceP
if (inputSample < -cliplevel) inputSample = -cliplevel;
//final iron bar
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.h b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.h
index ef284bd..5cb485a 100755
--- a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.h
+++ b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.h
@@ -158,11 +158,7 @@ public:
Float64 iirSampleC;
Float64 iirSampleD;
bool flip;
- int demotimer;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
-
+ Float64 fpNShape;
};
};
diff --git a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser
index f98240c..ec97115 100755
--- a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser
@@ -49,29 +49,18 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528421130;
- PBXWorkspaceStateSaveDate = 528421130;
+ PBXPerProjectTemplateStateSaveDate = 569588500;
+ PBXWorkspaceStateSaveDate = 569588500;
};
perUserProjectItems = {
- 8B65E4DA1EFF50F700DF9573 /* PBXTextBookmark */ = 8B65E4DA1EFF50F700DF9573 /* PBXTextBookmark */;
- 8B9D72231F7EFB95007AB60F /* PBXTextBookmark */ = 8B9D72231F7EFB95007AB60F /* PBXTextBookmark */;
+ 8B79277E21F33BC7006E9731 /* PBXTextBookmark */ = 8B79277E21F33BC7006E9731 /* PBXTextBookmark */;
8B9D72B61F7F1114007AB60F /* PBXTextBookmark */ = 8B9D72B61F7F1114007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B65E4DA1EFF50F700DF9573 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* AQuickVoiceClip.cpp */;
- name = "AQuickVoiceClip.cpp: 420";
- rLen = 0;
- rLoc = 16700;
- rType = 0;
- vrLen = 137;
- vrLoc = 14995;
- };
- 8B9D72231F7EFB95007AB60F /* PBXTextBookmark */ = {
+ 8B79277E21F33BC7006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* AQuickVoiceClipVersion.h */;
name = "AQuickVoiceClipVersion.h: 54";
@@ -93,9 +82,9 @@
};
8BA05A660720730100365D66 /* AQuickVoiceClip.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1468, 5785}}";
- sepNavSelRange = "{11331, 0}";
- sepNavVisRange = "{9752, 2750}";
+ sepNavIntBoundsRect = "{{0, 0}, {1104, 6604}}";
+ sepNavSelRange = "{16734, 0}";
+ sepNavVisRange = "{15329, 1491}";
sepNavWindowFrame = "{{175, 59}, {1151, 803}}";
};
};
@@ -109,9 +98,9 @@
};
8BC6025B073B072D006C4272 /* AQuickVoiceClip.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1104, 2236}}";
- sepNavSelRange = "{5418, 0}";
- sepNavVisRange = "{1999, 1702}";
+ sepNavIntBoundsRect = "{{0, 0}, {1104, 2392}}";
+ sepNavSelRange = "{5940, 0}";
+ sepNavVisRange = "{4794, 1256}";
sepNavWindowFrame = "{{16, 57}, {1151, 803}}";
};
};
diff --git a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3
index 278e871..e2f0f99 100755
--- a/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -352,11 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D72B61F7F1114007AB60F</string>
+ <string>8B79277E21F33BC7006E9731</string>
<key>history</key>
<array>
- <string>8B65E4DA1EFF50F700DF9573</string>
- <string>8B9D72231F7EFB95007AB60F</string>
+ <string>8B9D72B61F7F1114007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {567, 13}}</string>
+ <string>{{0, 0}, {567, 0}}</string>
<key>RubberWindowFrame</key>
<string>218 365 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {567, 401}}</string>
- <key>RubberWindowFrame</key>
- <string>218 365 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {567, 414}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {567, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>218 365 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D72B71F7F1114007AB60F</string>
+ <string>8B79277F21F33BC7006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D72B81F7F1114007AB60F</string>
+ <string>8B79278021F33BC7006E9731</string>
<string>8B81AD171E85459D00889355</string>
- <string>8B9D72B91F7F1114007AB60F</string>
+ <string>8B79278121F33BC7006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528421140.86927599</real>
+ <real>569588679.18826604</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,7 +650,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D72BA1F7F1114007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacAU/Acceleration/Acceleration.cpp b/plugins/MacAU/Acceleration/Acceleration.cpp
index d389d62..3fe259b 100644..100755
--- a/plugins/MacAU/Acceleration/Acceleration.cpp
+++ b/plugins/MacAU/Acceleration/Acceleration.cpp
@@ -170,9 +170,7 @@ void Acceleration::AccelerationKernel::Reset()
s1L = s2L = s3L = 0.0;
o1L = o2L = o3L = 0.0;
m1L = m2L = desL = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -190,9 +188,6 @@ void Acceleration::AccelerationKernel::Process( const Float32 *inSourceP,
long double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
Float64 intensity = pow(GetParameter( kParam_One ),3)*(32/overallscale);
Float64 wet = GetParameter( kParam_Two );
@@ -262,19 +257,11 @@ void Acceleration::AccelerationKernel::Process( const Float32 *inSourceP,
}
//Dry/Wet control, defaults to the last slider
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Acceleration/Acceleration.h b/plugins/MacAU/Acceleration/Acceleration.h
index 57d3b4b..ba5bfd4 100644..100755
--- a/plugins/MacAU/Acceleration/Acceleration.h
+++ b/plugins/MacAU/Acceleration/Acceleration.h
@@ -138,9 +138,7 @@ public:
Float64 m1L;
Float64 m2L;
Float64 desL;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.mode1v3
index f301be9..f301be9 100644..100755
--- a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.mode1v3
+++ b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.mode1v3
diff --git a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser
index f49c30b..0c19d54 100644..100755
--- a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser
@@ -49,28 +49,18 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538705190;
- PBXWorkspaceStateSaveDate = 538705190;
+ PBXPerProjectTemplateStateSaveDate = 569587589;
+ PBXWorkspaceStateSaveDate = 569587589;
};
perUserProjectItems = {
- 8B4E5812201C02EE00B5DC2A /* PBXTextBookmark */ = 8B4E5812201C02EE00B5DC2A /* PBXTextBookmark */;
8B6FC0BF20114A1C003CA5F7 /* PlistBookmark */ = 8B6FC0BF20114A1C003CA5F7 /* PlistBookmark */;
- 8B79CCF320114DBD00E8A187 /* PBXTextBookmark */ = 8B79CCF320114DBD00E8A187 /* PBXTextBookmark */;
+ 8B79271221F3383E006E9731 /* PBXTextBookmark */ = 8B79271221F3383E006E9731 /* PBXTextBookmark */;
+ 8B79271721F3384E006E9731 /* PBXTextBookmark */ = 8B79271721F3384E006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B4E5812201C02EE00B5DC2A /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Acceleration.cpp */;
- name = "Acceleration.cpp: 239";
- rLen = 0;
- rLoc = 10522;
- rType = 0;
- vrLen = 447;
- vrLoc = 10210;
- };
8B6FC0BF20114A1C003CA5F7 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
@@ -83,22 +73,32 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B79CCF320114DBD00E8A187 /* PBXTextBookmark */ = {
+ 8B79271221F3383E006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Acceleration.cpp */;
+ name = "Acceleration.cpp: 234";
+ rLen = 0;
+ rLoc = 10370;
+ rType = 0;
+ vrLen = 269;
+ vrLoc = 10290;
+ };
+ 8B79271721F3384E006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Acceleration.cpp */;
- name = "Acceleration.cpp: 239";
+ name = "Acceleration.cpp: 234";
rLen = 0;
- rLoc = 10522;
+ rLoc = 10370;
rType = 0;
- vrLen = 488;
- vrLoc = 10210;
+ vrLen = 269;
+ vrLoc = 10290;
};
8BA05A660720730100365D66 /* Acceleration.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 3718}}";
- sepNavSelRange = "{10522, 0}";
- sepNavVisRange = "{10210, 447}";
- sepNavWindowFrame = "{{537, 39}, {895, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {684, 3666}}";
+ sepNavSelRange = "{10370, 0}";
+ sepNavVisRange = "{10290, 269}";
+ sepNavWindowFrame = "{{378, 39}, {895, 839}}";
};
};
8BA05A690720730100365D66 /* AccelerationVersion.h */ = {
@@ -111,10 +111,10 @@
};
8BC6025B073B072D006C4272 /* Acceleration.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1950}}";
- sepNavSelRange = "{5229, 159}";
- sepNavVisRange = "{1351, 2063}";
- sepNavWindowFrame = "{{642, 39}, {895, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1872}}";
+ sepNavSelRange = "{5413, 0}";
+ sepNavVisRange = "{3998, 1517}";
+ sepNavWindowFrame = "{{545, 39}, {895, 839}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3
index 2851941..f284420 100644..100755
--- a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>583 224 841 654 0 0 1440 878 </string>
+ <string>354 224 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -354,11 +352,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4E5812201C02EE00B5DC2A</string>
+ <string>8B79271721F3384E006E9731</string>
<key>history</key>
<array>
<string>8B6FC0BF20114A1C003CA5F7</string>
- <string>8B79CCF320114DBD00E8A187</string>
+ <string>8B79271221F3383E006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 202}}</string>
+ <string>{{0, 0}, {531, 188}}</string>
<key>RubberWindowFrame</key>
- <string>583 224 841 654 0 0 1440 878 </string>
+ <string>354 224 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>202pt</string>
+ <string>188pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>406pt</string>
+ <string>420pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 379}}</string>
- <key>RubberWindowFrame</key>
- <string>583 224 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 393}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {531, 393}}</string>
+ <key>RubberWindowFrame</key>
+ <string>354 224 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -481,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E5813201C02EE00B5DC2A</string>
+ <string>8B79271821F3384E006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E5814201C02EE00B5DC2A</string>
+ <string>8B79271921F3384E006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B4E5815201C02EE00B5DC2A</string>
+ <string>8B79271A21F3384E006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538706670.20774806</real>
+ <real>569587790.455778</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,11 +673,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B4E5816201C02EE00B5DC2A</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Acceleration/Acceleration.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>583 224 841 654 0 0 1440 878 </string>
+ <string>354 224 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/project.pbxproj b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/project.pbxproj
index 7755ccf..7755ccf 100644..100755
--- a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/project.pbxproj
+++ b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/project.pbxproj
diff --git a/plugins/MacAU/Air/Air.cpp b/plugins/MacAU/Air/Air.cpp
index 716f907..7ba3efe 100755
--- a/plugins/MacAU/Air/Air.cpp
+++ b/plugins/MacAU/Air/Air.cpp
@@ -222,11 +222,7 @@ void Air::AirKernel::Reset()
tripletC = 0.0;
tripletFactor = 0.0;
count = 1;
-
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
-
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -254,11 +250,6 @@ void Air::AirKernel::Process( const Float32 *inSourceP,
Float64 wet = GetParameter( kParam_Six );
Float64 dry = 1.0-wet;
-
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
- Float32 fpTemp;
-
long double inputSample;
Float64 drySample;
Float64 correction;
@@ -399,19 +390,11 @@ void Air::AirKernel::Process( const Float32 *inSourceP,
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
-
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
destP += inNumChannels;
diff --git a/plugins/MacAU/Air/Air.h b/plugins/MacAU/Air/Air.h
index 571b8ac..6dcd06c 100755
--- a/plugins/MacAU/Air/Air.h
+++ b/plugins/MacAU/Air/Air.h
@@ -164,12 +164,7 @@ public:
Float64 tripletC;
Float64 tripletFactor;
int count;
-
-
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
-
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.pbxuser
index 2af057b..3a436a8 100755
--- a/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.pbxuser
@@ -49,34 +49,34 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528421060;
- PBXWorkspaceStateSaveDate = 528421060;
+ PBXPerProjectTemplateStateSaveDate = 569588293;
+ PBXWorkspaceStateSaveDate = 569588293;
};
perUserProjectItems = {
- 8B9D72161F7EFB8B007AB60F /* PBXTextBookmark */ = 8B9D72161F7EFB8B007AB60F /* PBXTextBookmark */;
- 8B9D72A71F7F10F4007AB60F /* PBXTextBookmark */ = 8B9D72A71F7F10F4007AB60F /* PBXTextBookmark */;
+ 8B79276221F33AB6006E9731 /* PBXTextBookmark */ = 8B79276221F33AB6006E9731 /* PBXTextBookmark */;
+ 8B79276821F33AE6006E9731 /* PBXTextBookmark */ = 8B79276821F33AE6006E9731 /* PBXTextBookmark */;
8B9F0C261EB403E000D3B900 /* PBXTextBookmark */ = 8B9F0C261EB403E000D3B900 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D72161F7EFB8B007AB60F /* PBXTextBookmark */ = {
+ 8B79276221F33AB6006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Air.cpp */;
- name = "Air.cpp: 397";
+ name = "Air.cpp: 394";
rLen = 0;
- rLoc = 15339;
+ rLoc = 15189;
rType = 0;
- vrLen = 94;
- vrLoc = 14078;
+ vrLen = 0;
+ vrLoc = 0;
};
- 8B9D72A71F7F10F4007AB60F /* PBXTextBookmark */ = {
+ 8B79276821F33AE6006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Air.cpp */;
- name = "Air.cpp: 398";
+ name = "Air.cpp: 389";
rLen = 0;
- rLoc = 15339;
+ rLoc = 15189;
rType = 0;
vrLen = 0;
vrLoc = 0;
@@ -86,17 +86,17 @@
fRef = 8BC6025B073B072D006C4272 /* Air.h */;
name = "Air.h: 169";
rLen = 0;
- rLoc = 6210;
+ rLoc = 6204;
rType = 0;
vrLen = 107;
vrLoc = 6071;
};
8BA05A660720730100365D66 /* Air.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 5512}}";
- sepNavSelRange = "{15339, 0}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 5421}}";
+ sepNavSelRange = "{15189, 0}";
sepNavVisRange = "{0, 0}";
- sepNavWindowFrame = "{{255, 66}, {1145, 812}}";
+ sepNavWindowFrame = "{{152, 66}, {1145, 812}}";
};
};
8BA05A690720730100365D66 /* AirVersion.h */ = {
@@ -109,10 +109,10 @@
};
8BC6025B073B072D006C4272 /* Air.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {656, 2574}}";
- sepNavSelRange = "{6210, 0}";
- sepNavVisRange = "{6071, 107}";
- sepNavWindowFrame = "{{505, 39}, {1053, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1006, 2483}}";
+ sepNavSelRange = "{6190, 0}";
+ sepNavVisRange = "{5126, 1198}";
+ sepNavWindowFrame = "{{387, 39}, {1053, 839}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.perspectivev3
index f7348cf..c4d0cd5 100755
--- a/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Air/Air.xcodeproj/christopherjohnson.perspectivev3
@@ -352,11 +352,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D72A71F7F10F4007AB60F</string>
+ <string>8B79276821F33AE6006E9731</string>
<key>history</key>
<array>
<string>8B9F0C261EB403E000D3B900</string>
- <string>8B9D72161F7EFB8B007AB60F</string>
+ <string>8B79276221F33AB6006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 32}}</string>
+ <string>{{0, 0}, {603, 13}}</string>
<key>RubberWindowFrame</key>
<string>484 346 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>32pt</string>
+ <string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>409pt</string>
+ <string>428pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
- <key>RubberWindowFrame</key>
- <string>484 346 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 401}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
+ <string>{{10, 27}, {603, 401}}</string>
+ <key>RubberWindowFrame</key>
+ <string>484 346 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D72A81F7F10F4007AB60F</string>
+ <string>8B79276921F33AE6006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D72A91F7F10F4007AB60F</string>
+ <string>8B79276A21F33AE6006E9731</string>
<string>8BDB25A91EAA638A001F42B2</string>
- <string>8B9D72AA1F7F10F4007AB60F</string>
+ <string>8B79276B21F33AE6006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528421108.41774899</real>
+ <real>569588454.36706197</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,7 +653,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D72AB1F7F10F4007AB60F</string>
+ <string>8B79276C21F33AE6006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Air/Air.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.cpp b/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.cpp
index 508cd06..c68d1ee 100755
--- a/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.cpp
+++ b/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.cpp
@@ -203,7 +203,6 @@ void AtmosphereBuss::AtmosphereBussKernel::Process( const Float32 *inSourceP,
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
- Float32 fpTemp;
Float64 overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
@@ -342,23 +341,15 @@ void AtmosphereBuss::AtmosphereBussKernel::Process( const Float32 *inSourceP,
lastSampleA = drySample;
//store the raw input sample again for use next time
- //noise shaping to 32-bit floating point
- fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for Atmosphere, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser
index 6387880..d3cdc9f 100755
--- a/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser
@@ -49,18 +49,48 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 546563283;
- PBXWorkspaceStateSaveDate = 546563283;
+ PBXPerProjectTemplateStateSaveDate = 569588700;
+ PBXWorkspaceStateSaveDate = 569588700;
};
perUserProjectItems = {
+ 8B7927A021F33C4A006E9731 /* PBXTextBookmark */ = 8B7927A021F33C4A006E9731 /* PBXTextBookmark */;
+ 8B7927A121F33C4A006E9731 /* XCBuildMessageTextBookmark */ = 8B7927A121F33C4A006E9731 /* XCBuildMessageTextBookmark */;
+ 8B7927A221F33C4A006E9731 /* PBXTextBookmark */ = 8B7927A221F33C4A006E9731 /* PBXTextBookmark */;
8B7A85312054728D0074B00C /* PlistBookmark */ = 8B7A85312054728D0074B00C /* PlistBookmark */;
- 8BC5CF4A2093F4B70058B257 /* PBXTextBookmark */ = 8BC5CF4A2093F4B70058B257 /* PBXTextBookmark */;
- 8BC5CF4B2093F4B70058B257 /* PBXTextBookmark */ = 8BC5CF4B2093F4B70058B257 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B7927A021F33C4A006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* AtmosphereBuss.h */;
+ name = "AtmosphereBuss.h: 130";
+ rLen = 0;
+ rLoc = 5139;
+ rType = 0;
+ vrLen = 177;
+ vrLoc = 5070;
+ };
+ 8B7927A121F33C4A006E9731 /* XCBuildMessageTextBookmark */ = {
+ isa = PBXTextBookmark;
+ comments = "Unused variable 'fpTemp'";
+ fRef = 8BA05A660720730100365D66 /* AtmosphereBuss.cpp */;
+ fallbackIsa = XCBuildMessageTextBookmark;
+ rLen = 1;
+ rLoc = 205;
+ rType = 1;
+ };
+ 8B7927A221F33C4A006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* AtmosphereBuss.cpp */;
+ name = "AtmosphereBuss.cpp: 206";
+ rLen = 0;
+ rLoc = 8815;
+ rType = 0;
+ vrLen = 266;
+ vrLoc = 8708;
+ };
8B7A85312054728D0074B00C /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
@@ -75,10 +105,10 @@
};
8BA05A660720730100365D66 /* AtmosphereBuss.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {677, 4914}}";
- sepNavSelRange = "{13285, 0}";
- sepNavVisRange = "{13794, 273}";
- sepNavWindowFrame = "{{815, 35}, {816, 832}}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 4667}}";
+ sepNavSelRange = "{8815, 0}";
+ sepNavVisRange = "{8708, 266}";
+ sepNavWindowFrame = "{{378, 46}, {816, 832}}";
};
};
8BA05A690720730100365D66 /* AtmosphereBussVersion.h */ = {
@@ -89,31 +119,11 @@
sepNavWindowFrame = "{{692, 46}, {816, 832}}";
};
};
- 8BC5CF4A2093F4B70058B257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* AtmosphereBuss.cpp */;
- name = "AtmosphereBuss.cpp: 321";
- rLen = 0;
- rLoc = 13285;
- rType = 0;
- vrLen = 273;
- vrLoc = 13794;
- };
- 8BC5CF4B2093F4B70058B257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* AtmosphereBuss.cpp */;
- name = "AtmosphereBuss.cpp: 321";
- rLen = 0;
- rLoc = 13285;
- rType = 0;
- vrLen = 273;
- vrLoc = 13794;
- };
8BC6025B073B072D006C4272 /* AtmosphereBuss.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 2132}}";
+ sepNavIntBoundsRect = "{{0, 0}, {810, 2483}}";
sepNavSelRange = "{5139, 0}";
- sepNavVisRange = "{1894, 1791}";
+ sepNavVisRange = "{5070, 177}";
sepNavWindowFrame = "{{743, 46}, {816, 832}}";
};
};
diff --git a/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3
index e3a1dec..b791cf4 100755
--- a/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -302,9 +300,6 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
- <integer>2</integer>
- <integer>1</integer>
<integer>0</integer>
</array>
</array>
@@ -326,7 +321,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>597 180 841 654 0 0 1440 878 </string>
+ <string>434 184 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -354,11 +349,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BC5CF4B2093F4B70058B257</string>
+ <string>8B7927A221F33C4A006E9731</string>
<key>history</key>
<array>
<string>8B7A85312054728D0074B00C</string>
- <string>8BC5CF4A2093F4B70058B257</string>
+ <string>8B7927A021F33C4A006E9731</string>
+ <string>8B7927A121F33C4A006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 142}}</string>
+ <string>{{0, 0}, {531, 126}}</string>
<key>RubberWindowFrame</key>
- <string>597 180 841 654 0 0 1440 878 </string>
+ <string>434 184 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>142pt</string>
+ <string>126pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>466pt</string>
+ <string>482pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 439}}</string>
- <key>RubberWindowFrame</key>
- <string>597 180 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 455}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {531, 455}}</string>
+ <key>RubberWindowFrame</key>
+ <string>434 184 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -481,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC5CF4C2093F4B70058B257</string>
+ <string>8B7927A321F33C4A006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC5CF4D2093F4B70058B257</string>
+ <string>8B7927A421F33C4A006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BC5CF4E2093F4B70058B257</string>
+ <string>8B7927A521F33C4A006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +654,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>546567351.06036103</real>
+ <real>569588810.27972102</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,11 +671,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BC5CF4F2093F4B70058B257</string>
+ <string>8B7927A621F33C4A006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>597 180 841 654 0 0 1440 878 </string>
+ <string>434 184 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.cpp b/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.cpp
index d0ca7aa..6ca9131 100755
--- a/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.cpp
+++ b/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.cpp
@@ -203,7 +203,6 @@ void AtmosphereChannel::AtmosphereChannelKernel::Process( const Float32 *inSou
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
- Float32 fpTemp;
Float64 overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
@@ -339,23 +338,15 @@ void AtmosphereChannel::AtmosphereChannelKernel::Process( const Float32 *inSou
lastSampleA = drySample;
//store the raw input sample again for use next time
- //noise shaping to 32-bit floating point
- fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser
index d21e452..64fb8bb 100755
--- a/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 546562903;
- PBXWorkspaceStateSaveDate = 546562903;
+ PBXPerProjectTemplateStateSaveDate = 569588835;
+ PBXWorkspaceStateSaveDate = 569588835;
};
perUserProjectItems = {
8B2BAFD320548396002C5203 /* PlistBookmark */ = 8B2BAFD320548396002C5203 /* PlistBookmark */;
- 8BC5CF502093F4BA0058B257 /* PBXTextBookmark */ = 8BC5CF502093F4BA0058B257 /* PBXTextBookmark */;
- 8BC5CF512093F4BA0058B257 /* PBXTextBookmark */ = 8BC5CF512093F4BA0058B257 /* PBXTextBookmark */;
- 8BC5CF522093F4BA0058B257 /* PBXTextBookmark */ = 8BC5CF522093F4BA0058B257 /* PBXTextBookmark */;
+ 8B7927B321F33C89006E9731 /* PBXTextBookmark */ = 8B7927B321F33C89006E9731 /* PBXTextBookmark */;
+ 8B7927B821F33C9F006E9731 /* PBXTextBookmark */ = 8B7927B821F33C9F006E9731 /* PBXTextBookmark */;
+ 8BFBE901209D18FF00E1438C /* PBXTextBookmark */ = 8BFBE901209D18FF00E1438C /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -74,12 +74,32 @@
rLen = 0;
rLoc = 9223372036854775808;
};
+ 8B7927B321F33C89006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* AtmosphereChannel.cpp */;
+ name = "AtmosphereChannel.cpp: 277";
+ rLen = 0;
+ rLoc = 11355;
+ rType = 0;
+ vrLen = 169;
+ vrLoc = 13693;
+ };
+ 8B7927B821F33C9F006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* AtmosphereChannel.cpp */;
+ name = "AtmosphereChannel.cpp: 277";
+ rLen = 0;
+ rLoc = 11355;
+ rType = 0;
+ vrLen = 169;
+ vrLoc = 13693;
+ };
8BA05A660720730100365D66 /* AtmosphereChannel.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {769, 5018}}";
- sepNavSelRange = "{14355, 349}";
- sepNavVisRange = "{12684, 2023}";
- sepNavWindowFrame = "{{624, 46}, {816, 832}}";
+ sepNavIntBoundsRect = "{{0, 0}, {482, 4654}}";
+ sepNavSelRange = "{11355, 0}";
+ sepNavVisRange = "{13693, 169}";
+ sepNavWindowFrame = "{{566, 46}, {816, 832}}";
};
};
8BA05A690720730100365D66 /* AtmosphereChannelVersion.h */ = {
@@ -90,42 +110,12 @@
sepNavWindowFrame = "{{726, 46}, {816, 832}}";
};
};
- 8BC5CF502093F4BA0058B257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* AtmosphereChannel.cpp */;
- name = "AtmosphereChannel.cpp: 277";
- rLen = 0;
- rLoc = 11372;
- rType = 0;
- vrLen = 304;
- vrLoc = 13659;
- };
- 8BC5CF512093F4BA0058B257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* AtmosphereChannel.h */;
- name = "AtmosphereChannel.h: 131";
- rLen = 713;
- rLoc = 5181;
- rType = 0;
- vrLen = 187;
- vrLoc = 5816;
- };
- 8BC5CF522093F4BA0058B257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* AtmosphereChannel.h */;
- name = "AtmosphereChannel.h: 131";
- rLen = 713;
- rLoc = 5181;
- rType = 0;
- vrLen = 187;
- vrLoc = 5816;
- };
8BC6025B073B072D006C4272 /* AtmosphereChannel.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 2379}}";
- sepNavSelRange = "{5181, 713}";
- sepNavVisRange = "{5816, 187}";
- sepNavWindowFrame = "{{635, 25}, {816, 832}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2132}}";
+ sepNavSelRange = "{5129, 0}";
+ sepNavVisRange = "{4652, 1351}";
+ sepNavWindowFrame = "{{624, 39}, {816, 832}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
@@ -142,6 +132,16 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
+ 8BFBE901209D18FF00E1438C /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* AtmosphereChannel.h */;
+ name = "AtmosphereChannel.h: 131";
+ rLen = 713;
+ rLoc = 5181;
+ rType = 0;
+ vrLen = 181;
+ vrLoc = 5816;
+ };
8D01CCC60486CAD60068D4B7 /* AtmosphereChannel */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3
index 08b4968..f684856 100755
--- a/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 209 841 654 0 0 1440 878 </string>
+ <string>472 198 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -342,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>AtmosphereChannel.h</string>
+ <string>AtmosphereChannel.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -350,16 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>AtmosphereChannel.h</string>
+ <string>AtmosphereChannel.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BC5CF522093F4BA0058B257</string>
+ <string>8B7927B821F33C9F006E9731</string>
<key>history</key>
<array>
<string>8B2BAFD320548396002C5203</string>
- <string>8BC5CF502093F4BA0058B257</string>
- <string>8BC5CF512093F4BA0058B257</string>
+ <string>8BFBE901209D18FF00E1438C</string>
+ <string>8B7927B321F33C89006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 158}}</string>
+ <string>{{0, 0}, {531, 92}}</string>
<key>RubberWindowFrame</key>
- <string>599 209 841 654 0 0 1440 878 </string>
+ <string>472 198 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>158pt</string>
+ <string>92pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>450pt</string>
+ <string>516pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 423}}</string>
- <key>RubberWindowFrame</key>
- <string>599 209 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 489}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {531, 489}}</string>
+ <key>RubberWindowFrame</key>
+ <string>472 198 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -482,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC5CF532093F4BA0058B257</string>
+ <string>8B7927B921F33C9F006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC5CF542093F4BA0058B257</string>
+ <string>8B7927BA21F33C9F006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BC5CF552093F4BA0058B257</string>
+ <string>8B7927BB21F33C9F006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>546567354.06319106</real>
+ <real>569588895.18574297</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -679,7 +677,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 209 841 654 0 0 1440 878 </string>
+ <string>472 198 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Aura/Aura.cpp b/plugins/MacAU/Aura/Aura.cpp
index 93e1411..48fd283 100755
--- a/plugins/MacAU/Aura/Aura.cpp
+++ b/plugins/MacAU/Aura/Aura.cpp
@@ -169,9 +169,7 @@ void Aura::AuraKernel::Reset()
for(int count = 0; count < 21; count++) {b[count] = 0.0; f[count] = 0.0;}
lastSample = 0.0;
previousVelocity = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -186,11 +184,6 @@ void Aura::AuraKernel::Process( const Float32 *inSourceP,
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
-
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
Float64 correction;
Float64 accumulatorSample;
Float64 velocity;
@@ -321,19 +314,11 @@ void Aura::AuraKernel::Process( const Float32 *inSourceP,
inputSample = (inputSample * wet) + (drySample * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Aura/Aura.h b/plugins/MacAU/Aura/Aura.h
index 504b1fd..56ef492 100755
--- a/plugins/MacAU/Aura/Aura.h
+++ b/plugins/MacAU/Aura/Aura.h
@@ -131,9 +131,7 @@ public:
Float64 previousVelocity;
Float64 b[21];
Float64 f[21];
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.pbxuser
index 8daaddf..16877c1 100755
--- a/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.pbxuser
@@ -49,24 +49,44 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 546126137;
- PBXWorkspaceStateSaveDate = 546126137;
+ PBXPerProjectTemplateStateSaveDate = 569589029;
+ PBXWorkspaceStateSaveDate = 569589029;
};
perUserProjectItems = {
+ 8B7927C921F33D8C006E9731 /* PBXTextBookmark */ = 8B7927C921F33D8C006E9731 /* PBXTextBookmark */;
+ 8B7927CE21F33D9D006E9731 /* PBXTextBookmark */ = 8B7927CE21F33D9D006E9731 /* PBXTextBookmark */;
8BC5CC27208D3AE60058B257 /* PBXTextBookmark */ = 8BC5CC27208D3AE60058B257 /* PBXTextBookmark */;
- 8BC5CCC3208D4FDB0058B257 /* XCBuildMessageTextBookmark */ = 8BC5CCC3208D4FDB0058B257 /* XCBuildMessageTextBookmark */;
- 8BC5CEBB208D734C0058B257 /* PBXTextBookmark */ = 8BC5CEBB208D734C0058B257 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B7927C921F33D8C006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Aura.cpp */;
+ name = "Aura.cpp: 196";
+ rLen = 0;
+ rLoc = 8658;
+ rType = 0;
+ vrLen = 0;
+ vrLoc = 0;
+ };
+ 8B7927CE21F33D9D006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Aura.cpp */;
+ name = "Aura.cpp: 196";
+ rLen = 0;
+ rLoc = 8658;
+ rType = 0;
+ vrLen = 0;
+ vrLoc = 0;
+ };
8BA05A660720730100365D66 /* Aura.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {558, 4589}}";
- sepNavSelRange = "{8813, 0}";
- sepNavVisRange = "{8966, 228}";
- sepNavWindowFrame = "{{379, 63}, {932, 815}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 4446}}";
+ sepNavSelRange = "{8658, 0}";
+ sepNavVisRange = "{0, 0}";
+ sepNavWindowFrame = "{{5, 63}, {932, 815}}";
};
};
8BA05A670720730100365D66 /* Aura.exp */ = {
@@ -89,37 +109,18 @@
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Aura.h */;
name = "Aura.h: 135";
- rLen = 65;
+ rLen = 24;
rLoc = 5201;
rType = 0;
vrLen = 65;
vrLoc = 5232;
};
- 8BC5CCC3208D4FDB0058B257 /* XCBuildMessageTextBookmark */ = {
- isa = PBXTextBookmark;
- comments = "Unused variable 'wet'";
- fRef = 8BA05A660720730100365D66 /* Aura.cpp */;
- fallbackIsa = XCBuildMessageTextBookmark;
- rLen = 0;
- rLoc = 202;
- rType = 1;
- };
- 8BC5CEBB208D734C0058B257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Aura.cpp */;
- name = "Aura.cpp: 203";
- rLen = 0;
- rLoc = 8813;
- rType = 0;
- vrLen = 228;
- vrLoc = 8966;
- };
8BC6025B073B072D006C4272 /* Aura.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1859}}";
- sepNavSelRange = "{5111, 0}";
- sepNavVisRange = "{3864, 1511}";
- sepNavWindowFrame = "{{504, 63}, {932, 815}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1794}}";
+ sepNavSelRange = "{5226, 0}";
+ sepNavVisRange = "{3752, 1576}";
+ sepNavWindowFrame = "{{340, 63}, {932, 815}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3
index ab104e0..55525f3 100755
--- a/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>623 315 810 487 0 0 1440 878 </string>
+ <string>0 312 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,11 +350,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BC5CEBB208D734C0058B257</string>
+ <string>8B7927CE21F33D9D006E9731</string>
<key>history</key>
<array>
<string>8BC5CC27208D3AE60058B257</string>
- <string>8BC5CCC3208D4FDB0058B257</string>
+ <string>8B7927C921F33D8C006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {603, 13}}</string>
<key>RubberWindowFrame</key>
- <string>623 315 810 487 0 0 1440 878 </string>
+ <string>0 312 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>428pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 401}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -449,9 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 401}}</string>
<key>RubberWindowFrame</key>
- <string>623 315 810 487 0 0 1440 878 </string>
+ <string>0 312 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC5CC15208D39550058B257</string>
+ <string>8B7927CF21F33D9D006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC5CC16208D39550058B257</string>
+ <string>8B7927D021F33D9D006E9731</string>
<string>8B0C0F5D201157B700BC8782</string>
- <string>8BC5CC17208D39550058B257</string>
+ <string>8B7927D121F33D9D006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>546141004.69631898</real>
+ <real>569589149.88835204</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -656,7 +654,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Aura/Aura.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>623 315 810 487 0 0 1440 878 </string>
+ <string>0 312 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Average/Average.cpp b/plugins/MacAU/Average/Average.cpp
index 200aafa..d2ee078 100755
--- a/plugins/MacAU/Average/Average.cpp
+++ b/plugins/MacAU/Average/Average.cpp
@@ -170,9 +170,7 @@ void Average::AverageKernel::Reset()
{
register UInt32 count;
for(count = 0; count < 11; count++) {b[count] = 0.0; f[count] = 0.0;}
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -221,10 +219,6 @@ void Average::AverageKernel::Process( const Float32 *inSourceP,
f[9] /= overallscale;
//and now it's neatly scaled, too
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
-
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
if (inputSample<1.2e-38 && -inputSample<1.2e-38) {
@@ -285,19 +279,11 @@ void Average::AverageKernel::Process( const Float32 *inSourceP,
//if it 'won't change anything' but our sample might be at a very different scaling
//in the floating point system.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Average/Average.h b/plugins/MacAU/Average/Average.h
index a1d8e88..3ff5e3d 100755
--- a/plugins/MacAU/Average/Average.h
+++ b/plugins/MacAU/Average/Average.h
@@ -131,10 +131,7 @@ public:
private:
Float64 b[11];
Float64 f[11];
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
-
+ Float64 fpNShape;
};
};
diff --git a/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.pbxuser
index 59f35a8..cf424d9 100755
--- a/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.pbxuser
@@ -49,18 +49,44 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 557438773;
- PBXWorkspaceStateSaveDate = 557438773;
+ PBXPerProjectTemplateStateSaveDate = 569589188;
+ PBXWorkspaceStateSaveDate = 569589188;
};
perUserProjectItems = {
+ 8B7927DA21F33DD5006E9731 /* PBXBookmark */ = 8B7927DA21F33DD5006E9731 /* PBXBookmark */;
+ 8B7927E321F33E0C006E9731 /* PBXTextBookmark */ = 8B7927E321F33E0C006E9731 /* PBXTextBookmark */;
+ 8B7927E921F33E0C006E9731 /* PBXTextBookmark */ = 8B7927E921F33E0C006E9731 /* PBXTextBookmark */;
8B7BA53D1DAD4A33007C127E /* PBXTextBookmark */ = 8B7BA53D1DAD4A33007C127E /* PBXTextBookmark */;
- 8B9D72C51F7F1129007AB60F /* PBXTextBookmark */ = 8B9D72C51F7F1129007AB60F /* PBXTextBookmark */;
8BFDB0072139DDE90079F90D /* PBXTextBookmark */ = 8BFDB0072139DDE90079F90D /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B7927DA21F33DD5006E9731 /* PBXBookmark */ = {
+ isa = PBXBookmark;
+ fRef = 8BA05A660720730100365D66 /* Average.cpp */;
+ };
+ 8B7927E321F33E0C006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Average.cpp */;
+ name = "Average.cpp: 294";
+ rLen = 0;
+ rLoc = 13108;
+ rType = 0;
+ vrLen = 0;
+ vrLoc = 0;
+ };
+ 8B7927E921F33E0C006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Average.cpp */;
+ name = "Average.cpp: 222";
+ rLen = 0;
+ rLoc = 9886;
+ rType = 0;
+ vrLen = 2433;
+ vrLoc = 8388;
+ };
8B7BA53D1DAD4A33007C127E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Average.h */;
@@ -71,22 +97,12 @@
vrLen = 248;
vrLoc = 2963;
};
- 8B9D72C51F7F1129007AB60F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Average.cpp */;
- name = "Average.cpp: 308";
- rLen = 0;
- rLoc = 13372;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
8BA05A660720730100365D66 /* Average.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 4082}}";
- sepNavSelRange = "{13372, 0}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 4004}}";
+ sepNavSelRange = "{13108, 0}";
sepNavVisRange = "{0, 0}";
- sepNavWindowFrame = "{{531, 39}, {909, 838}}";
+ sepNavWindowFrame = "{{360, 40}, {909, 838}}";
};
};
8BA05A690720730100365D66 /* AverageVersion.h */ = {
@@ -99,10 +115,10 @@
};
8BC6025B073B072D006C4272 /* Average.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1200, 1872}}";
- sepNavSelRange = "{3020, 54}";
- sepNavVisRange = "{3923, 1499}";
- sepNavWindowFrame = "{{446, 61}, {1247, 817}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1200, 1807}}";
+ sepNavSelRange = "{5274, 0}";
+ sepNavVisRange = "{3744, 1632}";
+ sepNavWindowFrame = "{{193, 61}, {1247, 817}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
@@ -124,7 +140,7 @@
fRef = 8BA05A660720730100365D66 /* Average.cpp */;
name = "Average.cpp: 308";
rLen = 0;
- rLoc = 13372;
+ rLoc = 13108;
rType = 0;
vrLen = 0;
vrLoc = 0;
diff --git a/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.perspectivev3
index cd90e95..e7dddb3 100755
--- a/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Average/Average.xcodeproj/christopherjohnson.perspectivev3
@@ -222,7 +222,48 @@
</dict>
</array>
<key>OpenEditors</key>
- <array/>
+ <array>
+ <dict>
+ <key>Content</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8B7927E721F33E0C006E9731</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Average.cpp</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8B7927E821F33E0C006E9731</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Average.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B7927E921F33E0C006E9731</string>
+ <key>history</key>
+ <array>
+ <string>8B7927DA21F33DD5006E9731</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>Geometry</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 20}, {909, 741}}</string>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <false/>
+ <key>RubberWindowFrame</key>
+ <string>360 96 909 782 0 0 1440 878 </string>
+ </dict>
+ </dict>
+ </array>
<key>PerspectiveWidths</key>
<array>
<integer>810</integer>
@@ -256,8 +297,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +363,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>612 196 810 487 0 0 1440 878 </string>
+ <string>456 228 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,11 +391,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BFDB0072139DDE90079F90D</string>
+ <string>8B7927E321F33E0C006E9731</string>
<key>history</key>
<array>
<string>8B7BA53D1DAD4A33007C127E</string>
- <string>8B9D72C51F7F1129007AB60F</string>
+ <string>8BFDB0072139DDE90079F90D</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,7 +411,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>612 196 810 487 0 0 1440 878 </string>
+ <string>456 228 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -396,8 +435,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>612 196 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +488,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>456 228 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +518,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BFDB0082139DDE90079F90D</string>
+ <string>8B7927E421F33E0C006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BFDB0092139DDE90079F90D</string>
+ <string>8B7927E521F33E0C006E9731</string>
<string>8B9E5A3F1DAAD3C800A9546F</string>
- <string>8BFDB00A2139DDE90079F90D</string>
+ <string>8B7927E621F33E0C006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +675,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>557440489.96798897</real>
+ <real>569589260.26626098</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +692,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BFDB00B2139DDE90079F90D</string>
+ <string>8B7927E721F33E0C006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Average/Average.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>612 196 810 487 0 0 1440 878 </string>
+ <string>456 228 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/BassKit/BassKit.cpp b/plugins/MacAU/BassKit/BassKit.cpp
index 6663d2c..da7a49f 100755
--- a/plugins/MacAU/BassKit/BassKit.cpp
+++ b/plugins/MacAU/BassKit/BassKit.cpp
@@ -453,19 +453,15 @@ OSStatus BassKit::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
-
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+
*outputL = inputSampleL;
*outputR = inputSampleR;
//direct stereo out
@@ -475,12 +471,6 @@ OSStatus BassKit::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags
outputL += 1;
outputR += 1;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
return noErr;
}
diff --git a/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser
index 44f513a..9b210d0 100755
--- a/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser
@@ -49,43 +49,43 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561548993;
- PBXWorkspaceStateSaveDate = 561548993;
+ PBXPerProjectTemplateStateSaveDate = 569589289;
+ PBXWorkspaceStateSaveDate = 569589289;
};
perUserProjectItems = {
- 8B15DC7821789307007AD769 /* PBXTextBookmark */ = 8B15DC7821789307007AD769 /* PBXTextBookmark */;
- 8B15DC7921789307007AD769 /* PBXTextBookmark */ = 8B15DC7921789307007AD769 /* PBXTextBookmark */;
+ 8B7927F821F33F7A006E9731 /* PBXTextBookmark */ = 8B7927F821F33F7A006E9731 /* PBXTextBookmark */;
+ 8B7927FD21F33F8B006E9731 /* PBXTextBookmark */ = 8B7927FD21F33F8B006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B15DC7821789307007AD769 /* PBXTextBookmark */ = {
+ 8B7927F821F33F7A006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* BassKit.cpp */;
name = "BassKit.cpp: 325";
rLen = 0;
rLoc = 12649;
rType = 0;
- vrLen = 921;
+ vrLen = 816;
vrLoc = 14920;
};
- 8B15DC7921789307007AD769 /* PBXTextBookmark */ = {
+ 8B7927FD21F33F8B006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* BassKit.cpp */;
name = "BassKit.cpp: 325";
rLen = 0;
rLoc = 12649;
rType = 0;
- vrLen = 921;
+ vrLen = 816;
vrLoc = 14920;
};
8BA05A660720730100365D66 /* BassKit.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {901, 5980}}";
+ sepNavIntBoundsRect = "{{0, 0}, {761, 5824}}";
sepNavSelRange = "{12649, 0}";
- sepNavVisRange = "{14920, 921}";
- sepNavWindowFrame = "{{548, 68}, {890, 810}}";
+ sepNavVisRange = "{14920, 816}";
+ sepNavWindowFrame = "{{357, 57}, {890, 810}}";
};
};
8BA05A690720730100365D66 /* BassKitVersion.h */ = {
diff --git a/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3
index f21f89d..2a3cdcf 100755
--- a/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>609 213 752 636 0 0 1440 878 </string>
+ <string>401 223 752 636 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B15DC7921789307007AD769</string>
+ <string>8B7927FD21F33F8B006E9731</string>
<key>history</key>
<array>
- <string>8B15DC7821789307007AD769</string>
+ <string>8B7927F821F33F7A006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {545, 162}}</string>
+ <string>{{0, 0}, {545, 131}}</string>
<key>RubberWindowFrame</key>
- <string>609 213 752 636 0 0 1440 878 </string>
+ <string>401 223 752 636 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>162pt</string>
+ <string>131pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>459pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {545, 401}}</string>
- <key>RubberWindowFrame</key>
- <string>609 213 752 636 0 0 1440 878 </string>
+ <string>{{10, 27}, {545, 432}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {545, 386}}</string>
+ <string>{{10, 27}, {545, 432}}</string>
+ <key>RubberWindowFrame</key>
+ <string>401 223 752 636 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B15DC7A21789307007AD769</string>
+ <string>8B7927FE21F33F8B006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B15DC7B21789307007AD769</string>
+ <string>8B7927FF21F33F8B006E9731</string>
<string>8B2720742173B3CC00396442</string>
- <string>8B15DC7C21789307007AD769</string>
+ <string>8B79280021F33F8B006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561550087.85150504</real>
+ <real>569589643.413149</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +650,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B15DC7D21789307007AD769</string>
<string>/Users/christopherjohnson/Desktop/MacAU/BassKit/BassKit.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>609 213 752 636 0 0 1440 878 </string>
+ <string>401 223 752 636 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser
index c852a9c..d99aaa0 100755
--- a/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553994320;
- PBXWorkspaceStateSaveDate = 553994320;
+ PBXPerProjectTemplateStateSaveDate = 569590014;
+ PBXWorkspaceStateSaveDate = 569590014;
};
perUserProjectItems = {
8B12BE4E210416FD00EB8D52 /* PBXTextBookmark */ = 8B12BE4E210416FD00EB8D52 /* PBXTextBookmark */;
- 8B12BE50210416FD00EB8D52 /* PBXTextBookmark */ = 8B12BE50210416FD00EB8D52 /* PBXTextBookmark */;
- 8BBD1982210557560015A233 /* PBXTextBookmark */ = 8BBD1982210557560015A233 /* PBXTextBookmark */;
+ 8B79282221F340F9006E9731 /* PBXTextBookmark */ = 8B79282221F340F9006E9731 /* PBXTextBookmark */;
+ 8B79283421F34111006E9731 /* PBXTextBookmark */ = 8B79283421F34111006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -71,21 +71,31 @@
vrLen = 85;
vrLoc = 12311;
};
- 8B12BE50210416FD00EB8D52 /* PBXTextBookmark */ = {
+ 8B79282221F340F9006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* BitGlitterVersion.h */;
name = "BitGlitterVersion.h: 54";
rLen = 0;
rLoc = 2897;
rType = 0;
- vrLen = 131;
- vrLoc = 2825;
+ vrLen = 0;
+ vrLoc = 0;
+ };
+ 8B79283421F34111006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A690720730100365D66 /* BitGlitterVersion.h */;
+ name = "BitGlitterVersion.h: 54";
+ rLen = 0;
+ rLoc = 2897;
+ rType = 0;
+ vrLen = 0;
+ vrLoc = 0;
};
8BA05A660720730100365D66 /* BitGlitter.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {747, 4394}}";
+ sepNavIntBoundsRect = "{{0, 0}, {747, 4472}}";
sepNavSelRange = "{12683, 1}";
- sepNavVisRange = "{8715, 2103}";
+ sepNavVisRange = "{10076, 1544}";
sepNavWindowFrame = "{{637, 65}, {787, 813}}";
};
};
@@ -98,22 +108,12 @@
};
8BA05A690720730100365D66 /* BitGlitterVersion.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 871}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 819}}";
sepNavSelRange = "{2897, 0}";
- sepNavVisRange = "{2825, 131}";
+ sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{15, 60}, {787, 813}}";
};
};
- 8BBD1982210557560015A233 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A690720730100365D66 /* BitGlitterVersion.h */;
- name = "BitGlitterVersion.h: 54";
- rLen = 0;
- rLoc = 2897;
- rType = 0;
- vrLen = 131;
- vrLoc = 2825;
- };
8BC6025B073B072D006C4272 /* BitGlitter.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {894, 1989}}";
diff --git a/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3
index 31b4a91..ae27f4a 100755
--- a/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3
@@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>586 327 810 487 0 0 1440 878 </string>
+ <string>490 321 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,11 +352,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBD1982210557560015A233</string>
+ <string>8B79283421F34111006E9731</string>
<key>history</key>
<array>
<string>8B12BE4E210416FD00EB8D52</string>
- <string>8B12BE50210416FD00EB8D52</string>
+ <string>8B79282221F340F9006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 51}}</string>
+ <string>{{0, 0}, {603, 13}}</string>
<key>RubberWindowFrame</key>
- <string>586 327 810 487 0 0 1440 878 </string>
+ <string>490 321 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>51pt</string>
+ <string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>390pt</string>
+ <string>428pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
+ <string>{{10, 27}, {603, 401}}</string>
<key>RubberWindowFrame</key>
- <string>586 327 810 487 0 0 1440 878 </string>
+ <string>490 321 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBD1983210557560015A233</string>
+ <string>8B79283521F34111006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBD1984210557560015A233</string>
+ <string>8B79283621F34111006E9731</string>
<string>8BB8B7DD2103C66400751000</string>
- <string>8BBD1985210557560015A233</string>
+ <string>8B79283721F34111006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553998166.45384705</real>
+ <real>569590033.70359504</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +653,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBD1986210557560015A233</string>
<string>/Users/christopherjohnson/Desktop/MacAU/BitGlitter/BitGlitter.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>586 327 810 487 0 0 1440 878 </string>
+ <string>490 321 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.mode1v3
index f301be9..f301be9 100644..100755
--- a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.mode1v3
+++ b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.mode1v3
diff --git a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser
index 0c60c13..5c6dcd3 100644..100755
--- a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser
@@ -49,48 +49,48 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528421239;
- PBXWorkspaceStateSaveDate = 528421239;
+ PBXPerProjectTemplateStateSaveDate = 569590058;
+ PBXWorkspaceStateSaveDate = 569590058;
};
perUserProjectItems = {
+ 8B79244F21F12F5D006E9731 /* PBXTextBookmark */ = 8B79244F21F12F5D006E9731 /* PBXTextBookmark */;
+ 8B79284721F34140006E9731 /* PBXTextBookmark */ = 8B79284721F34140006E9731 /* PBXTextBookmark */;
8B84C3201F06FE8A00F360EE /* PBXTextBookmark */ = 8B84C3201F06FE8A00F360EE /* PBXTextBookmark */;
- 8B9D636E1F7C82E9007AB60F /* PBXTextBookmark */ = 8B9D636E1F7C82E9007AB60F /* PBXTextBookmark */;
- 8B9D72E51F7F11AB007AB60F /* PBXTextBookmark */ = 8B9D72E51F7F11AB007AB60F /* PBXTextBookmark */;
8B9E7F221DDE37D5006035FA /* PlistBookmark */ = 8B9E7F221DDE37D5006035FA /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B84C3201F06FE8A00F360EE /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* BitShiftGain.h */;
- name = "BitShiftGain.h: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 1640;
- vrLoc = 0;
- };
- 8B9D636E1F7C82E9007AB60F /* PBXTextBookmark */ = {
+ 8B79244F21F12F5D006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* BitShiftGain.cpp */;
name = "BitShiftGain.cpp: 175";
rLen = 48;
rLoc = 7996;
rType = 0;
- vrLen = 771;
- vrLoc = 8415;
+ vrLen = 675;
+ vrLoc = 8691;
};
- 8B9D72E51F7F11AB007AB60F /* PBXTextBookmark */ = {
+ 8B79284721F34140006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* BitShiftGain.cpp */;
name = "BitShiftGain.cpp: 175";
rLen = 48;
rLoc = 7996;
rType = 0;
- vrLen = 737;
- vrLoc = 8415;
+ vrLen = 644;
+ vrLoc = 8691;
+ };
+ 8B84C3201F06FE8A00F360EE /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* BitShiftGain.h */;
+ name = "BitShiftGain.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1640;
+ vrLoc = 0;
};
8B9E7F221DDE37D5006035FA /* PlistBookmark */ = {
isa = PlistBookmark;
@@ -106,10 +106,10 @@
};
8BA05A660720730100365D66 /* BitShiftGain.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {656, 3042}}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 3068}}";
sepNavSelRange = "{7996, 48}";
- sepNavVisRange = "{8415, 737}";
- sepNavWindowFrame = "{{308, 43}, {679, 835}}";
+ sepNavVisRange = "{8691, 644}";
+ sepNavWindowFrame = "{{738, 43}, {679, 835}}";
};
};
8BA05A690720730100365D66 /* BitShiftGainVersion.h */ = {
diff --git a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3
index d55ef4a..4adf5a4 100644..100755
--- a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3
@@ -325,7 +325,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>657 93 776 778 0 0 1440 878 </string>
+ <string>559 100 776 778 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,12 +353,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D72E51F7F11AB007AB60F</string>
+ <string>8B79284721F34140006E9731</string>
<key>history</key>
<array>
<string>8B9E7F221DDE37D5006035FA</string>
<string>8B84C3201F06FE8A00F360EE</string>
- <string>8B9D636E1F7C82E9007AB60F</string>
+ <string>8B79244F21F12F5D006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +372,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {466, 325}}</string>
+ <string>{{0, 0}, {466, 301}}</string>
<key>RubberWindowFrame</key>
- <string>657 93 776 778 0 0 1440 878 </string>
+ <string>559 100 776 778 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>325pt</string>
+ <string>301pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>407pt</string>
+ <string>431pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +397,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {466, 380}}</string>
+ <string>{{10, 27}, {466, 404}}</string>
<key>RubberWindowFrame</key>
- <string>657 93 776 778 0 0 1440 878 </string>
+ <string>559 100 776 778 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -481,11 +481,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D72E61F7F11AB007AB60F</string>
+ <string>8B79284821F34140006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D72E71F7F11AB007AB60F</string>
+ <string>8B79284921F34140006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D72E81F7F11AB007AB60F</string>
+ <string>8B79284A21F34140006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +658,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528421291.05933303</real>
+ <real>569590080.12127101</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,11 +675,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D72E91F7F11AB007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/BitShiftGain/BitShiftGain.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>657 93 776 778 0 0 1440 878 </string>
+ <string>559 100 776 778 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/project.pbxproj b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/project.pbxproj
index 707c9cb..707c9cb 100644..100755
--- a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/project.pbxproj
+++ b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/project.pbxproj
diff --git a/plugins/MacAU/Bite/Bite.cpp b/plugins/MacAU/Bite/Bite.cpp
index 99d3134..c34bb3d 100755
--- a/plugins/MacAU/Bite/Bite.cpp
+++ b/plugins/MacAU/Bite/Bite.cpp
@@ -175,10 +175,7 @@ void Bite::BiteKernel::Reset()
sampleG = 0.0;
sampleH = 0.0;
sampleI = 0.0;
-
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -203,10 +200,7 @@ void Bite::BiteKernel::Process( const Float32 *inSourceP,
Float64 midC;
Float64 midD;
Float64 trigger;
- Float64 result;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
- Float32 fpTemp;
+ long double result;
while (nSampleFrames-- > 0) {
sampleI = sampleH;
@@ -273,18 +267,11 @@ void Bite::BiteKernel::Process( const Float32 *inSourceP,
if (outputgain != 1.0) result *= outputgain;
- if (fpFlip) {
- fpTemp = result;
- fpNShapeA = (fpNShapeA*fpOld)+((result-fpTemp)*fpNew);
- result += fpNShapeA;
- }
- else {
- fpTemp = result;
- fpNShapeB = (fpNShapeB*fpOld)+((result-fpTemp)*fpNew);
- result += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)result, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ result += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = result;
//output.
diff --git a/plugins/MacAU/Bite/Bite.h b/plugins/MacAU/Bite/Bite.h
index c7a5b06..b36870b 100755
--- a/plugins/MacAU/Bite/Bite.h
+++ b/plugins/MacAU/Bite/Bite.h
@@ -138,10 +138,7 @@ public:
Float64 sampleG;
Float64 sampleH;
Float64 sampleI;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
-
+ Float64 fpNShape;
};
};
diff --git a/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.pbxuser
index f9c81c4..b8ac588 100755
--- a/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.pbxuser
@@ -49,43 +49,43 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528421171;
- PBXWorkspaceStateSaveDate = 528421171;
+ PBXPerProjectTemplateStateSaveDate = 569589737;
+ PBXWorkspaceStateSaveDate = 569589737;
};
perUserProjectItems = {
- 8B9D63401F7C8264007AB60F /* PBXTextBookmark */ = 8B9D63401F7C8264007AB60F /* PBXTextBookmark */;
- 8B9D72D41F7F114A007AB60F /* PBXTextBookmark */ = 8B9D72D41F7F114A007AB60F /* PBXTextBookmark */;
+ 8B79281021F3405A006E9731 /* PBXTextBookmark */ = 8B79281021F3405A006E9731 /* PBXTextBookmark */;
+ 8B79281521F34076006E9731 /* PBXTextBookmark */ = 8B79281521F34076006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D63401F7C8264007AB60F /* PBXTextBookmark */ = {
+ 8B79281021F3405A006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Bite.cpp */;
- name = "Bite.cpp: 289";
+ name = "Bite.cpp: 276";
rLen = 0;
- rLoc = 11935;
+ rLoc = 11735;
rType = 0;
- vrLen = 433;
- vrLoc = 10004;
+ vrLen = 155;
+ vrLoc = 10210;
};
- 8B9D72D41F7F114A007AB60F /* PBXTextBookmark */ = {
+ 8B79281521F34076006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Bite.cpp */;
- name = "Bite.cpp: 289";
+ name = "Bite.cpp: 276";
rLen = 0;
- rLoc = 11935;
+ rLoc = 11735;
rType = 0;
- vrLen = 402;
- vrLoc = 10035;
+ vrLen = 155;
+ vrLoc = 10210;
};
8BA05A660720730100365D66 /* Bite.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {677, 3913}}";
- sepNavSelRange = "{11935, 0}";
- sepNavVisRange = "{10035, 402}";
- sepNavWindowFrame = "{{295, 66}, {1145, 812}}";
+ sepNavIntBoundsRect = "{{0, 0}, {677, 3887}}";
+ sepNavSelRange = "{11735, 0}";
+ sepNavVisRange = "{10210, 155}";
+ sepNavWindowFrame = "{{170, 66}, {1145, 812}}";
};
};
8BA05A670720730100365D66 /* Bite.exp */ = {
@@ -106,9 +106,9 @@
};
8BC6025B073B072D006C4272 /* Bite.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1062, 1963}}";
- sepNavSelRange = "{5170, 171}";
- sepNavVisRange = "{3327, 1862}";
+ sepNavIntBoundsRect = "{{0, 0}, {1062, 1898}}";
+ sepNavSelRange = "{5360, 0}";
+ sepNavVisRange = "{3983, 1489}";
sepNavWindowFrame = "{{382, 39}, {1053, 839}}";
};
};
diff --git a/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3
index 87e6588..4e2e4c6 100755
--- a/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>612 285 810 487 0 0 1440 878 </string>
+ <string>476 284 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D72D41F7F114A007AB60F</string>
+ <string>8B79281521F34076006E9731</string>
<key>history</key>
<array>
- <string>8B9D63401F7C8264007AB60F</string>
+ <string>8B79281021F3405A006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 102}}</string>
+ <string>{{0, 0}, {603, 86}}</string>
<key>RubberWindowFrame</key>
- <string>612 285 810 487 0 0 1440 878 </string>
+ <string>476 284 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>102pt</string>
+ <string>86pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>355pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 312}}</string>
- <key>RubberWindowFrame</key>
- <string>612 285 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 328}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 328}}</string>
+ <key>RubberWindowFrame</key>
+ <string>476 284 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D72D51F7F114A007AB60F</string>
+ <string>8B79281621F34076006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D72D61F7F114A007AB60F</string>
+ <string>8B79281721F34076006E9731</string>
<string>8BDB25E81EAA6D6E001F42B2</string>
- <string>8B9D72D71F7F114A007AB60F</string>
+ <string>8B79281821F34076006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528421194.64885902</real>
+ <real>569589878.38768005</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +650,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D72D81F7F114A007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Bite/Bite.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>612 285 810 487 0 0 1440 878 </string>
+ <string>476 284 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.pbxuser
index ae403e5..a8e22a5 100755
--- a/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528421301;
- PBXWorkspaceStateSaveDate = 528421301;
+ PBXPerProjectTemplateStateSaveDate = 569590151;
+ PBXWorkspaceStateSaveDate = 569590151;
};
perUserProjectItems = {
8B753DE91E4005E400347157 /* PlistBookmark */ = 8B753DE91E4005E400347157 /* PlistBookmark */;
- 8B9D637D1F7C82F6007AB60F /* PBXTextBookmark */ = 8B9D637D1F7C82F6007AB60F /* PBXTextBookmark */;
+ 8B79285A21F341B0006E9731 /* PBXTextBookmark */ = 8B79285A21F341B0006E9731 /* PBXTextBookmark */;
8B9D72F41F7F11CA007AB60F /* PBXTextBookmark */ = 8B9D72F41F7F11CA007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
@@ -73,14 +73,14 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B9D637D1F7C82F6007AB60F /* PBXTextBookmark */ = {
+ 8B79285A21F341B0006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* BuildATPDF.h */;
name = "BuildATPDF.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 652;
+ vrLen = 548;
vrLoc = 0;
};
8B9D72F41F7F11CA007AB60F /* PBXTextBookmark */ = {
@@ -95,9 +95,9 @@
};
8BA05A660720730100365D66 /* BuildATPDF.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {876, 4433}}";
+ sepNavIntBoundsRect = "{{0, 0}, {876, 4316}}";
sepNavSelRange = "{12469, 0}";
- sepNavVisRange = "{12387, 2186}";
+ sepNavVisRange = "{12444, 2132}";
sepNavWindowFrame = "{{496, 41}, {923, 837}}";
};
};
@@ -111,9 +111,9 @@
};
8BC6025B073B072D006C4272 /* BuildATPDF.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 2093}}";
+ sepNavIntBoundsRect = "{{0, 0}, {803, 2106}}";
sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 550}";
+ sepNavVisRange = "{0, 548}";
sepNavWindowFrame = "{{517, 39}, {923, 837}}";
};
};
diff --git a/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.perspectivev3
index a9070a0..a6dd77a 100755
--- a/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/BuildATPDF/BuildATPDF.xcodeproj/christopherjohnson.perspectivev3
@@ -353,11 +353,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D72F41F7F11CA007AB60F</string>
+ <string>8B79285A21F341B0006E9731</string>
<key>history</key>
<array>
<string>8B753DE91E4005E400347157</string>
- <string>8B9D637D1F7C82F6007AB60F</string>
+ <string>8B9D72F41F7F11CA007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 216}}</string>
+ <string>{{0, 0}, {531, 202}}</string>
<key>RubberWindowFrame</key>
<string>599 205 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>216pt</string>
+ <string>202pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>392pt</string>
+ <string>406pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,7 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 365}}</string>
+ <string>{{10, 27}, {531, 379}}</string>
<key>RubberWindowFrame</key>
<string>599 205 841 654 0 0 1440 878 </string>
</dict>
@@ -480,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D72F51F7F11CA007AB60F</string>
+ <string>8B79285B21F341B0006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D72F61F7F11CA007AB60F</string>
+ <string>8B79285C21F341B0006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D72F71F7F11CA007AB60F</string>
+ <string>8B79285D21F341B0006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528421322.85982102</real>
+ <real>569590192.67660701</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,7 +674,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D72F81F7F11CA007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/BuildATPDF/BuildATPDF.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacAU/BussColors4/BussColors4.cpp b/plugins/MacAU/BussColors4/BussColors4.cpp
index 4b0c664..35f7931 100755
--- a/plugins/MacAU/BussColors4/BussColors4.cpp
+++ b/plugins/MacAU/BussColors4/BussColors4.cpp
@@ -227,9 +227,7 @@ void BussColors4::BussColors4Kernel::Reset()
control = 0;
gcount = 0;
slowdyn = 0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -263,9 +261,6 @@ void BussColors4::BussColors4Kernel::Process( const Float32 *inSourceP,
Float64 gain = 0.436;
Float64 outgain = 1.0;
Float64 bridgerectifier;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
int console = (int) GetParameter( kParam_One );
switch (console)
@@ -662,19 +657,11 @@ void BussColors4::BussColors4Kernel::Process( const Float32 *inSourceP,
inputSample = (inputSample * wet) + (drySample * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/BussColors4/BussColors4.h b/plugins/MacAU/BussColors4/BussColors4.h
index 799fbc6..321760e 100755
--- a/plugins/MacAU/BussColors4/BussColors4.h
+++ b/plugins/MacAU/BussColors4/BussColors4.h
@@ -160,9 +160,7 @@ public:
Float64 control;
int gcount;
Float64 slowdyn;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser
index 57c71c6..64acbeb 100755
--- a/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528421335;
- PBXWorkspaceStateSaveDate = 528421335;
+ PBXPerProjectTemplateStateSaveDate = 569590217;
+ PBXWorkspaceStateSaveDate = 569590217;
};
perUserProjectItems = {
8B48B64B1EE21C9100BCF3D0 /* PlistBookmark */ = 8B48B64B1EE21C9100BCF3D0 /* PlistBookmark */;
+ 8B79286B21F34214006E9731 /* PBXTextBookmark */ = 8B79286B21F34214006E9731 /* PBXTextBookmark */;
+ 8B79287021F3422D006E9731 /* PBXTextBookmark */ = 8B79287021F3422D006E9731 /* PBXTextBookmark */;
8B9D73031F7F11E3007AB60F /* PBXTextBookmark */ = 8B9D73031F7F11E3007AB60F /* PBXTextBookmark */;
- 8B9D73041F7F11E3007AB60F /* PBXTextBookmark */ = 8B9D73041F7F11E3007AB60F /* PBXTextBookmark */;
- 8B9D73051F7F11E3007AB60F /* PBXTextBookmark */ = 8B9D73051F7F11E3007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -74,17 +74,7 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B9D73031F7F11E3007AB60F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* BussColors4.h */;
- name = "BussColors4.h: 157";
- rLen = 0;
- rLoc = 6374;
- rType = 0;
- vrLen = 351;
- vrLoc = 3;
- };
- 8B9D73041F7F11E3007AB60F /* PBXTextBookmark */ = {
+ 8B79286B21F34214006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A670720730100365D66 /* BussColors4.exp */;
name = "BussColors4.exp: 1";
@@ -94,7 +84,7 @@
vrLen = 18;
vrLoc = 0;
};
- 8B9D73051F7F11E3007AB60F /* PBXTextBookmark */ = {
+ 8B79287021F3422D006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A670720730100365D66 /* BussColors4.exp */;
name = "BussColors4.exp: 1";
@@ -104,17 +94,27 @@
vrLen = 18;
vrLoc = 0;
};
+ 8B9D73031F7F11E3007AB60F /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* BussColors4.h */;
+ name = "BussColors4.h: 157";
+ rLen = 0;
+ rLoc = 6374;
+ rType = 0;
+ vrLen = 351;
+ vrLoc = 3;
+ };
8BA05A660720730100365D66 /* BussColors4.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {905, 9542}}";
- sepNavSelRange = "{12772, 0}";
- sepNavVisRange = "{11547, 2663}";
+ sepNavIntBoundsRect = "{{0, 0}, {905, 9672}}";
+ sepNavSelRange = "{11353, 0}";
+ sepNavVisRange = "{10026, 2482}";
sepNavWindowFrame = "{{394, 39}, {952, 839}}";
};
};
8BA05A670720730100365D66 /* BussColors4.exp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {367, 107}}";
+ sepNavIntBoundsRect = "{{0, 0}, {367, 92}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 18}";
};
@@ -129,9 +129,9 @@
};
8BC6025B073B072D006C4272 /* BussColors4.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {530, 2236}}";
- sepNavSelRange = "{6374, 0}";
- sepNavVisRange = "{3, 351}";
+ sepNavIntBoundsRect = "{{0, 0}, {905, 2340}}";
+ sepNavSelRange = "{6519, 0}";
+ sepNavVisRange = "{4823, 1798}";
sepNavWindowFrame = "{{33, 39}, {952, 839}}";
};
};
diff --git a/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3
index 1ccb652..c388d98 100755
--- a/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -353,12 +351,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D73051F7F11E3007AB60F</string>
+ <string>8B79287021F3422D006E9731</string>
<key>history</key>
<array>
<string>8B48B64B1EE21C9100BCF3D0</string>
<string>8B9D73031F7F11E3007AB60F</string>
- <string>8B9D73041F7F11E3007AB60F</string>
+ <string>8B79286B21F34214006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {416, 139}}</string>
+ <string>{{0, 0}, {416, 124}}</string>
<key>RubberWindowFrame</key>
<string>541 301 726 510 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>139pt</string>
+ <string>124pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>325pt</string>
+ <string>340pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {416, 298}}</string>
- <key>RubberWindowFrame</key>
- <string>541 301 726 510 0 0 1440 878 </string>
+ <string>{{10, 27}, {416, 313}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {416, 399}}</string>
+ <string>{{10, 27}, {416, 313}}</string>
+ <key>RubberWindowFrame</key>
+ <string>541 301 726 510 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -481,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D73061F7F11E3007AB60F</string>
+ <string>8B79287121F3422D006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D73071F7F11E3007AB60F</string>
+ <string>8B79287221F3422D006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D73081F7F11E3007AB60F</string>
+ <string>8B79287321F3422D006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528421347.61386502</real>
+ <real>569590317.82425797</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,7 +673,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D73091F7F11E3007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/BussColors4/BussColors4.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacAU/ButterComp/ButterComp.cpp b/plugins/MacAU/ButterComp/ButterComp.cpp
index 612eb3c..5280a58 100755
--- a/plugins/MacAU/ButterComp/ButterComp.cpp
+++ b/plugins/MacAU/ButterComp/ButterComp.cpp
@@ -188,9 +188,6 @@ void ButterComp::ButterCompKernel::Process( const Float32 *inSourceP,
Float64 overallscale = 2.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
Float64 inputpos;
Float64 inputneg;
Float64 calcpos;
@@ -286,11 +283,11 @@ void ButterComp::ButterCompKernel::Process( const Float32 *inSourceP,
inputSample /= outputgain;
if (wet < 1.0) inputSample = (drySample * dry)+(inputSample*wet);
- //noise shaping to 32-bit floating point
- fpTemp = inputSample;
- fpNShape = (fpNShape*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShape;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser
index 0757b10..21b9158 100755
--- a/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser
@@ -51,24 +51,44 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 559509267;
- PBXWorkspaceStateSaveDate = 559509267;
+ PBXPerProjectTemplateStateSaveDate = 569590364;
+ PBXWorkspaceStateSaveDate = 569590364;
};
perUserProjectItems = {
+ 8B79288121F342AF006E9731 /* PBXTextBookmark */ = 8B79288121F342AF006E9731 /* PBXTextBookmark */;
+ 8B79288621F342C1006E9731 /* PBXTextBookmark */ = 8B79288621F342C1006E9731 /* PBXTextBookmark */;
8BE626A621596E0600E4E476 /* PBXTextBookmark */ = 8BE626A621596E0600E4E476 /* PBXTextBookmark */;
- 8BE626D221596F6E00E4E476 /* PBXTextBookmark */ = 8BE626D221596F6E00E4E476 /* PBXTextBookmark */;
- 8BE626D321596F6E00E4E476 /* PBXTextBookmark */ = 8BE626D321596F6E00E4E476 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B79288121F342AF006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* ButterComp.cpp */;
+ name = "ButterComp.cpp: 266";
+ rLen = 0;
+ rLoc = 11774;
+ rType = 0;
+ vrLen = 0;
+ vrLoc = 0;
+ };
+ 8B79288621F342C1006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* ButterComp.cpp */;
+ name = "ButterComp.cpp: 266";
+ rLen = 0;
+ rLoc = 11774;
+ rType = 0;
+ vrLen = 0;
+ vrLoc = 0;
+ };
8BA05A660720730100365D66 /* ButterComp.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {579, 4004}}";
- sepNavSelRange = "{11891, 0}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 3965}}";
+ sepNavSelRange = "{11774, 0}";
sepNavVisRange = "{0, 0}";
- sepNavWindowFrame = "{{618, 69}, {834, 801}}";
+ sepNavWindowFrame = "{{405, 77}, {834, 801}}";
};
};
8BA05A670720730100365D66 /* ButterComp.exp */ = {
@@ -89,9 +109,9 @@
};
8BC6025B073B072D006C4272 /* ButterComp.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {698, 1885}}";
+ sepNavIntBoundsRect = "{{0, 0}, {824, 1846}}";
sepNavSelRange = "{5162, 0}";
- sepNavVisRange = "{3553, 95}";
+ sepNavVisRange = "{3901, 1436}";
sepNavWindowFrame = "{{606, 77}, {834, 801}}";
};
};
@@ -119,26 +139,6 @@
vrLen = 95;
vrLoc = 3553;
};
- 8BE626D221596F6E00E4E476 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* ButterComp.cpp */;
- name = "ButterComp.cpp: 269";
- rLen = 0;
- rLoc = 11891;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
- 8BE626D321596F6E00E4E476 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* ButterComp.cpp */;
- name = "ButterComp.cpp: 269";
- rLen = 0;
- rLoc = 11891;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
8D01CCC60486CAD60068D4B7 /* ButterComp */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3
index 412b584..f0011a1 100755
--- a/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>628 380 810 487 0 0 1440 878 </string>
+ <string>447 360 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,11 +350,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BE626D321596F6E00E4E476</string>
+ <string>8B79288621F342C1006E9731</string>
<key>history</key>
<array>
<string>8BE626A621596E0600E4E476</string>
- <string>8BE626D221596F6E00E4E476</string>
+ <string>8B79288121F342AF006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 32}}</string>
+ <string>{{0, 0}, {603, 13}}</string>
<key>RubberWindowFrame</key>
- <string>628 380 810 487 0 0 1440 878 </string>
+ <string>447 360 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>32pt</string>
+ <string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>409pt</string>
+ <string>428pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
- <key>RubberWindowFrame</key>
- <string>628 380 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 401}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 401}}</string>
+ <key>RubberWindowFrame</key>
+ <string>447 360 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BE626D421596F6E00E4E476</string>
+ <string>8B79288721F342C1006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BE626D521596F6E00E4E476</string>
+ <string>8B79288821F342C1006E9731</string>
<string>8B7FDBEA1F85C96D00A80060</string>
- <string>8BE626D621596F6E00E4E476</string>
+ <string>8B79288921F342C1006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -656,7 +654,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>559509358.82003796</real>
+ <real>569590465.72403705</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -673,11 +671,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BE626D721596F6E00E4E476</string>
<string>/Users/christopherjohnson/Desktop/MacAU/ButterComp/ButterComp.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>628 380 810 487 0 0 1440 878 </string>
+ <string>447 360 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/ButterComp2/ButterComp2.cpp b/plugins/MacAU/ButterComp2/ButterComp2.cpp
index e85626f..ec45914 100755
--- a/plugins/MacAU/ButterComp2/ButterComp2.cpp
+++ b/plugins/MacAU/ButterComp2/ButterComp2.cpp
@@ -317,23 +317,15 @@ void ButterComp2::ButterComp2Kernel::Process( const Float32 *inSourceP,
flip = !flip;
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser
index e13714b..9bf558f 100755
--- a/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 559960504;
- PBXWorkspaceStateSaveDate = 559960504;
+ PBXPerProjectTemplateStateSaveDate = 569590507;
+ PBXWorkspaceStateSaveDate = 569590507;
};
perUserProjectItems = {
8B42FD41216050B10092969A /* PBXTextBookmark */ = 8B42FD41216050B10092969A /* PBXTextBookmark */;
- 8B42FD83216056480092969A /* PBXTextBookmark */ = 8B42FD83216056480092969A /* PBXTextBookmark */;
- 8B42FD84216056480092969A /* PBXTextBookmark */ = 8B42FD84216056480092969A /* PBXTextBookmark */;
+ 8B79289621F34318006E9731 /* PBXTextBookmark */ = 8B79289621F34318006E9731 /* PBXTextBookmark */;
+ 8B79289B21F34328006E9731 /* PBXTextBookmark */ = 8B79289B21F34328006E9731 /* PBXTextBookmark */;
8BE6255F2157A02A00E4E476 /* PlistBookmark */ = 8BE6255F2157A02A00E4E476 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
@@ -72,32 +72,32 @@
vrLen = 214;
vrLoc = 5453;
};
- 8B42FD83216056480092969A /* PBXTextBookmark */ = {
+ 8B79289621F34318006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ButterComp2.cpp */;
name = "ButterComp2.cpp: 252";
rLen = 0;
rLoc = 10778;
rType = 0;
- vrLen = 265;
+ vrLen = 180;
vrLoc = 10712;
};
- 8B42FD84216056480092969A /* PBXTextBookmark */ = {
+ 8B79289B21F34328006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ButterComp2.cpp */;
name = "ButterComp2.cpp: 252";
rLen = 0;
rLoc = 10778;
rType = 0;
- vrLen = 265;
+ vrLen = 180;
vrLoc = 10712;
};
8BA05A660720730100365D66 /* ButterComp2.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {586, 4498}}";
+ sepNavIntBoundsRect = "{{0, 0}, {558, 4329}}";
sepNavSelRange = "{10778, 0}";
- sepNavVisRange = "{10712, 265}";
- sepNavWindowFrame = "{{864, 45}, {816, 833}}";
+ sepNavVisRange = "{10712, 180}";
+ sepNavWindowFrame = "{{496, 45}, {816, 833}}";
};
};
8BA05A690720730100365D66 /* ButterComp2Version.h */ = {
diff --git a/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3
index c95d3a7..22a4926 100755
--- a/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>662 164 841 654 0 0 1440 878 </string>
+ <string>456 186 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -354,12 +352,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B42FD84216056480092969A</string>
+ <string>8B79289B21F34328006E9731</string>
<key>history</key>
<array>
<string>8BE6255F2157A02A00E4E476</string>
<string>8B42FD41216050B10092969A</string>
- <string>8B42FD83216056480092969A</string>
+ <string>8B79289621F34318006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 126}}</string>
+ <string>{{0, 0}, {531, 109}}</string>
<key>RubberWindowFrame</key>
- <string>662 164 841 654 0 0 1440 878 </string>
+ <string>456 186 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>126pt</string>
+ <string>109pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>482pt</string>
+ <string>499pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 455}}</string>
- <key>RubberWindowFrame</key>
- <string>662 164 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 472}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 393}}</string>
+ <string>{{10, 27}, {531, 472}}</string>
+ <key>RubberWindowFrame</key>
+ <string>456 186 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -482,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B42FD85216056480092969A</string>
+ <string>8B79289C21F34328006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B42FD86216056480092969A</string>
+ <string>8B79289D21F34328006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B42FD87216056480092969A</string>
+ <string>8B79289E21F34328006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>559961672.53862405</real>
+ <real>569590568.39095497</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -676,11 +674,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B42FD88216056480092969A</string>
<string>/Users/christopherjohnson/Desktop/MacAU/ButterComp2/ButterComp2.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>662 164 841 654 0 0 1440 878 </string>
+ <string>456 186 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/C5RawBuss/C5RawBuss.cpp b/plugins/MacAU/C5RawBuss/C5RawBuss.cpp
index 4f45ac0..9cca2dd 100755
--- a/plugins/MacAU/C5RawBuss/C5RawBuss.cpp
+++ b/plugins/MacAU/C5RawBuss/C5RawBuss.cpp
@@ -160,9 +160,7 @@ void C5RawBuss::C5RawBussKernel::Reset()
{
lastFXBuss = 0.0;
lastSampleBuss = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -177,9 +175,6 @@ void C5RawBuss::C5RawBussKernel::Process( const Float32 *inSourceP,
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = GetParameter( kParam_One ) * 0.5;
centering = 1.0 - pow(centering,5);
@@ -237,19 +232,11 @@ void C5RawBuss::C5RawBussKernel::Process( const Float32 *inSourceP,
//build new signal off what was present in output last time
//slew aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/C5RawBuss/C5RawBuss.h b/plugins/MacAU/C5RawBuss/C5RawBuss.h
index b8a3a7c..1d3209e 100755
--- a/plugins/MacAU/C5RawBuss/C5RawBuss.h
+++ b/plugins/MacAU/C5RawBuss/C5RawBuss.h
@@ -127,9 +127,7 @@ public:
private:
Float64 lastFXBuss;
Float64 lastSampleBuss;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser
index b1e416f..cd94a9b 100755
--- a/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser
@@ -49,20 +49,18 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538699005;
- PBXWorkspaceStateSaveDate = 538699005;
+ PBXPerProjectTemplateStateSaveDate = 569590602;
+ PBXWorkspaceStateSaveDate = 569590602;
};
perUserProjectItems = {
- 8B4E55B3201BC48D00B5DC2A /* PlistBookmark */ = 8B4E55B3201BC48D00B5DC2A /* PlistBookmark */;
- 8B4E57B0201BE78F00B5DC2A /* PBXBookmark */ = 8B4E57B0201BE78F00B5DC2A /* PBXBookmark */;
- 8B4E57B9201BF00900B5DC2A /* PlistBookmark */ = 8B4E57B9201BF00900B5DC2A /* PlistBookmark */;
- 8B4E57BC201BF00900B5DC2A /* PBXTextBookmark */ = 8B4E57BC201BF00900B5DC2A /* PBXTextBookmark */;
+ 8B7928AC21F343AD006E9731 /* PlistBookmark */ = 8B7928AC21F343AD006E9731 /* PlistBookmark */;
+ 8B7928B121F343BF006E9731 /* PlistBookmark */ = 8B7928B121F343BF006E9731 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B4E55B3201BC48D00B5DC2A /* PlistBookmark */ = {
+ 8B7928AC21F343AD006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -70,15 +68,11 @@
kPath = (
CFBundleName,
);
- name = /Users/christopherjohnson/Desktop/C5RawBuss/Info.plist;
+ name = /Users/christopherjohnson/Desktop/MacAU/C5RawBuss/Info.plist;
rLen = 0;
- rLoc = 9223372036854775808;
- };
- 8B4E57B0201BE78F00B5DC2A /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 8BA05A660720730100365D66 /* C5RawBuss.cpp */;
+ rLoc = 9223372036854775807;
};
- 8B4E57B9201BF00900B5DC2A /* PlistBookmark */ = {
+ 8B7928B121F343BF006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -87,25 +81,15 @@
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/MacAU/C5RawBuss/Info.plist;
- rLen = 0;
- rLoc = 9223372036854775807;
- };
- 8B4E57BC201BF00900B5DC2A /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* C5RawBuss.cpp */;
- name = "C5RawBuss.cpp: 220";
- rLen = 762;
- rLoc = 9965;
- rType = 0;
- vrLen = 1877;
- vrLoc = 9307;
+ rLen = 26;
+ rLoc = 0;
};
8BA05A660720730100365D66 /* C5RawBuss.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {876, 3380}}";
- sepNavSelRange = "{9965, 762}";
- sepNavVisRange = "{9307, 1877}";
- sepNavWindowFrame = "{{-64, 50}, {923, 828}}";
+ sepNavIntBoundsRect = "{{0, 0}, {876, 3419}}";
+ sepNavSelRange = "{10825, 0}";
+ sepNavVisRange = "{7481, 2627}";
+ sepNavWindowFrame = "{{369, 50}, {923, 828}}";
};
};
8BA05A690720730100365D66 /* C5RawBussVersion.h */ = {
@@ -118,9 +102,9 @@
};
8BC6025B073B072D006C4272 /* C5RawBuss.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1807}}";
- sepNavSelRange = "{5077, 48}";
- sepNavVisRange = "{2715, 1805}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1781}}";
+ sepNavSelRange = "{5147, 0}";
+ sepNavVisRange = "{3528, 1724}";
sepNavWindowFrame = "{{517, 50}, {923, 828}}";
};
};
diff --git a/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3
index dc4bb99..a043097 100755
--- a/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3
@@ -222,52 +222,11 @@
</dict>
</array>
<key>OpenEditors</key>
- <array>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B4E57BA201BF00900B5DC2A</string>
- <key>PBXProjectModuleLabel</key>
- <string>C5RawBuss.cpp</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B4E57BB201BF00900B5DC2A</string>
- <key>PBXProjectModuleLabel</key>
- <string>C5RawBuss.cpp</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>8B4E57BC201BF00900B5DC2A</string>
- <key>history</key>
- <array>
- <string>8B4E57B0201BE78F00B5DC2A</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {923, 731}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>-64 106 923 772 0 0 1440 878 </string>
- </dict>
- </dict>
- </array>
+ <array/>
<key>PerspectiveWidths</key>
<array>
- <integer>810</integer>
- <integer>810</integer>
+ <integer>682</integer>
+ <integer>682</integer>
</array>
<key>Perspectives</key>
<array>
@@ -297,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -367,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>719 408 682 464 0 0 1440 878 </string>
+ <string>598 397 682 464 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -395,10 +352,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4E57B9201BF00900B5DC2A</string>
+ <string>8B7928B121F343BF006E9731</string>
<key>history</key>
<array>
- <string>8B4E55B3201BC48D00B5DC2A</string>
+ <string>8B7928AC21F343AD006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -412,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {372, 39}}</string>
+ <string>{{0, 0}, {372, 20}}</string>
<key>RubberWindowFrame</key>
- <string>719 408 682 464 0 0 1440 878 </string>
+ <string>598 397 682 464 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>39pt</string>
+ <string>20pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>379pt</string>
+ <string>398pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -437,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {372, 352}}</string>
- <key>RubberWindowFrame</key>
- <string>719 408 682 464 0 0 1440 878 </string>
+ <string>{{10, 27}, {372, 371}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -493,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {372, 371}}</string>
+ <key>RubberWindowFrame</key>
+ <string>598 397 682 464 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -521,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E5791201BE4FE00B5DC2A</string>
+ <string>8B7928B221F343BF006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E5792201BE4FE00B5DC2A</string>
+ <string>8B7928B321F343BF006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B4E5793201BE4FE00B5DC2A</string>
+ <string>8B7928B421F343BF006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -698,7 +655,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538701833.475577</real>
+ <real>569590719.21111</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -715,11 +672,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B4E57BA201BF00900B5DC2A</string>
<string>/Users/christopherjohnson/Desktop/MacAU/C5RawBuss/C5RawBuss.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>719 408 682 464 0 0 1440 878 </string>
+ <string>598 397 682 464 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/C5RawChannel/C5RawChannel.cpp b/plugins/MacAU/C5RawChannel/C5RawChannel.cpp
index 15d4f7a..2b2eb79 100755
--- a/plugins/MacAU/C5RawChannel/C5RawChannel.cpp
+++ b/plugins/MacAU/C5RawChannel/C5RawChannel.cpp
@@ -160,9 +160,7 @@ void C5RawChannel::C5RawChannelKernel::Reset()
{
lastFXChannel = 0.0;
lastSampleChannel = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -177,9 +175,6 @@ void C5RawChannel::C5RawChannelKernel::Process( const Float32 *inSourceP,
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = GetParameter( kParam_One ) * 0.5;
centering = 1.0 - pow(centering,5);
@@ -238,19 +233,11 @@ void C5RawChannel::C5RawChannelKernel::Process( const Float32 *inSourceP,
inputSample = sin(inputSample);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/C5RawChannel/C5RawChannel.h b/plugins/MacAU/C5RawChannel/C5RawChannel.h
index 1f3735e..c0bc730 100755
--- a/plugins/MacAU/C5RawChannel/C5RawChannel.h
+++ b/plugins/MacAU/C5RawChannel/C5RawChannel.h
@@ -127,9 +127,7 @@ public:
private:
Float64 lastSampleChannel;
Float64 lastFXChannel;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser
index 9e28f23..fe95427 100755
--- a/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 542412635;
- PBXWorkspaceStateSaveDate = 542412635;
+ PBXPerProjectTemplateStateSaveDate = 569590745;
+ PBXWorkspaceStateSaveDate = 569590745;
};
perUserProjectItems = {
8B44C16D20548F6200B1360B /* PlistBookmark */ = 8B44C16D20548F6200B1360B /* PlistBookmark */;
- 8B44C16E20548F6200B1360B /* PBXBookmark */ = 8B44C16E20548F6200B1360B /* PBXBookmark */;
- 8B44C16F20548F6200B1360B /* PBXTextBookmark */ = 8B44C16F20548F6200B1360B /* PBXTextBookmark */;
+ 8B7928C221F3441D006E9731 /* PBXTextBookmark */ = 8B7928C221F3441D006E9731 /* PBXTextBookmark */;
+ 8B7928C721F3442D006E9731 /* PBXTextBookmark */ = 8B7928C721F3442D006E9731 /* PBXTextBookmark */;
+ 8BE625CC2157ABD800E4E476 /* PBXTextBookmark */ = 8BE625CC2157ABD800E4E476 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -71,27 +72,33 @@
);
name = /Users/christopherjohnson/Desktop/MacAU/C5RawChannel/Info.plist;
rLen = 0;
- rLoc = 9223372036854775807;
+ rLoc = 9223372036854775808;
};
- 8B44C16E20548F6200B1360B /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 8BA05A660720730100365D66 /* C5RawChannel.cpp */;
+ 8B7928C221F3441D006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* C5RawChannel.h */;
+ name = "C5RawChannel.h: 59";
+ rLen = 0;
+ rLoc = 2944;
+ rType = 0;
+ vrLen = 0;
+ vrLoc = 0;
};
- 8B44C16F20548F6200B1360B /* PBXTextBookmark */ = {
+ 8B7928C721F3442D006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* C5RawChannel.cpp */;
- name = "C5RawChannel.cpp: 220";
- rLen = 792;
- rLoc = 10043;
+ fRef = 8BC6025B073B072D006C4272 /* C5RawChannel.h */;
+ name = "C5RawChannel.h: 59";
+ rLen = 0;
+ rLoc = 2944;
rType = 0;
- vrLen = 1;
- vrLoc = 10043;
+ vrLen = 0;
+ vrLoc = 0;
};
8BA05A660720730100365D66 /* C5RawChannel.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {677, 3601}}";
- sepNavSelRange = "{10043, 792}";
- sepNavVisRange = "{10043, 1}";
+ sepNavIntBoundsRect = "{{0, 0}, {876, 3445}}";
+ sepNavSelRange = "{10933, 0}";
+ sepNavVisRange = "{6542, 2174}";
sepNavWindowFrame = "{{434, 50}, {923, 828}}";
};
};
@@ -105,9 +112,9 @@
};
8BC6025B073B072D006C4272 /* C5RawChannel.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1638}}";
+ sepNavIntBoundsRect = "{{0, 0}, {335, 1833}}";
sepNavSelRange = "{2944, 0}";
- sepNavVisRange = "{2680, 1548}";
+ sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{15, 45}, {923, 828}}";
};
};
@@ -125,6 +132,16 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
+ 8BE625CC2157ABD800E4E476 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* C5RawChannel.cpp */;
+ name = "C5RawChannel.cpp: 220";
+ rLen = 792;
+ rLoc = 9891;
+ rType = 0;
+ vrLen = 0;
+ vrLoc = 0;
+ };
8D01CCC60486CAD60068D4B7 /* C5RawChannel */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3
index 54a9bef..ee92352 100755
--- a/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>841</integer>
- <integer>841</integer>
+ <integer>694</integer>
+ <integer>694</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -302,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>3</integer>
+ <integer>4</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>721 122 694 488 0 0 1440 878 </string>
+ <string>490 149 694 488 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -342,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>C5RawChannel.cpp</string>
+ <string>C5RawChannel.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -350,15 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>C5RawChannel.cpp</string>
+ <string>C5RawChannel.h</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B44C16F20548F6200B1360B</string>
+ <string>8B7928C721F3442D006E9731</string>
<key>history</key>
<array>
<string>8B44C16D20548F6200B1360B</string>
- <string>8B44C16E20548F6200B1360B</string>
+ <string>8BE625CC2157ABD800E4E476</string>
+ <string>8B7928C221F3441D006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {384, 45}}</string>
+ <string>{{0, 0}, {384, 6}}</string>
<key>RubberWindowFrame</key>
- <string>721 122 694 488 0 0 1440 878 </string>
+ <string>490 149 694 488 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>45pt</string>
+ <string>6pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>397pt</string>
+ <string>436pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {384, 370}}</string>
- <key>RubberWindowFrame</key>
- <string>721 122 694 488 0 0 1440 878 </string>
+ <string>{{10, 27}, {384, 409}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {384, 409}}</string>
+ <key>RubberWindowFrame</key>
+ <string>490 149 694 488 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -481,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B44C17020548F6200B1360B</string>
+ <string>8B7928C821F3442D006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B44C17120548F6200B1360B</string>
+ <string>8B7928C921F3442D006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B44C17220548F6200B1360B</string>
+ <string>8B7928CA21F3442D006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>542412642.174927</real>
+ <real>569590829.86194801</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,11 +674,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B44C17320548F6200B1360B</string>
<string>/Users/christopherjohnson/Desktop/MacAU/C5RawChannel/C5RawChannel.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>721 122 694 488 0 0 1440 878 </string>
+ <string>490 149 694 488 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/CStrip/CStrip.cpp b/plugins/MacAU/CStrip/CStrip.cpp
index 78b3c31..494d6b5 100755
--- a/plugins/MacAU/CStrip/CStrip.cpp
+++ b/plugins/MacAU/CStrip/CStrip.cpp
@@ -257,9 +257,7 @@ ComponentResult CStrip::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void CStrip::CStripKernel::Reset()
{
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
lastSample = 0.0;
last2Sample = 0.0;
@@ -347,9 +345,8 @@ void CStrip::CStripKernel::Process( const Float32 *inSourceP,
overallscale = GetSampleRate();
compscale = compscale * overallscale;
//compscale is the one that's 1 or something like 2.2 for 96K rates
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
+ long double fpNew = 1.0 - fpOld;
Float64 inputSample;
Float64 highSample = 0.0;
@@ -767,19 +764,11 @@ void CStrip::CStripKernel::Process( const Float32 *inSourceP,
//built in output trim and dry/wet if desired
if (outputgain != 1.0) inputSample *= outputgain;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/CStrip/CStrip.h b/plugins/MacAU/CStrip/CStrip.h
index 750ef35..f12b4c8 100755
--- a/plugins/MacAU/CStrip/CStrip.h
+++ b/plugins/MacAU/CStrip/CStrip.h
@@ -162,9 +162,7 @@ public:
virtual void Reset();
private:
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ Float64 fpNShape;
Float64 lastSample;
Float64 last2Sample;
diff --git a/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser
index 22fd68a..d0297d0 100755
--- a/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser
@@ -49,23 +49,43 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 559506724;
- PBXWorkspaceStateSaveDate = 559506724;
+ PBXPerProjectTemplateStateSaveDate = 569595746;
+ PBXWorkspaceStateSaveDate = 569595746;
};
perUserProjectItems = {
- 8BE626742159682E00E4E476 /* PBXTextBookmark */ = 8BE626742159682E00E4E476 /* PBXTextBookmark */;
- 8BE626752159682E00E4E476 /* PBXTextBookmark */ = 8BE626752159682E00E4E476 /* PBXTextBookmark */;
+ 8B792A1221F357B8006E9731 /* PBXTextBookmark */ = 8B792A1221F357B8006E9731 /* PBXTextBookmark */;
+ 8B792A1C21F357E5006E9731 /* PBXTextBookmark */ = 8B792A1C21F357E5006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B792A1221F357B8006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* CStrip.h */;
+ name = "CStrip.h: 167";
+ rLen = 45;
+ rLoc = 6671;
+ rType = 0;
+ vrLen = 136;
+ vrLoc = 6648;
+ };
+ 8B792A1C21F357E5006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* CStrip.h */;
+ name = "CStrip.h: 167";
+ rLen = 45;
+ rLoc = 6671;
+ rType = 0;
+ vrLen = 136;
+ vrLoc = 6648;
+ };
8BA05A660720730100365D66 /* CStrip.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {989, 10972}}";
- sepNavSelRange = "{12483, 39}";
- sepNavVisRange = "{16317, 1951}";
- sepNavWindowFrame = "{{618, 70}, {1036, 808}}";
+ sepNavIntBoundsRect = "{{0, 0}, {989, 10543}}";
+ sepNavSelRange = "{14732, 0}";
+ sepNavVisRange = "{13582, 1981}";
+ sepNavWindowFrame = "{{305, 65}, {1036, 808}}";
};
};
8BA05A680720730100365D66 /* CStrip.r */ = {
@@ -86,9 +106,9 @@
};
8BC6025B073B072D006C4272 /* CStrip.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 3445}}";
- sepNavSelRange = "{6708, 45}";
- sepNavVisRange = "{6648, 121}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 3289}}";
+ sepNavSelRange = "{6671, 45}";
+ sepNavVisRange = "{6648, 136}";
sepNavWindowFrame = "{{686, 40}, {754, 805}}";
};
};
@@ -106,26 +126,6 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BE626742159682E00E4E476 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* CStrip.h */;
- name = "CStrip.h: 169";
- rLen = 45;
- rLoc = 6708;
- rType = 0;
- vrLen = 121;
- vrLoc = 6648;
- };
- 8BE626752159682E00E4E476 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* CStrip.h */;
- name = "CStrip.h: 169";
- rLen = 45;
- rLoc = 6708;
- rType = 0;
- vrLen = 121;
- vrLoc = 6648;
- };
8D01CCC60486CAD60068D4B7 /* CStrip */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3
index 02abfef..045b469 100755
--- a/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>619 317 810 487 0 0 1440 878 </string>
+ <string>471 312 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BE626752159682E00E4E476</string>
+ <string>8B792A1C21F357E5006E9731</string>
<key>history</key>
<array>
- <string>8BE626742159682E00E4E476</string>
+ <string>8B792A1221F357B8006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>619 317 810 487 0 0 1440 878 </string>
+ <string>471 312 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>619 317 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 297}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>471 312 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BE626762159682E00E4E476</string>
+ <string>8B792A1D21F357E5006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BE626772159682E00E4E476</string>
+ <string>8B792A1E21F357E5006E9731</string>
<string>8BB5DCD21FBCB6E7008B4570</string>
- <string>8BE626782159682E00E4E476</string>
+ <string>8B792A1F21F357E5006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>559507502.89647996</real>
+ <real>569595877.85073602</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,10 +650,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
+ <string>8B792A2021F357E5006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/CStrip/CStrip.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>619 317 810 487 0 0 1440 878 </string>
+ <string>471 312 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Capacitor/Capacitor.cpp b/plugins/MacAU/Capacitor/Capacitor.cpp
index f810f0e..bfe38c2 100755
--- a/plugins/MacAU/Capacitor/Capacitor.cpp
+++ b/plugins/MacAU/Capacitor/Capacitor.cpp
@@ -196,9 +196,7 @@ void Capacitor::CapacitorKernel::Reset()
lastLowpass = 1000.0;
lastHighpass = 1000.0;
lastWet = 1000.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -229,9 +227,6 @@ void Capacitor::CapacitorKernel::Process( const Float32 *inSourceP,
Float64 invLowpass;
Float64 invHighpass;
Float64 dry;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSample;
Float32 drySample;
@@ -324,19 +319,11 @@ void Capacitor::CapacitorKernel::Process( const Float32 *inSourceP,
inputSample = (drySample * dry) + (inputSample * wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Capacitor/Capacitor.h b/plugins/MacAU/Capacitor/Capacitor.h
index 92ca84a..7608462 100755
--- a/plugins/MacAU/Capacitor/Capacitor.h
+++ b/plugins/MacAU/Capacitor/Capacitor.h
@@ -158,9 +158,7 @@ public:
Float64 lastHighpass;
Float64 lastWet;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser
index 2351b87..3c205e0 100755
--- a/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser
@@ -51,13 +51,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 531742140;
- PBXWorkspaceStateSaveDate = 531742140;
+ PBXPerProjectTemplateStateSaveDate = 569590853;
+ PBXWorkspaceStateSaveDate = 569590853;
};
perUserProjectItems = {
8B558E341E54FD3900D04D0B /* PlistBookmark */ = 8B558E341E54FD3900D04D0B /* PlistBookmark */;
- 8B6692B51FB1BDCA007B3434 /* PBXTextBookmark */ = 8B6692B51FB1BDCA007B3434 /* PBXTextBookmark */;
- 8B6692B61FB1BDCA007B3434 /* PBXTextBookmark */ = 8B6692B61FB1BDCA007B3434 /* PBXTextBookmark */;
+ 8B7928D921F344BA006E9731 /* PBXTextBookmark */ = 8B7928D921F344BA006E9731 /* PBXTextBookmark */;
+ 8B7928DE21F344CC006E9731 /* PBXTextBookmark */ = 8B7928DE21F344CC006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -75,32 +75,32 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B6692B51FB1BDCA007B3434 /* PBXTextBookmark */ = {
+ 8B7928D921F344BA006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Capacitor.cpp */;
- name = "Capacitor.cpp: 238";
+ name = "Capacitor.cpp: 233";
rLen = 0;
- rLoc = 10065;
+ rLoc = 9913;
rType = 0;
- vrLen = 80;
- vrLoc = 10017;
+ vrLen = 141;
+ vrLoc = 9914;
};
- 8B6692B61FB1BDCA007B3434 /* PBXTextBookmark */ = {
+ 8B7928DE21F344CC006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Capacitor.cpp */;
- name = "Capacitor.cpp: 238";
+ name = "Capacitor.cpp: 233";
rLen = 0;
- rLoc = 10065;
+ rLoc = 9913;
rType = 0;
- vrLen = 80;
- vrLoc = 10017;
+ vrLen = 141;
+ vrLoc = 9914;
};
8BA05A660720730100365D66 /* Capacitor.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {544, 4628}}";
- sepNavSelRange = "{10065, 0}";
- sepNavVisRange = "{10017, 80}";
- sepNavWindowFrame = "{{512, 39}, {923, 837}}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 4472}}";
+ sepNavSelRange = "{9913, 0}";
+ sepNavVisRange = "{9914, 141}";
+ sepNavWindowFrame = "{{401, 32}, {923, 837}}";
};
};
8BA05A690720730100365D66 /* CapacitorVersion.h */ = {
@@ -113,9 +113,9 @@
};
8BC6025B073B072D006C4272 /* Capacitor.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 2158}}";
- sepNavSelRange = "{5829, 65}";
- sepNavVisRange = "{3949, 1667}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2353}}";
+ sepNavSelRange = "{5854, 0}";
+ sepNavVisRange = "{4764, 1192}";
sepNavWindowFrame = "{{517, 41}, {923, 837}}";
};
};
diff --git a/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3
index 53f7a19..079d4c2 100755
--- a/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>810</integer>
- <integer>810</integer>
+ <integer>841</integer>
+ <integer>841</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -301,7 +299,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -325,7 +323,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>573 188 841 654 0 0 1440 878 </string>
+ <string>493 190 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B6692B61FB1BDCA007B3434</string>
+ <string>8B7928DE21F344CC006E9731</string>
<key>history</key>
<array>
<string>8B558E341E54FD3900D04D0B</string>
- <string>8B6692B51FB1BDCA007B3434</string>
+ <string>8B7928D921F344BA006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 92}}</string>
+ <string>{{0, 0}, {531, 74}}</string>
<key>RubberWindowFrame</key>
- <string>573 188 841 654 0 0 1440 878 </string>
+ <string>493 190 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>92pt</string>
+ <string>74pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>516pt</string>
+ <string>534pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 489}}</string>
- <key>RubberWindowFrame</key>
- <string>573 188 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 507}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {531, 507}}</string>
+ <key>RubberWindowFrame</key>
+ <string>493 190 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B6692B71FB1BDCA007B3434</string>
+ <string>8B7928DF21F344CC006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B6692B81FB1BDCA007B3434</string>
+ <string>8B7928E021F344CC006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B6692B91FB1BDCA007B3434</string>
+ <string>8B7928E121F344CC006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +655,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>531742154.04575902</real>
+ <real>569590988.98670805</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,11 +672,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B6692BA1FB1BDCA007B3434</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Capacitor/Capacitor.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>573 188 841 654 0 0 1440 878 </string>
+ <string>493 190 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Channel6/Channel6.cpp b/plugins/MacAU/Channel6/Channel6.cpp
index a0e543c..160b961 100755
--- a/plugins/MacAU/Channel6/Channel6.cpp
+++ b/plugins/MacAU/Channel6/Channel6.cpp
@@ -284,22 +284,15 @@ void Channel6::Channel6Kernel::Process( const Float32 *inSourceP,
{
inputSample *= output;
}
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
-} \ No newline at end of file
+}
diff --git a/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser
index 108e0b5..46650ee 100755
--- a/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser
@@ -49,19 +49,39 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553993498;
- PBXWorkspaceStateSaveDate = 553993498;
+ PBXPerProjectTemplateStateSaveDate = 569591253;
+ PBXWorkspaceStateSaveDate = 569591253;
};
perUserProjectItems = {
+ 8B79290F21F3460C006E9731 /* PBXTextBookmark */ = 8B79290F21F3460C006E9731 /* PBXTextBookmark */;
+ 8B79291421F3461E006E9731 /* PBXTextBookmark */ = 8B79291421F3461E006E9731 /* PBXTextBookmark */;
8B97541F2103D42D00A4FFA3 /* PBXTextBookmark */ = 8B97541F2103D42D00A4FFA3 /* PBXTextBookmark */;
8BB8B7512103B13800751000 /* PlistBookmark */ = 8BB8B7512103B13800751000 /* PlistBookmark */;
- 8BBD18BF2105439F0015A233 /* PBXTextBookmark */ = 8BBD18BF2105439F0015A233 /* PBXTextBookmark */;
- 8BBD18F5210547560015A233 /* PBXTextBookmark */ = 8BBD18F5210547560015A233 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B79290F21F3460C006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Channel6.cpp */;
+ name = "Channel6.cpp: 216";
+ rLen = 0;
+ rLoc = 9427;
+ rType = 0;
+ vrLen = 338;
+ vrLoc = 9262;
+ };
+ 8B79291421F3461E006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Channel6.cpp */;
+ name = "Channel6.cpp: 216";
+ rLen = 0;
+ rLoc = 9427;
+ rType = 0;
+ vrLen = 338;
+ vrLoc = 9262;
+ };
8B97541F2103D42D00A4FFA3 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Channel6.h */;
@@ -74,10 +94,10 @@
};
8BA05A660720730100365D66 /* Channel6.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {656, 4030}}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 3874}}";
sepNavSelRange = "{9427, 0}";
- sepNavVisRange = "{9225, 393}";
- sepNavWindowFrame = "{{659, 57}, {850, 821}}";
+ sepNavVisRange = "{9262, 338}";
+ sepNavWindowFrame = "{{442, 57}, {850, 821}}";
};
};
8BA05A670720730100365D66 /* Channel6.exp */ = {
@@ -108,32 +128,12 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8BBD18BF2105439F0015A233 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Channel6.cpp */;
- name = "Channel6.cpp: 216";
- rLen = 0;
- rLoc = 9427;
- rType = 0;
- vrLen = 439;
- vrLoc = 9182;
- };
- 8BBD18F5210547560015A233 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Channel6.cpp */;
- name = "Channel6.cpp: 216";
- rLen = 0;
- rLoc = 9427;
- rType = 0;
- vrLen = 393;
- vrLoc = 9225;
- };
8BC6025B073B072D006C4272 /* Channel6.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 2015}}";
- sepNavSelRange = "{5615, 0}";
- sepNavVisRange = "{2424, 1290}";
- sepNavWindowFrame = "{{600, 57}, {850, 821}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1989}}";
+ sepNavSelRange = "{5497, 0}";
+ sepNavVisRange = "{4141, 1596}";
+ sepNavWindowFrame = "{{590, 57}, {850, 821}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3
index 42ecf8f..ffc3590 100755
--- a/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>592 182 841 654 0 0 1440 878 </string>
+ <string>463 218 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -354,12 +352,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBD18F5210547560015A233</string>
+ <string>8B79291421F3461E006E9731</string>
<key>history</key>
<array>
<string>8BB8B7512103B13800751000</string>
<string>8B97541F2103D42D00A4FFA3</string>
- <string>8BBD18BF2105439F0015A233</string>
+ <string>8B79290F21F3460C006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 173}}</string>
+ <string>{{0, 0}, {531, 142}}</string>
<key>RubberWindowFrame</key>
- <string>592 182 841 654 0 0 1440 878 </string>
+ <string>463 218 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>173pt</string>
+ <string>142pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>435pt</string>
+ <string>466pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 408}}</string>
- <key>RubberWindowFrame</key>
- <string>592 182 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 439}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {531, 439}}</string>
+ <key>RubberWindowFrame</key>
+ <string>463 218 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -482,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBD18F6210547560015A233</string>
+ <string>8B79291521F3461E006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBD18F7210547560015A233</string>
+ <string>8B79291621F3461E006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BBD18F8210547560015A233</string>
+ <string>8B79291721F3461E006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553994070.73831797</real>
+ <real>569591326.09985697</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -676,11 +674,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBD18F9210547560015A233</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Channel6/Channel6.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>592 182 841 654 0 0 1440 878 </string>
+ <string>463 218 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Chorus/Chorus.cpp b/plugins/MacAU/Chorus/Chorus.cpp
index c82a9f8..6a4eb69 100755
--- a/plugins/MacAU/Chorus/Chorus.cpp
+++ b/plugins/MacAU/Chorus/Chorus.cpp
@@ -181,9 +181,8 @@ void Chorus::ChorusKernel::Reset()
airEven = 0.0;
airOdd = 0.0;
airFactor = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
+ fpFlip = false;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -214,10 +213,6 @@ void Chorus::ChorusKernel::Process( const Float32 *inSourceP,
Float64 tupi = 3.141592653589793238 * 2.0;
Float64 offset;
//this is a double buffer so we will be splitting it in two
-
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSample;
Float64 drySample;
@@ -282,19 +277,11 @@ void Chorus::ChorusKernel::Process( const Float32 *inSourceP,
inputSample = (inputSample * wet) + (drySample * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
destP += inNumChannels;
diff --git a/plugins/MacAU/Chorus/Chorus.h b/plugins/MacAU/Chorus/Chorus.h
index e25e995..ff1fdf2 100755
--- a/plugins/MacAU/Chorus/Chorus.h
+++ b/plugins/MacAU/Chorus/Chorus.h
@@ -139,9 +139,8 @@ public:
Float64 airEven;
Float64 airOdd;
Float64 airFactor;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
+ bool fpFlip;
};
};
diff --git a/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser
index 3cae981..f61c3d3 100755
--- a/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser
@@ -49,44 +49,44 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 529841844;
- PBXWorkspaceStateSaveDate = 529841844;
+ PBXPerProjectTemplateStateSaveDate = 569591348;
+ PBXWorkspaceStateSaveDate = 569591348;
};
perUserProjectItems = {
- 8B36C9E21F94D13C003BE0C9 /* PBXTextBookmark */ = 8B36C9E21F94D13C003BE0C9 /* PBXTextBookmark */;
- 8B9D733F1F7F1245007AB60F /* PBXTextBookmark */ = 8B9D733F1F7F1245007AB60F /* PBXTextBookmark */;
+ 8B79292521F34676006E9731 /* PBXTextBookmark */ = 8B79292521F34676006E9731 /* PBXTextBookmark */;
+ 8B79293221F346AC006E9731 /* PBXTextBookmark */ = 8B79293221F346AC006E9731 /* PBXTextBookmark */;
8BCF321C1F4E492C00632CB6 /* PBXTextBookmark */ = 8BCF321C1F4E492C00632CB6 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B36C9E21F94D13C003BE0C9 /* PBXTextBookmark */ = {
+ 8B79292521F34676006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Chorus.cpp */;
- name = "Chorus.cpp: 269";
+ name = "Chorus.cpp: 263";
rLen = 0;
- rLoc = 11881;
+ rLoc = 11745;
rType = 0;
vrLen = 0;
vrLoc = 0;
};
- 8B9D733F1F7F1245007AB60F /* PBXTextBookmark */ = {
+ 8B79293221F346AC006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Chorus.cpp */;
- name = "Chorus.cpp: 269";
+ name = "Chorus.cpp: 264";
rLen = 0;
- rLoc = 11881;
+ rLoc = 11745;
rType = 0;
- vrLen = 65;
- vrLoc = 10659;
+ vrLen = 0;
+ vrLoc = 0;
};
8BA05A660720730100365D66 /* Chorus.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 4004}}";
- sepNavSelRange = "{11881, 0}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 3887}}";
+ sepNavSelRange = "{11745, 0}";
sepNavVisRange = "{0, 0}";
- sepNavWindowFrame = "{{784, 39}, {1024, 839}}";
+ sepNavWindowFrame = "{{257, 39}, {1024, 839}}";
};
};
8BA05A670720730100365D66 /* Chorus.exp */ = {
@@ -107,9 +107,9 @@
};
8BC6025B073B072D006C4272 /* Chorus.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {958, 1963}}";
- sepNavSelRange = "{5229, 0}";
- sepNavVisRange = "{4125, 1457}";
+ sepNavIntBoundsRect = "{{0, 0}, {958, 1937}}";
+ sepNavSelRange = "{5444, 0}";
+ sepNavVisRange = "{4046, 1502}";
sepNavWindowFrame = "{{435, 39}, {1005, 839}}";
};
};
diff --git a/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3
index ecf0b5a..4dc6f92 100755
--- a/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 329 810 487 0 0 1440 878 </string>
+ <string>473 332 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,11 +352,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B36C9E21F94D13C003BE0C9</string>
+ <string>8B79293221F346AC006E9731</string>
<key>history</key>
<array>
<string>8BCF321C1F4E492C00632CB6</string>
- <string>8B9D733F1F7F1245007AB60F</string>
+ <string>8B79292521F34676006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 32}}</string>
+ <string>{{0, 0}, {603, 13}}</string>
<key>RubberWindowFrame</key>
- <string>630 329 810 487 0 0 1440 878 </string>
+ <string>473 332 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>32pt</string>
+ <string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>409pt</string>
+ <string>428pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
- <key>RubberWindowFrame</key>
- <string>630 329 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 401}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 401}}</string>
+ <key>RubberWindowFrame</key>
+ <string>473 332 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B36C9E31F94D13C003BE0C9</string>
+ <string>8B79293321F346AC006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B36C9E41F94D13C003BE0C9</string>
+ <string>8B79293421F346AC006E9731</string>
<string>8BCFBD371E6DE48D0046F93B</string>
- <string>8B36C9E51F94D13C003BE0C9</string>
+ <string>8B79293521F346AC006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>529846588.24690598</real>
+ <real>569591468.25551903</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +653,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B36C9E61F94D13C003BE0C9</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Chorus/Chorus.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 329 810 487 0 0 1440 878 </string>
+ <string>473 332 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.cpp b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.cpp
index 8caed8c..4cc8f36 100755
--- a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.cpp
+++ b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.cpp
@@ -181,9 +181,8 @@ void ChorusEnsemble::ChorusEnsembleKernel::Reset()
airEven = 0.0;
airOdd = 0.0;
airFactor = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
+ fpFlip = false;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -215,10 +214,6 @@ void ChorusEnsemble::ChorusEnsembleKernel::Process( const Float32 *inSourceP,
Float64 offset;
Float64 start[4];
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
long double inputSample;
Float64 drySample;
//now we'll precalculate some stuff that needn't be in every sample
@@ -312,19 +307,11 @@ void ChorusEnsemble::ChorusEnsembleKernel::Process( const Float32 *inSourceP,
inputSample = (inputSample * wet) + (drySample * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
destP += inNumChannels;
diff --git a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.h b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.h
index 6b2b8ed..7012d58 100755
--- a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.h
+++ b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.h
@@ -139,9 +139,8 @@ public:
Float64 airEven;
Float64 airOdd;
Float64 airFactor;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
+ bool fpFlip;
};
};
diff --git a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser
index 338f1c0..6b1f825 100755
--- a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser
@@ -49,61 +49,50 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528421453;
- PBXWorkspaceStateSaveDate = 528421453;
+ PBXPerProjectTemplateStateSaveDate = 569591494;
+ PBXWorkspaceStateSaveDate = 569591494;
};
perUserProjectItems = {
+ 8B79294D21F34765006E9731 /* PBXTextBookmark */ = 8B79294D21F34765006E9731 /* PBXTextBookmark */;
8B8847291F206D6800E13453 /* PBXTextBookmark */ = 8B8847291F206D6800E13453 /* PBXTextBookmark */;
- 8B88472A1F206D6800E13453 /* PBXTextBookmark */ = 8B88472A1F206D6800E13453 /* PBXTextBookmark */;
- 8B9D734E1F7F1296007AB60F /* PBXTextBookmark */ = 8B9D734E1F7F1296007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B8847291F206D6800E13453 /* PBXTextBookmark */ = {
+ 8B79294D21F34765006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A670720730100365D66 /* ChorusEnsemble.exp */;
name = "ChorusEnsemble.exp: 2";
rLen = 0;
rLoc = 21;
rType = 0;
- vrLen = 21;
+ vrLen = 0;
vrLoc = 0;
};
- 8B88472A1F206D6800E13453 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* ChorusEnsemble.h */;
- name = "ChorusEnsemble.h: 58";
- rLen = 0;
- rLoc = 2939;
- rType = 0;
- vrLen = 239;
- vrLoc = 2754;
- };
- 8B9D734E1F7F1296007AB60F /* PBXTextBookmark */ = {
+ 8B8847291F206D6800E13453 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* ChorusEnsemble.h */;
- name = "ChorusEnsemble.h: 58";
+ fRef = 8BA05A670720730100365D66 /* ChorusEnsemble.exp */;
+ name = "ChorusEnsemble.exp: 2";
rLen = 0;
- rLoc = 2939;
+ rLoc = 21;
rType = 0;
- vrLen = 0;
+ vrLen = 21;
vrLoc = 0;
};
8BA05A660720730100365D66 /* ChorusEnsemble.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {521, 4407}}";
- sepNavSelRange = "{11914, 0}";
- sepNavVisRange = "{0, 0}";
- sepNavWindowFrame = "{{295, 65}, {1145, 812}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1098, 4368}}";
+ sepNavSelRange = "{8495, 0}";
+ sepNavVisRange = "{7989, 1986}";
+ sepNavWindowFrame = "{{147, 42}, {1145, 812}}";
};
};
8BA05A670720730100365D66 /* ChorusEnsemble.exp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 100}}";
+ sepNavIntBoundsRect = "{{0, 0}, {521, 26}}";
sepNavSelRange = "{21, 0}";
- sepNavVisRange = "{0, 21}";
+ sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{15, 39}, {1005, 839}}";
};
};
@@ -117,7 +106,7 @@
};
8BC6025B073B072D006C4272 /* ChorusEnsemble.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {719, 2197}}";
+ sepNavIntBoundsRect = "{{0, 0}, {521, 1937}}";
sepNavSelRange = "{2939, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{435, 39}, {1005, 839}}";
diff --git a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3
index 71d07ef..d35aa7f 100755
--- a/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3
@@ -326,7 +326,7 @@
<real>218</real>
</array>
<key>RubberWindowFrame</key>
- <string>616 217 810 487 0 0 1440 878 </string>
+ <string>457 305 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -342,7 +342,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B8847271F206D6800E13453</string>
<key>PBXProjectModuleLabel</key>
- <string>ChorusEnsemble.h</string>
+ <string>ChorusEnsemble.exp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -350,15 +350,14 @@
<key>PBXProjectModuleGUID</key>
<string>8B8847281F206D6800E13453</string>
<key>PBXProjectModuleLabel</key>
- <string>ChorusEnsemble.h</string>
+ <string>ChorusEnsemble.exp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D734E1F7F1296007AB60F</string>
+ <string>8B79294D21F34765006E9731</string>
<key>history</key>
<array>
<string>8B8847291F206D6800E13453</string>
- <string>8B88472A1F206D6800E13453</string>
</array>
</dict>
<key>SplitCount</key>
@@ -374,7 +373,7 @@
<key>Frame</key>
<string>{{0, 0}, {570, 0}}</string>
<key>RubberWindowFrame</key>
- <string>616 217 810 487 0 0 1440 878 </string>
+ <string>457 305 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -398,8 +397,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {570, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>616 217 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {570, 312}}</string>
+ <string>{{10, 27}, {570, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>457 305 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -481,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D734F1F7F1296007AB60F</string>
+ <string>8B79294E21F34765006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D73501F7F1296007AB60F</string>
+ <string>8B79294F21F34765006E9731</string>
<string>8B8847271F206D6800E13453</string>
- <string>8B9D73511F7F1296007AB60F</string>
+ <string>8B79295021F34765006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -638,7 +637,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528421526.378672</real>
+ <real>569591653.62024701</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -655,11 +654,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D73521F7F1296007AB60F</string>
+ <string>8B79295121F34765006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>616 217 810 487 0 0 1440 878 </string>
+ <string>457 305 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser
index a51396a..6f6145c 100755
--- a/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser
@@ -51,13 +51,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 529441914;
- PBXWorkspaceStateSaveDate = 529441914;
+ PBXPerProjectTemplateStateSaveDate = 569591684;
+ PBXWorkspaceStateSaveDate = 569591684;
};
perUserProjectItems = {
8B1E10641D87858F0016BF5B /* PBXTextBookmark */ = 8B1E10641D87858F0016BF5B /* PBXTextBookmark */;
8B1E10651D87858F0016BF5B /* PBXTextBookmark */ = 8B1E10651D87858F0016BF5B /* PBXTextBookmark */;
- 8B9D735D1F7F9736007AB60F /* PBXTextBookmark */ = 8B9D735D1F7F9736007AB60F /* PBXTextBookmark */;
+ 8B79296121F347C4006E9731 /* PBXTextBookmark */ = 8B79296121F347C4006E9731 /* PBXTextBookmark */;
8BCA0F671D87688800A4EFAF /* PlistBookmark */ = 8BCA0F671D87688800A4EFAF /* PlistBookmark */;
8BE9F8701F8EA4A0009702A4 /* PBXTextBookmark */ = 8BE9F8701F8EA4A0009702A4 /* PBXTextBookmark */;
};
@@ -85,21 +85,21 @@
vrLen = 354;
vrLoc = 2596;
};
- 8B9D735D1F7F9736007AB60F /* PBXTextBookmark */ = {
+ 8B79296121F347C4006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* ClipOnly.h */;
name = "ClipOnly.h: 125";
rLen = 60;
rLoc = 4934;
rType = 0;
- vrLen = 402;
+ vrLen = 308;
vrLoc = 4693;
};
8BA05A660720730100365D66 /* ClipOnly.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3354}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 3250}}";
sepNavSelRange = "{10288, 28}";
- sepNavVisRange = "{8363, 2011}";
+ sepNavVisRange = "{8312, 2062}";
sepNavWindowFrame = "{{545, 59}, {895, 819}}";
};
};
@@ -115,7 +115,7 @@
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {894, 1911}}";
sepNavSelRange = "{4934, 60}";
- sepNavVisRange = "{4693, 309}";
+ sepNavVisRange = "{4693, 308}";
sepNavWindowFrame = "{{15, 54}, {895, 819}}";
};
};
diff --git a/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3
index 567a3d2..1b24ce5 100755
--- a/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3
@@ -325,7 +325,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>586 185 841 654 0 0 1440 878 </string>
+ <string>513 205 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,13 +353,13 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BE9F8701F8EA4A0009702A4</string>
+ <string>8B79296121F347C4006E9731</string>
<key>history</key>
<array>
<string>8BCA0F671D87688800A4EFAF</string>
<string>8B1E10641D87858F0016BF5B</string>
<string>8B1E10651D87858F0016BF5B</string>
- <string>8B9D735D1F7F9736007AB60F</string>
+ <string>8BE9F8701F8EA4A0009702A4</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +373,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 216}}</string>
+ <string>{{0, 0}, {531, 202}}</string>
<key>RubberWindowFrame</key>
- <string>586 185 841 654 0 0 1440 878 </string>
+ <string>513 205 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>216pt</string>
+ <string>202pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>392pt</string>
+ <string>406pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +398,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 365}}</string>
+ <string>{{10, 27}, {531, 379}}</string>
<key>RubberWindowFrame</key>
- <string>586 185 841 654 0 0 1440 878 </string>
+ <string>513 205 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -482,11 +482,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BE9F8711F8EA4A0009702A4</string>
+ <string>8B79296221F347C4006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BE9F8721F8EA4A0009702A4</string>
+ <string>8B79296321F347C4006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BE9F8731F8EA4A0009702A4</string>
+ <string>8B79296421F347C4006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +659,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>529441952.39161801</real>
+ <real>569591748.91110599</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -676,11 +676,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BE9F8741F8EA4A0009702A4</string>
+ <string>8B79296521F347C4006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/ClipOnly/ClipOnly.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>586 185 841 654 0 0 1440 878 </string>
+ <string>513 205 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Console4Buss/Console4Buss.cpp b/plugins/MacAU/Console4Buss/Console4Buss.cpp
index d263fe8..a37a7c5 100755
--- a/plugins/MacAU/Console4Buss/Console4Buss.cpp
+++ b/plugins/MacAU/Console4Buss/Console4Buss.cpp
@@ -162,10 +162,7 @@ void Console4Buss::Console4BussKernel::Reset()
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- demotimer = 0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -187,9 +184,6 @@ void Console4Buss::Console4BussKernel::Process( const Float32 *inSourceP,
overallscale /= 44100.0;
// 1 for CD rate, more if it's a high sample rate
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
long double inputSample;
long double half;
long double falf;
@@ -264,19 +258,11 @@ void Console4Buss::Console4BussKernel::Process( const Float32 *inSourceP,
//this is the inverse processing for Console: boosts but not so much if there's slew.
//is this too subtle an effect?
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Console4Buss/Console4Buss.h b/plugins/MacAU/Console4Buss/Console4Buss.h
index 87b1a17..dc7e15f 100755
--- a/plugins/MacAU/Console4Buss/Console4Buss.h
+++ b/plugins/MacAU/Console4Buss/Console4Buss.h
@@ -131,10 +131,7 @@ public:
Float64 gainchase;
Float64 settingchase;
Float64 chasespeed;
- int demotimer;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser
index 8a1c58c..0ed4251 100755
--- a/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser
@@ -49,48 +49,54 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 533150868;
- PBXWorkspaceStateSaveDate = 533150868;
+ PBXPerProjectTemplateStateSaveDate = 569592284;
+ PBXWorkspaceStateSaveDate = 569592284;
};
perUserProjectItems = {
- 8B484E281FC73D0300977397 /* PBXTextBookmark */ = 8B484E281FC73D0300977397 /* PBXTextBookmark */;
- 8B484E291FC73D0300977397 /* PBXBookmark */ = 8B484E291FC73D0300977397 /* PBXBookmark */;
- 8B484E2A1FC73D0300977397 /* PBXTextBookmark */ = 8B484E2A1FC73D0300977397 /* PBXTextBookmark */;
+ 8B79297721F34A6E006E9731 /* PBXTextBookmark */ = 8B79297721F34A6E006E9731 /* PBXTextBookmark */;
+ 8B79297821F34A6E006E9731 /* PBXTextBookmark */ = 8B79297821F34A6E006E9731 /* PBXTextBookmark */;
+ 8B79297D21F34A7F006E9731 /* PBXTextBookmark */ = 8B79297D21F34A7F006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B484E281FC73D0300977397 /* PBXTextBookmark */ = {
+ 8B79297721F34A6E006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Console4Buss.h */;
- name = "Console4Buss.h: 138";
+ fRef = 8BA05A660720730100365D66 /* Console4Buss.cpp */;
+ name = "Console4Buss.cpp: 213";
rLen = 0;
- rLoc = 5276;
+ rLoc = 9086;
rType = 0;
- vrLen = 85;
- vrLoc = 48;
+ vrLen = 173;
+ vrLoc = 10045;
};
- 8B484E291FC73D0300977397 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 8BA05A660720730100365D66 /* Console4Buss.cpp */;
+ 8B79297821F34A6E006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* Console4Buss.h */;
+ name = "Console4Buss.h: 135";
+ rLen = 0;
+ rLoc = 5226;
+ rType = 0;
+ vrLen = 66;
+ vrLoc = 67;
};
- 8B484E2A1FC73D0300977397 /* PBXTextBookmark */ = {
+ 8B79297D21F34A7F006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Console4Buss.cpp */;
- name = "Console4Buss.cpp: 213";
+ fRef = 8BC6025B073B072D006C4272 /* Console4Buss.h */;
+ name = "Console4Buss.h: 135";
rLen = 0;
- rLoc = 9245;
+ rLoc = 5226;
rType = 0;
- vrLen = 232;
- vrLoc = 10045;
+ vrLen = 66;
+ vrLoc = 67;
};
8BA05A660720730100365D66 /* Console4Buss.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 3913}}";
- sepNavSelRange = "{9245, 0}";
- sepNavVisRange = "{10045, 232}";
- sepNavWindowFrame = "{{545, 39}, {895, 831}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 3783}}";
+ sepNavSelRange = "{11405, 0}";
+ sepNavVisRange = "{9653, 1840}";
+ sepNavWindowFrame = "{{183, 47}, {895, 831}}";
};
};
8BA05A690720730100365D66 /* Console4BussVersion.h */ = {
@@ -103,10 +109,10 @@
};
8BC6025B073B072D006C4272 /* Console4Buss.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1872}}";
- sepNavSelRange = "{5135, 67}";
- sepNavVisRange = "{3839, 1546}";
- sepNavWindowFrame = "{{621, 47}, {895, 831}}";
+ sepNavIntBoundsRect = "{{0, 0}, {803, 1885}}";
+ sepNavSelRange = "{5226, 0}";
+ sepNavVisRange = "{67, 66}";
+ sepNavWindowFrame = "{{545, 47}, {895, 831}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3
index 3a90e01..d66b6f6 100755
--- a/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>631 363 810 487 0 0 1440 878 </string>
+ <string>470 336 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -340,7 +338,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B049F931D109A8900F78DCA</string>
<key>PBXProjectModuleLabel</key>
- <string>Console4Buss.cpp</string>
+ <string>Console4Buss.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -348,15 +346,15 @@
<key>PBXProjectModuleGUID</key>
<string>8B049F941D109A8900F78DCA</string>
<key>PBXProjectModuleLabel</key>
- <string>Console4Buss.cpp</string>
+ <string>Console4Buss.h</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B484E2A1FC73D0300977397</string>
+ <string>8B79297D21F34A7F006E9731</string>
<key>history</key>
<array>
- <string>8B484E281FC73D0300977397</string>
- <string>8B484E291FC73D0300977397</string>
+ <string>8B79297721F34A6E006E9731</string>
+ <string>8B79297821F34A6E006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {603, 51}}</string>
<key>RubberWindowFrame</key>
- <string>631 363 810 487 0 0 1440 878 </string>
+ <string>470 336 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>390pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
- <key>RubberWindowFrame</key>
- <string>631 363 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 363}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 363}}</string>
+ <key>RubberWindowFrame</key>
+ <string>470 336 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B484E2B1FC73D0300977397</string>
+ <string>8B79296E21F349E0006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B484E2C1FC73D0300977397</string>
+ <string>8B79296F21F349E0006E9731</string>
<string>8B049F931D109A8900F78DCA</string>
- <string>8B484E2D1FC73D0300977397</string>
+ <string>8B79297021F349E0006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>533150979.70890802</real>
+ <real>569592447.53790605</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -656,7 +654,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Console4Buss/Console4Buss.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>631 363 810 487 0 0 1440 878 </string>
+ <string>470 336 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Console4Channel/Console4Channel.cpp b/plugins/MacAU/Console4Channel/Console4Channel.cpp
index a357629..865b3b0 100755
--- a/plugins/MacAU/Console4Channel/Console4Channel.cpp
+++ b/plugins/MacAU/Console4Channel/Console4Channel.cpp
@@ -161,10 +161,7 @@ void Console4Channel::Console4ChannelKernel::Reset()
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- demotimer = 0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -182,9 +179,6 @@ void Console4Channel::Console4ChannelKernel::Process( const Float32 *inSourceP
long double inputSample;
long double half;
long double falf;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
Float64 inputgain = GetParameter( kParam_One );
if (settingchase != inputgain) {
chasespeed *= 2.0;
@@ -243,19 +237,11 @@ void Console4Channel::Console4ChannelKernel::Process( const Float32 *inSourceP
//this is part of the Purest line: stuff that is on every track
//needs to be DAMN LOW ON MATH srsly guys
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
//force 80 bit into 32 bit output
diff --git a/plugins/MacAU/Console4Channel/Console4Channel.h b/plugins/MacAU/Console4Channel/Console4Channel.h
index 0d447d4..665d892 100755
--- a/plugins/MacAU/Console4Channel/Console4Channel.h
+++ b/plugins/MacAU/Console4Channel/Console4Channel.h
@@ -129,10 +129,7 @@ public:
Float64 gainchase;
Float64 settingchase;
Float64 chasespeed;
- int demotimer;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser
index 038b3b3..3aa3959 100755
--- a/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser
@@ -49,15 +49,15 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 533424844;
- PBXWorkspaceStateSaveDate = 533424844;
+ PBXPerProjectTemplateStateSaveDate = 569592470;
+ PBXWorkspaceStateSaveDate = 569592470;
};
perUserProjectItems = {
8B484F0F1FCB69BE00977397 /* PBXTextBookmark */ = 8B484F0F1FCB69BE00977397 /* PBXTextBookmark */;
8B484F1F1FCB6ADC00977397 /* PBXTextBookmark */ = 8B484F1F1FCB6ADC00977397 /* PBXTextBookmark */;
- 8B484F201FCB6ADC00977397 /* PBXTextBookmark */ = 8B484F201FCB6ADC00977397 /* PBXTextBookmark */;
- 8B6F9B891D4A8A2400B449D5 /* PBXTextBookmark */ = 8B6F9B891D4A8A2400B449D5 /* PBXTextBookmark */;
8B6F9BCA1D4A913400B449D5 /* PBXTextBookmark */ = 8B6F9BCA1D4A913400B449D5 /* PBXTextBookmark */;
+ 8B79298C21F34AE6006E9731 /* PBXTextBookmark */ = 8B79298C21F34AE6006E9731 /* PBXTextBookmark */;
+ 8B79299121F34AF7006E9731 /* PBXTextBookmark */ = 8B79299121F34AF7006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -83,42 +83,42 @@
vrLen = 43;
vrLoc = 32;
};
- 8B484F201FCB6ADC00977397 /* PBXTextBookmark */ = {
+ 8B6F9BCA1D4A913400B449D5 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Console4Channel.h */;
- name = "Console4Channel.h: 1";
+ fRef = 8BA05A680720730100365D66 /* Console4Channel.r */;
+ name = "Console4Channel.r: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 106;
- vrLoc = 30;
+ vrLen = 0;
+ vrLoc = 0;
};
- 8B6F9B891D4A8A2400B449D5 /* PBXTextBookmark */ = {
+ 8B79298C21F34AE6006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Console4Channel.h */;
name = "Console4Channel.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 22;
- vrLoc = 48;
+ vrLen = 40;
+ vrLoc = 30;
};
- 8B6F9BCA1D4A913400B449D5 /* PBXTextBookmark */ = {
+ 8B79299121F34AF7006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A680720730100365D66 /* Console4Channel.r */;
- name = "Console4Channel.r: 1";
+ fRef = 8BC6025B073B072D006C4272 /* Console4Channel.h */;
+ name = "Console4Channel.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 0;
- vrLoc = 0;
+ vrLen = 40;
+ vrLoc = 30;
};
8BA05A660720730100365D66 /* Console4Channel.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3289}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{7711, 2420}";
- sepNavWindowFrame = "{{545, 47}, {895, 831}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 3380}}";
+ sepNavSelRange = "{8218, 0}";
+ sepNavVisRange = "{7422, 2528}";
+ sepNavWindowFrame = "{{384, 47}, {895, 831}}";
};
};
8BA05A680720730100365D66 /* Console4Channel.r */ = {
@@ -138,9 +138,9 @@
};
8BC6025B073B072D006C4272 /* Console4Channel.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 1924}}";
+ sepNavIntBoundsRect = "{{0, 0}, {740, 1885}}";
sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{30, 106}";
+ sepNavVisRange = "{30, 40}";
sepNavWindowFrame = "{{545, 39}, {895, 831}}";
};
};
diff --git a/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3
index 39bab7a..cde33b3 100755
--- a/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>199</real>
</array>
<key>RubberWindowFrame</key>
- <string>629 366 810 487 0 0 1440 878 </string>
+ <string>484 362 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,13 +350,13 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B484F201FCB6ADC00977397</string>
+ <string>8B79299121F34AF7006E9731</string>
<key>history</key>
<array>
<string>8B6F9BCA1D4A913400B449D5</string>
<string>8B484F0F1FCB69BE00977397</string>
<string>8B484F1F1FCB6ADC00977397</string>
- <string>8B6F9B891D4A8A2400B449D5</string>
+ <string>8B79298C21F34AE6006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {589, 96}}</string>
+ <string>{{0, 0}, {589, 80}}</string>
<key>RubberWindowFrame</key>
- <string>629 366 810 487 0 0 1440 878 </string>
+ <string>484 362 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>96pt</string>
+ <string>80pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>345pt</string>
+ <string>361pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {589, 318}}</string>
- <key>RubberWindowFrame</key>
- <string>629 366 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {589, 334}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {589, 334}}</string>
+ <key>RubberWindowFrame</key>
+ <string>484 362 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -481,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B484F211FCB6ADC00977397</string>
+ <string>8B79299221F34AF7006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B484F221FCB6ADC00977397</string>
+ <string>8B79299321F34AF7006E9731</string>
<string>8B049F641D108FA800F78DCA</string>
- <string>8B484F231FCB6ADC00977397</string>
+ <string>8B79299421F34AF7006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -638,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>533424860.76372099</real>
+ <real>569592567.96526098</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -658,7 +656,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Console4Channel/Console4Channel.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>629 366 810 487 0 0 1440 878 </string>
+ <string>484 362 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Console5Buss/Console5Buss.cpp b/plugins/MacAU/Console5Buss/Console5Buss.cpp
index 13008f9..3c1c845 100755
--- a/plugins/MacAU/Console5Buss/Console5Buss.cpp
+++ b/plugins/MacAU/Console5Buss/Console5Buss.cpp
@@ -165,9 +165,7 @@ void Console5Buss::Console5BussKernel::Reset()
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -185,9 +183,6 @@ void Console5Buss::Console5BussKernel::Process( const Float32 *inSourceP,
long double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
Float64 inputgain = GetParameter( kParam_One );
Float64 difference;
@@ -278,19 +273,11 @@ void Console5Buss::Console5BussKernel::Process( const Float32 *inSourceP,
lastFXBuss *= (1.0 - (nearZero * bassTrim));
//this cuts back the DC offset directly, relative to how near zero we are
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Console5Buss/Console5Buss.h b/plugins/MacAU/Console5Buss/Console5Buss.h
index 51cd70c..c7f1638 100755
--- a/plugins/MacAU/Console5Buss/Console5Buss.h
+++ b/plugins/MacAU/Console5Buss/Console5Buss.h
@@ -132,9 +132,7 @@ public:
Float64 settingchase;
Float64 chasespeed;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser
index 77bac7c..d93ee0d 100755
--- a/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser
@@ -49,55 +49,55 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538690007;
- PBXWorkspaceStateSaveDate = 538690007;
+ PBXPerProjectTemplateStateSaveDate = 569593643;
+ PBXWorkspaceStateSaveDate = 569593643;
};
perUserProjectItems = {
- 8B4E5566201BC09200B5DC2A /* PBXTextBookmark */ = 8B4E5566201BC09200B5DC2A /* PBXTextBookmark */;
- 8B4E5591201BC43400B5DC2A /* PBXTextBookmark */ = 8B4E5591201BC43400B5DC2A /* PBXTextBookmark */;
- 8B95A7D820006AC3007183A2 /* PBXTextBookmark */ = 8B95A7D820006AC3007183A2 /* PBXTextBookmark */;
+ 8B7929A221F34F6F006E9731 /* PBXTextBookmark */ = 8B7929A221F34F6F006E9731 /* PBXTextBookmark */;
+ 8B7929A321F34F6F006E9731 /* PBXTextBookmark */ = 8B7929A321F34F6F006E9731 /* PBXTextBookmark */;
+ 8B7929A821F34F7F006E9731 /* PBXTextBookmark */ = 8B7929A821F34F7F006E9731 /* PBXTextBookmark */;
8BBE44D71FE5EAC70022E6F7 /* PlistBookmark */ = 8BBE44D71FE5EAC70022E6F7 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B4E5566201BC09200B5DC2A /* PBXTextBookmark */ = {
+ 8B7929A221F34F6F006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Console5Buss.cpp */;
name = "Console5Buss.cpp: 197";
rLen = 0;
- rLoc = 8561;
+ rLoc = 8409;
rType = 0;
- vrLen = 0;
- vrLoc = 0;
+ vrLen = 272;
+ vrLoc = 3;
};
- 8B4E5591201BC43400B5DC2A /* PBXTextBookmark */ = {
+ 8B7929A321F34F6F006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Console5Buss.cpp */;
- name = "Console5Buss.cpp: 197";
+ fRef = 8BC6025B073B072D006C4272 /* Console5Buss.h */;
+ name = "Console5Buss.h: 128";
rLen = 0;
- rLoc = 8561;
+ rLoc = 5111;
rType = 0;
- vrLen = 0;
- vrLoc = 0;
+ vrLen = 149;
+ vrLoc = 5032;
};
- 8B95A7D820006AC3007183A2 /* PBXTextBookmark */ = {
+ 8B7929A821F34F7F006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Console5Buss.h */;
name = "Console5Buss.h: 128";
rLen = 0;
rLoc = 5111;
rType = 0;
- vrLen = 63;
- vrLoc = 5096;
+ vrLen = 149;
+ vrLoc = 5032;
};
8BA05A660720730100365D66 /* Console5Buss.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {346, 3991}}";
- sepNavSelRange = "{8561, 0}";
- sepNavVisRange = "{0, 0}";
- sepNavWindowFrame = "{{519, 39}, {895, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 4043}}";
+ sepNavSelRange = "{12118, 0}";
+ sepNavVisRange = "{10187, 2019}";
+ sepNavWindowFrame = "{{422, 39}, {895, 839}}";
};
};
8BA05A690720730100365D66 /* Console5BussVersion.h */ = {
@@ -122,9 +122,9 @@
};
8BC6025B073B072D006C4272 /* Console5Buss.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1872}}";
- sepNavSelRange = "{2819, 272}";
- sepNavVisRange = "{1789, 1938}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 2002}}";
+ sepNavSelRange = "{5111, 0}";
+ sepNavVisRange = "{5032, 149}";
sepNavWindowFrame = "{{545, 39}, {895, 839}}";
};
};
diff --git a/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3
index 71675a6..9aef77c 100755
--- a/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>841</integer>
- <integer>841</integer>
+ <integer>705</integer>
+ <integer>705</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -325,7 +323,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>710 433 705 445 0 0 1440 878 </string>
+ <string>539 403 705 445 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -341,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Console5Buss.cpp</string>
+ <string>Console5Buss.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,16 +347,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Console5Buss.cpp</string>
+ <string>Console5Buss.h</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4E5591201BC43400B5DC2A</string>
+ <string>8B7929A821F34F7F006E9731</string>
<key>history</key>
<array>
<string>8BBE44D71FE5EAC70022E6F7</string>
- <string>8B95A7D820006AC3007183A2</string>
- <string>8B4E5566201BC09200B5DC2A</string>
+ <string>8B7929A221F34F6F006E9731</string>
+ <string>8B7929A321F34F6F006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {395, 0}}</string>
+ <string>{{0, 0}, {395, 120}}</string>
<key>RubberWindowFrame</key>
- <string>710 433 705 445 0 0 1440 878 </string>
+ <string>539 403 705 445 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>0pt</string>
+ <string>120pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>399pt</string>
+ <string>279pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {395, 372}}</string>
- <key>RubberWindowFrame</key>
- <string>710 433 705 445 0 0 1440 878 </string>
+ <string>{{10, 27}, {395, 252}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {395, 252}}</string>
+ <key>RubberWindowFrame</key>
+ <string>539 403 705 445 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -481,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E5592201BC43400B5DC2A</string>
+ <string>8B7929A921F34F7F006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E5593201BC43400B5DC2A</string>
+ <string>8B7929AA21F34F7F006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B4E5594201BC43400B5DC2A</string>
+ <string>8B7929AB21F34F7F006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538690612.183846</real>
+ <real>569593727.64458299</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -678,7 +676,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Console5Buss/Console5Buss.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>710 433 705 445 0 0 1440 878 </string>
+ <string>539 403 705 445 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Console5Channel/Console5Channel.cpp b/plugins/MacAU/Console5Channel/Console5Channel.cpp
index 795c960..356f347 100755
--- a/plugins/MacAU/Console5Channel/Console5Channel.cpp
+++ b/plugins/MacAU/Console5Channel/Console5Channel.cpp
@@ -165,9 +165,7 @@ void Console5Channel::Console5ChannelKernel::Reset()
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -185,9 +183,6 @@ void Console5Channel::Console5ChannelKernel::Process( const Float32 *inSourceP
long double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
Float64 inputgain = GetParameter( kParam_One );
Float64 difference;
@@ -279,19 +274,11 @@ void Console5Channel::Console5ChannelKernel::Process( const Float32 *inSourceP
inputSample = sin(inputSample);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Console5Channel/Console5Channel.h b/plugins/MacAU/Console5Channel/Console5Channel.h
index 8c9f293..3b4104e 100755
--- a/plugins/MacAU/Console5Channel/Console5Channel.h
+++ b/plugins/MacAU/Console5Channel/Console5Channel.h
@@ -131,9 +131,7 @@ public:
Float64 settingchase;
Float64 chasespeed;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser
index b2bdf5a..34f20bd 100755
--- a/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 544914744;
- PBXWorkspaceStateSaveDate = 544914744;
+ PBXPerProjectTemplateStateSaveDate = 569594770;
+ PBXWorkspaceStateSaveDate = 569594770;
};
perUserProjectItems = {
8B050BAA206487EB00700365 /* PlistBookmark */ = 8B050BAA206487EB00700365 /* PlistBookmark */;
- 8B8D6A18207ABF300029B7B0 /* PBXTextBookmark */ = 8B8D6A18207ABF300029B7B0 /* PBXTextBookmark */;
- 8B8D6A19207ABF300029B7B0 /* PBXTextBookmark */ = 8B8D6A19207ABF300029B7B0 /* PBXTextBookmark */;
+ 8B7929B921F353D1006E9731 /* PBXTextBookmark */ = 8B7929B921F353D1006E9731 /* PBXTextBookmark */;
+ 8B7929BE21F353E2006E9731 /* PBXTextBookmark */ = 8B7929BE21F353E2006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -73,32 +73,32 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B8D6A18207ABF300029B7B0 /* PBXTextBookmark */ = {
+ 8B7929B921F353D1006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Console5Channel.cpp */;
- name = "Console5Channel.cpp: 234";
+ name = "Console5Channel.cpp: 229";
rLen = 380;
- rLoc = 10265;
+ rLoc = 10113;
rType = 0;
- vrLen = 46;
- vrLoc = 10265;
+ vrLen = 66;
+ vrLoc = 10205;
};
- 8B8D6A19207ABF300029B7B0 /* PBXTextBookmark */ = {
+ 8B7929BE21F353E2006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Console5Channel.cpp */;
- name = "Console5Channel.cpp: 234";
+ name = "Console5Channel.cpp: 229";
rLen = 380;
- rLoc = 10265;
+ rLoc = 10113;
rType = 0;
- vrLen = 46;
- vrLoc = 10265;
+ vrLen = 66;
+ vrLoc = 10205;
};
8BA05A660720730100365D66 /* Console5Channel.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {537, 3978}}";
- sepNavSelRange = "{10265, 380}";
- sepNavVisRange = "{10265, 46}";
- sepNavWindowFrame = "{{484, 39}, {895, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {509, 3874}}";
+ sepNavSelRange = "{10113, 380}";
+ sepNavVisRange = "{10205, 66}";
+ sepNavWindowFrame = "{{459, 39}, {895, 839}}";
};
};
8BA05A690720730100365D66 /* Console5ChannelVersion.h */ = {
@@ -111,9 +111,9 @@
};
8BC6025B073B072D006C4272 /* Console5Channel.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1859}}";
- sepNavSelRange = "{5229, 65}";
- sepNavVisRange = "{3844, 1559}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1833}}";
+ sepNavSelRange = "{5254, 0}";
+ sepNavVisRange = "{3765, 1597}";
sepNavWindowFrame = "{{479, 39}, {895, 839}}";
};
};
diff --git a/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3
index 37dc046..fbe9f3f 100755
--- a/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>841</integer>
- <integer>841</integer>
+ <integer>817</integer>
+ <integer>817</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -325,7 +323,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>596 381 817 431 0 0 1440 878 </string>
+ <string>533 389 817 431 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B8D6A19207ABF300029B7B0</string>
+ <string>8B7929BE21F353E2006E9731</string>
<key>history</key>
<array>
<string>8B050BAA206487EB00700365</string>
- <string>8B8D6A18207ABF300029B7B0</string>
+ <string>8B7929B921F353D1006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {507, 53}}</string>
+ <string>{{0, 0}, {507, 35}}</string>
<key>RubberWindowFrame</key>
- <string>596 381 817 431 0 0 1440 878 </string>
+ <string>533 389 817 431 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>53pt</string>
+ <string>35pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>332pt</string>
+ <string>350pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {507, 305}}</string>
- <key>RubberWindowFrame</key>
- <string>596 381 817 431 0 0 1440 878 </string>
+ <string>{{10, 27}, {507, 323}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {507, 323}}</string>
+ <key>RubberWindowFrame</key>
+ <string>533 389 817 431 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B8D6A1A207ABF300029B7B0</string>
+ <string>8B7929BF21F353E2006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B8D6A1B207ABF300029B7B0</string>
+ <string>8B7929C021F353E2006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B8D6A1C207ABF300029B7B0</string>
+ <string>8B7929C121F353E2006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +655,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>544915248.23002303</real>
+ <real>569594850.24200404</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -677,7 +675,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Console5Channel/Console5Channel.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>596 381 817 431 0 0 1440 878 </string>
+ <string>533 389 817 431 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Console5DarkCh/Console5DarkCh.cpp b/plugins/MacAU/Console5DarkCh/Console5DarkCh.cpp
index 2ad03c3..4b1cefd 100755
--- a/plugins/MacAU/Console5DarkCh/Console5DarkCh.cpp
+++ b/plugins/MacAU/Console5DarkCh/Console5DarkCh.cpp
@@ -165,9 +165,7 @@ void Console5DarkCh::Console5DarkChKernel::Reset()
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -184,11 +182,7 @@ void Console5DarkCh::Console5DarkChKernel::Process( const Float32 *inSourceP,
Float32 *destP = inDestP;
long double overallscale = 1.0;
overallscale /= 44100.0;
- overallscale *= GetSampleRate();
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ overallscale *= GetSampleRate();
Float64 inputgain = GetParameter( kParam_One );
Float64 difference;
Float64 nearZero;
@@ -279,19 +273,11 @@ void Console5DarkCh::Console5DarkChKernel::Process( const Float32 *inSourceP,
inputSample = sin(inputSample);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Console5DarkCh/Console5DarkCh.h b/plugins/MacAU/Console5DarkCh/Console5DarkCh.h
index 8bb2126..157ad9b 100755
--- a/plugins/MacAU/Console5DarkCh/Console5DarkCh.h
+++ b/plugins/MacAU/Console5DarkCh/Console5DarkCh.h
@@ -131,9 +131,7 @@ public:
Float64 settingchase;
Float64 chasespeed;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser
index 4adcf1e..0562b0f 100755
--- a/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser
@@ -49,18 +49,18 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 537050873;
- PBXWorkspaceStateSaveDate = 537050873;
+ PBXPerProjectTemplateStateSaveDate = 569594878;
+ PBXWorkspaceStateSaveDate = 569594878;
};
perUserProjectItems = {
- 8B4D27592002BF690051360A /* PlistBookmark */ = 8B4D27592002BF690051360A /* PlistBookmark */;
- 8B95A7E020006AC9007183A2 /* PlistBookmark */ = 8B95A7E020006AC9007183A2 /* PlistBookmark */;
+ 8B7929CF21F3543F006E9731 /* PlistBookmark */ = 8B7929CF21F3543F006E9731 /* PlistBookmark */;
+ 8B7929D421F35450006E9731 /* PlistBookmark */ = 8B7929D421F35450006E9731 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B4D27592002BF690051360A /* PlistBookmark */ = {
+ 8B7929CF21F3543F006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -72,7 +72,7 @@
rLen = 0;
rLoc = 9223372036854775807;
};
- 8B95A7E020006AC9007183A2 /* PlistBookmark */ = {
+ 8B7929D421F35450006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -80,15 +80,15 @@
kPath = (
CFBundleName,
);
- name = /Users/christopherjohnson/Desktop/Console5DarkCh/Info.plist;
+ name = /Users/christopherjohnson/Desktop/MacAU/Console5DarkCh/Info.plist;
rLen = 26;
rLoc = 0;
};
8BA05A660720730100365D66 /* Console5DarkCh.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 4160}}";
- sepNavSelRange = "{10956, 0}";
- sepNavVisRange = "{10771, 1848}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 3991}}";
+ sepNavSelRange = "{12259, 0}";
+ sepNavVisRange = "{10314, 2033}";
sepNavWindowFrame = "{{29, 39}, {895, 839}}";
};
};
@@ -102,10 +102,10 @@
};
8BC6025B073B072D006C4272 /* Console5DarkCh.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1846}}";
- sepNavSelRange = "{5389, 0}";
- sepNavVisRange = "{3832, 1557}";
- sepNavWindowFrame = "{{579, 39}, {895, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1833}}";
+ sepNavSelRange = "{5240, 0}";
+ sepNavVisRange = "{3753, 1595}";
+ sepNavWindowFrame = "{{329, 39}, {895, 839}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3
index 91ebb9c..8b9ecd1 100755
--- a/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>20 224 841 654 0 0 1440 878 </string>
+ <string>55 218 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -354,10 +352,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4D27592002BF690051360A</string>
+ <string>8B7929D421F35450006E9731</string>
<key>history</key>
<array>
- <string>8B95A7E020006AC9007183A2</string>
+ <string>8B7929CF21F3543F006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 229}}</string>
+ <string>{{0, 0}, {531, 216}}</string>
<key>RubberWindowFrame</key>
- <string>20 224 841 654 0 0 1440 878 </string>
+ <string>55 218 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>229pt</string>
+ <string>216pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>379pt</string>
+ <string>392pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 352}}</string>
- <key>RubberWindowFrame</key>
- <string>20 224 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 365}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {531, 365}}</string>
+ <key>RubberWindowFrame</key>
+ <string>55 218 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4D275A2002BF690051360A</string>
+ <string>8B7929D521F35450006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4D275B2002BF690051360A</string>
+ <string>8B7929D621F35450006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B4D275C2002BF690051360A</string>
+ <string>8B7929D721F35450006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +655,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>537050985.45516396</real>
+ <real>569594960.15694499</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,11 +672,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B4D275D2002BF690051360A</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>20 224 841 654 0 0 1440 878 </string>
+ <string>55 218 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.cpp b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.cpp
index 847c101..be4cd10 100755
--- a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.cpp
+++ b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.cpp
@@ -177,9 +177,7 @@ void CrunchyGrooveWear::CrunchyGrooveWearKernel::Reset()
bMidPrev = 0.0;
cMidPrev = 0.0;
dMidPrev = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -193,11 +191,7 @@ void CrunchyGrooveWear::CrunchyGrooveWearKernel::Process( const Float32 *inSou
{
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
- Float32 *destP = inDestP;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ Float32 *destP = inDestP;
Float64 overallscale = (pow(GetParameter( kParam_One ),2)*19.0)+1.0;
Float64 gain = overallscale;
//mid groove wear
@@ -450,19 +444,11 @@ void CrunchyGrooveWear::CrunchyGrooveWearKernel::Process( const Float32 *inSou
inputSample = (inputSample * dWet) + (drySample * dDry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.h b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.h
index a1d9fc8..07db5c7 100755
--- a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.h
+++ b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.h
@@ -138,9 +138,7 @@ public:
Float64 cMidPrev;
Float64 dMidPrev;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser
index 3479d30..af3720e 100755
--- a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541894646;
- PBXWorkspaceStateSaveDate = 541894646;
+ PBXPerProjectTemplateStateSaveDate = 569595525;
+ PBXWorkspaceStateSaveDate = 569595525;
};
perUserProjectItems = {
8B181BD6204CA7CC00516BEE /* PlistBookmark */ = 8B181BD6204CA7CC00516BEE /* PlistBookmark */;
- 8B181BD8204CA7CC00516BEE /* PBXTextBookmark */ = 8B181BD8204CA7CC00516BEE /* PBXTextBookmark */;
- 8B1A6DF8204CA7FC009DEEA1 /* PBXTextBookmark */ = 8B1A6DF8204CA7FC009DEEA1 /* PBXTextBookmark */;
+ 8B7929E621F356D5006E9731 /* PBXTextBookmark */ = 8B7929E621F356D5006E9731 /* PBXTextBookmark */;
+ 8B7929EB21F356E6006E9731 /* PBXTextBookmark */ = 8B7929EB21F356E6006E9731 /* PBXTextBookmark */;
+ 8B9D5E35207AB7DF00C332E2 /* PBXTextBookmark */ = 8B9D5E35207AB7DF00C332E2 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -73,32 +74,42 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B181BD8204CA7CC00516BEE /* PBXTextBookmark */ = {
+ 8B7929E621F356D5006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* CrunchyGrooveWear.h */;
- name = "CrunchyGrooveWear.h: 56";
- rLen = 0;
- rLoc = 2856;
+ fRef = 8BA05A660720730100365D66 /* CrunchyGrooveWear.cpp */;
+ name = "CrunchyGrooveWear.cpp: 349";
+ rLen = 875;
+ rLoc = 16513;
rType = 0;
- vrLen = 229;
- vrLoc = 2728;
+ vrLen = 316;
+ vrLoc = 19570;
};
- 8B1A6DF8204CA7FC009DEEA1 /* PBXTextBookmark */ = {
+ 8B7929EB21F356E6006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* CrunchyGrooveWear.cpp */;
+ name = "CrunchyGrooveWear.cpp: 349";
+ rLen = 875;
+ rLoc = 16513;
+ rType = 0;
+ vrLen = 316;
+ vrLoc = 19570;
+ };
+ 8B9D5E35207AB7DF00C332E2 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* CrunchyGrooveWear.h */;
name = "CrunchyGrooveWear.h: 56";
rLen = 0;
rLoc = 2856;
rType = 0;
- vrLen = 228;
- vrLoc = 2729;
+ vrLen = 178;
+ vrLoc = 2730;
};
8BA05A660720730100365D66 /* CrunchyGrooveWear.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {769, 6084}}";
- sepNavSelRange = "{12165, 581}";
- sepNavVisRange = "{11798, 2704}";
- sepNavWindowFrame = "{{528, 46}, {816, 832}}";
+ sepNavIntBoundsRect = "{{0, 0}, {677, 6058}}";
+ sepNavSelRange = "{16513, 875}";
+ sepNavVisRange = "{19570, 316}";
+ sepNavWindowFrame = "{{500, 44}, {816, 832}}";
};
};
8BA05A670720730100365D66 /* CrunchyGrooveWear.exp */ = {
@@ -119,10 +130,10 @@
};
8BC6025B073B072D006C4272 /* CrunchyGrooveWear.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 1963}}";
- sepNavSelRange = "{2856, 0}";
- sepNavVisRange = "{2729, 228}";
- sepNavWindowFrame = "{{15, 41}, {816, 832}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1898}}";
+ sepNavSelRange = "{5501, 0}";
+ sepNavVisRange = "{4045, 1558}";
+ sepNavWindowFrame = "{{451, 39}, {816, 832}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3
index 5152037..e829e94 100755
--- a/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>476 182 841 654 0 0 1440 878 </string>
+ <string>398 187 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -342,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>CrunchyGrooveWear.h</string>
+ <string>CrunchyGrooveWear.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -350,15 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>CrunchyGrooveWear.h</string>
+ <string>CrunchyGrooveWear.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B1A6DF8204CA7FC009DEEA1</string>
+ <string>8B7929EB21F356E6006E9731</string>
<key>history</key>
<array>
<string>8B181BD6204CA7CC00516BEE</string>
- <string>8B181BD8204CA7CC00516BEE</string>
+ <string>8B9D5E35207AB7DF00C332E2</string>
+ <string>8B7929E621F356D5006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 158}}</string>
+ <string>{{0, 0}, {531, 109}}</string>
<key>RubberWindowFrame</key>
- <string>476 182 841 654 0 0 1440 878 </string>
+ <string>398 187 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>158pt</string>
+ <string>109pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>450pt</string>
+ <string>499pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 423}}</string>
- <key>RubberWindowFrame</key>
- <string>476 182 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 472}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 365}}</string>
+ <string>{{10, 27}, {531, 472}}</string>
+ <key>RubberWindowFrame</key>
+ <string>398 187 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -481,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B1A6DF5204CA7FC009DEEA1</string>
+ <string>8B7929EC21F356E6006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B1A6DF6204CA7FC009DEEA1</string>
+ <string>8B7929ED21F356E6006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B1A6DF7204CA7FC009DEEA1</string>
+ <string>8B7929EE21F356E6006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541894652.77613103</real>
+ <real>569595622.14955699</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -678,7 +677,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>476 182 841 654 0 0 1440 878 </string>
+ <string>398 187 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Crystal/Crystal.cpp b/plugins/MacAU/Crystal/Crystal.cpp
index f57a72e..9ca3fba 100755
--- a/plugins/MacAU/Crystal/Crystal.cpp
+++ b/plugins/MacAU/Crystal/Crystal.cpp
@@ -302,23 +302,15 @@ void Crystal::CrystalKernel::Process( const Float32 *inSourceP,
//when current and old samples are different from each other, otherwise you can't tell it's there.
//This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently.
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser
index 7ed81d1..9bee97b 100755
--- a/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser
@@ -49,34 +49,18 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 566521916;
- PBXWorkspaceStateSaveDate = 566521916;
+ PBXPerProjectTemplateStateSaveDate = 569595657;
+ PBXWorkspaceStateSaveDate = 569595657;
};
perUserProjectItems = {
- 8BBB31EA21BDBFE700825986 /* PlistBookmark */ = 8BBB31EA21BDBFE700825986 /* PlistBookmark */;
- 8BBB350621C472FB00825986 /* PlistBookmark */ = 8BBB350621C472FB00825986 /* PlistBookmark */;
+ 8B7929FC21F35738006E9731 /* PlistBookmark */ = 8B7929FC21F35738006E9731 /* PlistBookmark */;
+ 8B792A0121F35748006E9731 /* PlistBookmark */ = 8B792A0121F35748006E9731 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8BA05A660720730100365D66 /* Crystal.cpp */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1082, 4225}}";
- sepNavSelRange = "{15530, 0}";
- sepNavVisRange = "{9843, 3243}";
- sepNavWindowFrame = "{{457, 44}, {1129, 834}}";
- };
- };
- 8BA05A690720730100365D66 /* CrystalVersion.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1082, 767}}";
- sepNavSelRange = "{2880, 0}";
- sepNavVisRange = "{32, 2911}";
- sepNavWindowFrame = "{{15, 39}, {1129, 834}}";
- };
- };
- 8BBB31EA21BDBFE700825986 /* PlistBookmark */ = {
+ 8B7929FC21F35738006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -84,11 +68,11 @@
kPath = (
CFBundleName,
);
- name = /Users/christopherjohnson/Desktop/Crystal/Info.plist;
+ name = /Users/christopherjohnson/Desktop/MacAU/Crystal/Info.plist;
rLen = 0;
- rLoc = 9223372036854775808;
+ rLoc = 9223372036854775807;
};
- 8BBB350621C472FB00825986 /* PlistBookmark */ = {
+ 8B792A0121F35748006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -97,15 +81,31 @@
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/MacAU/Crystal/Info.plist;
- rLen = 0;
- rLoc = 9223372036854775807;
+ rLen = 26;
+ rLoc = 0;
+ };
+ 8BA05A660720730100365D66 /* Crystal.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1082, 3952}}";
+ sepNavSelRange = "{15755, 0}";
+ sepNavVisRange = "{12294, 3464}";
+ sepNavWindowFrame = "{{208, 44}, {1129, 834}}";
+ };
+ };
+ 8BA05A690720730100365D66 /* CrystalVersion.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1082, 767}}";
+ sepNavSelRange = "{2880, 0}";
+ sepNavVisRange = "{32, 2911}";
+ sepNavWindowFrame = "{{15, 39}, {1129, 834}}";
+ };
};
8BC6025B073B072D006C4272 /* Crystal.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1082, 1911}}";
sepNavSelRange = "{5476, 0}";
- sepNavVisRange = "{2711, 1740}";
- sepNavWindowFrame = "{{731, 44}, {1129, 834}}";
+ sepNavVisRange = "{3946, 1714}";
+ sepNavWindowFrame = "{{224, 44}, {1129, 834}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3
index 0364ddc..1b41ecc 100755
--- a/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>708 184 841 654 0 0 1440 878 </string>
+ <string>463 195 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -354,10 +352,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBB350621C472FB00825986</string>
+ <string>8B792A0121F35748006E9731</string>
<key>history</key>
<array>
- <string>8BBB31EA21BDBFE700825986</string>
+ <string>8B7929FC21F35738006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 229}}</string>
+ <string>{{0, 0}, {531, 216}}</string>
<key>RubberWindowFrame</key>
- <string>708 184 841 654 0 0 1440 878 </string>
+ <string>463 195 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>229pt</string>
+ <string>216pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>379pt</string>
+ <string>392pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 352}}</string>
- <key>RubberWindowFrame</key>
- <string>708 184 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 365}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {531, 365}}</string>
+ <key>RubberWindowFrame</key>
+ <string>463 195 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBB350721C472FC00825986</string>
+ <string>8B792A0221F35748006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBB350821C472FC00825986</string>
+ <string>8B792A0321F35748006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BBB350921C472FC00825986</string>
+ <string>8B792A0421F35748006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +655,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>566522619.99816501</real>
+ <real>569595720.77537096</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,11 +672,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBB350A21C472FC00825986</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Crystal/Crystal.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>708 184 841 654 0 0 1440 878 </string>
+ <string>463 195 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser
index dcc937e..080021a 100755
--- a/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528455539;
- PBXWorkspaceStateSaveDate = 528455539;
+ PBXPerProjectTemplateStateSaveDate = 569597377;
+ PBXWorkspaceStateSaveDate = 569597377;
};
perUserProjectItems = {
- 8B9D64111F7C844B007AB60F /* PBXTextBookmark */ = 8B9D64111F7C844B007AB60F /* PBXTextBookmark */;
+ 8B792A3021F35DE0006E9731 /* PBXTextBookmark */ = 8B792A3021F35DE0006E9731 /* PBXTextBookmark */;
8B9D738A1F7F978A007AB60F /* PBXTextBookmark */ = 8B9D738A1F7F978A007AB60F /* PBXTextBookmark */;
8BD4F5F01E6E13CD00288155 /* PlistBookmark */ = 8BD4F5F01E6E13CD00288155 /* PlistBookmark */;
8BD4F6011E6E155D00288155 /* PBXTextBookmark */ = 8BD4F6011E6E155D00288155 /* PBXTextBookmark */;
@@ -63,14 +63,14 @@
userBuildSettings = {
};
};
- 8B9D64111F7C844B007AB60F /* PBXTextBookmark */ = {
+ 8B792A3021F35DE0006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* DCVoltage.cpp */;
name = "DCVoltage.cpp: 178";
rLen = 0;
rLoc = 7961;
rType = 0;
- vrLen = 509;
+ vrLen = 506;
vrLoc = 7573;
};
8B9D738A1F7F978A007AB60F /* PBXTextBookmark */ = {
@@ -85,9 +85,9 @@
};
8BA05A660720730100365D66 /* DCVoltage.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {656, 2535}}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 2548}}";
sepNavSelRange = "{7961, 0}";
- sepNavVisRange = "{7573, 508}";
+ sepNavVisRange = "{7573, 506}";
sepNavWindowFrame = "{{194, 39}, {1024, 839}}";
};
};
@@ -101,9 +101,9 @@
};
8BC6025B073B072D006C4272 /* DCVoltage.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1807}}";
+ sepNavIntBoundsRect = "{{0, 0}, {977, 1742}}";
sepNavSelRange = "{5068, 0}";
- sepNavVisRange = "{2673, 325}";
+ sepNavVisRange = "{3419, 1758}";
sepNavWindowFrame = "{{15, 39}, {1024, 839}}";
};
};
diff --git a/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3
index 7d3cd83..49602fc 100755
--- a/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3
@@ -325,7 +325,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>592 163 841 654 0 0 1440 878 </string>
+ <string>481 181 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,13 +353,13 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D738A1F7F978A007AB60F</string>
+ <string>8B792A3021F35DE0006E9731</string>
<key>history</key>
<array>
<string>8BD4F5F01E6E13CD00288155</string>
<string>8BD4F6011E6E155D00288155</string>
<string>8BD4F6021E6E155D00288155</string>
- <string>8B9D64111F7C844B007AB60F</string>
+ <string>8B9D738A1F7F978A007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +373,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 216}}</string>
+ <string>{{0, 0}, {531, 202}}</string>
<key>RubberWindowFrame</key>
- <string>592 163 841 654 0 0 1440 878 </string>
+ <string>481 181 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>216pt</string>
+ <string>202pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>392pt</string>
+ <string>406pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +398,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 365}}</string>
+ <string>{{10, 27}, {531, 379}}</string>
<key>RubberWindowFrame</key>
- <string>592 163 841 654 0 0 1440 878 </string>
+ <string>481 181 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -482,11 +482,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D738B1F7F978A007AB60F</string>
+ <string>8B792A3121F35DE0006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D738C1F7F978A007AB60F</string>
+ <string>8B792A3221F35DE0006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D738D1F7F978A007AB60F</string>
+ <string>8B792A3321F35DE0006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +659,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528455562.74837202</real>
+ <real>569597408.43308794</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -676,11 +676,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D738E1F7F978A007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/DCVoltage/DCVoltage.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>592 163 841 654 0 0 1440 878 </string>
+ <string>481 181 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/DeEss/DeEss.cpp b/plugins/MacAU/DeEss/DeEss.cpp
index 1858308..bf85e76 100755
--- a/plugins/MacAU/DeEss/DeEss.cpp
+++ b/plugins/MacAU/DeEss/DeEss.cpp
@@ -276,23 +276,15 @@ void DeEss::DeEssKernel::Process( const Float32 *inSourceP,
flip = !flip;
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser
index e135353..fe46618 100755
--- a/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser
@@ -51,18 +51,18 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561683701;
- PBXWorkspaceStateSaveDate = 561683701;
+ PBXPerProjectTemplateStateSaveDate = 569597430;
+ PBXWorkspaceStateSaveDate = 569597430;
};
perUserProjectItems = {
- 8B15DCF1217AA138007AD769 /* PlistBookmark */ = 8B15DCF1217AA138007AD769 /* PlistBookmark */;
- 8B42FC5121604F050092969A /* PlistBookmark */ = 8B42FC5121604F050092969A /* PlistBookmark */;
+ 8B792A4121F35E2C006E9731 /* PlistBookmark */ = 8B792A4121F35E2C006E9731 /* PlistBookmark */;
+ 8B792A4621F35E3B006E9731 /* PlistBookmark */ = 8B792A4621F35E3B006E9731 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B15DCF1217AA138007AD769 /* PlistBookmark */ = {
+ 8B792A4121F35E2C006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -74,7 +74,7 @@
rLen = 0;
rLoc = 9223372036854775807;
};
- 8B42FC5121604F050092969A /* PlistBookmark */ = {
+ 8B792A4621F35E3B006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -83,15 +83,15 @@
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/MacAU/DeEss/Info.plist;
- rLen = 0;
- rLoc = 9223372036854775808;
+ rLen = 26;
+ rLoc = 0;
};
8BA05A660720730100365D66 /* DeEss.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {843, 4056}}";
- sepNavSelRange = "{10679, 1381}";
- sepNavVisRange = "{10978, 1915}";
- sepNavWindowFrame = "{{550, 67}, {890, 810}}";
+ sepNavIntBoundsRect = "{{0, 0}, {843, 3900}}";
+ sepNavSelRange = "{12395, 0}";
+ sepNavVisRange = "{8626, 2352}";
+ sepNavWindowFrame = "{{356, 68}, {890, 810}}";
};
};
8BA05A670720730100365D66 /* DeEss.exp */ = {
@@ -114,8 +114,8 @@
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {894, 2145}}";
sepNavSelRange = "{5669, 0}";
- sepNavVisRange = "{2589, 1459}";
- sepNavWindowFrame = "{{843, 68}, {890, 810}}";
+ sepNavVisRange = "{4790, 1025}";
+ sepNavWindowFrame = "{{550, 68}, {890, 810}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3
index 83b64e1..3c8c7b4 100755
--- a/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>841</integer>
- <integer>841</integer>
+ <integer>700</integer>
+ <integer>700</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>807 197 700 649 0 0 1440 878 </string>
+ <string>562 202 700 649 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -354,10 +352,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B15DCF1217AA138007AD769</string>
+ <string>8B792A4621F35E3B006E9731</string>
<key>history</key>
<array>
- <string>8B42FC5121604F050092969A</string>
+ <string>8B792A4121F35E2C006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {390, 197}}</string>
+ <string>{{0, 0}, {390, 183}}</string>
<key>RubberWindowFrame</key>
- <string>807 197 700 649 0 0 1440 878 </string>
+ <string>562 202 700 649 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>197pt</string>
+ <string>183pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>406pt</string>
+ <string>420pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {390, 379}}</string>
- <key>RubberWindowFrame</key>
- <string>807 197 700 649 0 0 1440 878 </string>
+ <string>{{10, 27}, {390, 393}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 352}}</string>
+ <string>{{10, 27}, {390, 393}}</string>
+ <key>RubberWindowFrame</key>
+ <string>562 202 700 649 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B15DCC9217A9CFD007AD769</string>
+ <string>8B792A4721F35E3B006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B15DCCA217A9CFD007AD769</string>
+ <string>8B792A4821F35E3B006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B15DCCB217A9CFD007AD769</string>
+ <string>8B792A4921F35E3B006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +655,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561684792.65047503</real>
+ <real>569597499.49246502</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -677,7 +675,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/DeEss/DeEss.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>807 197 700 649 0 0 1440 878 </string>
+ <string>562 202 700 649 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/DeRez/DeRez.cpp b/plugins/MacAU/DeRez/DeRez.cpp
index 4bc3ee4..e2f3829 100755
--- a/plugins/MacAU/DeRez/DeRez.cpp
+++ b/plugins/MacAU/DeRez/DeRez.cpp
@@ -171,9 +171,7 @@ void DeRez::DeRezKernel::Reset()
position = 0.0;
incrementA = 0.0;
incrementB = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -200,10 +198,7 @@ void DeRez::DeRezKernel::Process( const Float32 *inSourceP,
Float64 overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- targetA /= overallscale;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ targetA /= overallscale;
while (nSampleFrames-- > 0) {
long double inputSample = *sourceP;
@@ -265,18 +260,11 @@ void DeRez::DeRezKernel::Process( const Float32 *inSourceP,
inputSample *= (1.0 - incrementB);
}
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- if (fpFlip) {
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
lastSample = drySample;
diff --git a/plugins/MacAU/DeRez/DeRez.h b/plugins/MacAU/DeRez/DeRez.h
index 55cc562..e592bcb 100755
--- a/plugins/MacAU/DeRez/DeRez.h
+++ b/plugins/MacAU/DeRez/DeRez.h
@@ -133,9 +133,7 @@ public:
Float64 position;
Float64 incrementA;
Float64 incrementB;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser
index 78a1751..359639f 100755
--- a/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser
@@ -49,18 +49,38 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553899071;
- PBXWorkspaceStateSaveDate = 553899071;
+ PBXPerProjectTemplateStateSaveDate = 569597675;
+ PBXWorkspaceStateSaveDate = 569597675;
};
perUserProjectItems = {
+ 8B792A7321F35F66006E9731 /* PBXTextBookmark */ = 8B792A7321F35F66006E9731 /* PBXTextBookmark */;
+ 8B792A7821F35F77006E9731 /* PBXTextBookmark */ = 8B792A7821F35F77006E9731 /* PBXTextBookmark */;
8B7E3E4320A68C5B00482CB5 /* PBXTextBookmark */ = 8B7E3E4320A68C5B00482CB5 /* PBXTextBookmark */;
- 8B9754332103D44500A4FFA3 /* PBXTextBookmark */ = 8B9754332103D44500A4FFA3 /* PBXTextBookmark */;
- 8BB8B6DD21039A3300751000 /* PBXTextBookmark */ = 8BB8B6DD21039A3300751000 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B792A7321F35F66006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* DeRez.cpp */;
+ name = "DeRez.cpp: 199";
+ rLen = 0;
+ rLoc = 8817;
+ rType = 0;
+ vrLen = 87;
+ vrLoc = 8817;
+ };
+ 8B792A7821F35F77006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* DeRez.cpp */;
+ name = "DeRez.cpp: 199";
+ rLen = 0;
+ rLoc = 8817;
+ rType = 0;
+ vrLen = 87;
+ vrLoc = 8817;
+ };
8B7E3E4320A68C5B00482CB5 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* DeRezVersion.h */;
@@ -71,22 +91,12 @@
vrLen = 166;
vrLoc = 3288;
};
- 8B9754332103D44500A4FFA3 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* DeRez.cpp */;
- name = "DeRez.cpp: 201";
- rLen = 0;
- rLoc = 8852;
- rType = 0;
- vrLen = 177;
- vrLoc = 8761;
- };
8BA05A660720730100365D66 /* DeRez.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 3861}}";
- sepNavSelRange = "{8852, 0}";
- sepNavVisRange = "{8761, 177}";
- sepNavWindowFrame = "{{433, 59}, {1007, 819}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 3783}}";
+ sepNavSelRange = "{8817, 0}";
+ sepNavVisRange = "{8817, 87}";
+ sepNavWindowFrame = "{{303, 48}, {1007, 819}}";
};
};
8BA05A670720730100365D66 /* DeRez.exp */ = {
@@ -104,21 +114,11 @@
sepNavVisRange = "{3288, 166}";
};
};
- 8BB8B6DD21039A3300751000 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* DeRez.cpp */;
- name = "DeRez.cpp: 201";
- rLen = 0;
- rLoc = 8852;
- rType = 0;
- vrLen = 277;
- vrLoc = 8761;
- };
8BC6025B073B072D006C4272 /* DeRez.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1062, 1677}}";
- sepNavSelRange = "{3000, 0}";
- sepNavVisRange = "{1247, 2041}";
+ sepNavIntBoundsRect = "{{0, 0}, {1062, 1807}}";
+ sepNavSelRange = "{5245, 0}";
+ sepNavVisRange = "{3769, 1578}";
sepNavWindowFrame = "{{433, 48}, {1007, 819}}";
};
};
diff --git a/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3
index 78a77d9..a77fdf8 100755
--- a/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>614 318 810 487 0 0 1440 878 </string>
+ <string>516 329 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,11 +350,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9754332103D44500A4FFA3</string>
+ <string>8B792A7821F35F77006E9731</string>
<key>history</key>
<array>
<string>8B7E3E4320A68C5B00482CB5</string>
- <string>8BB8B6DD21039A3300751000</string>
+ <string>8B792A7321F35F66006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 86}}</string>
+ <string>{{0, 0}, {603, 69}}</string>
<key>RubberWindowFrame</key>
- <string>614 318 810 487 0 0 1440 878 </string>
+ <string>516 329 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>86pt</string>
+ <string>69pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>355pt</string>
+ <string>372pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
- <key>RubberWindowFrame</key>
- <string>614 318 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 345}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 312}}</string>
+ <string>{{10, 27}, {603, 345}}</string>
+ <key>RubberWindowFrame</key>
+ <string>516 329 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9754342103D44500A4FFA3</string>
+ <string>8B792A7921F35F77006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9754352103D44500A4FFA3</string>
+ <string>8B792A7A21F35F77006E9731</string>
<string>8B8D69E4207ABD0F0029B7B0</string>
- <string>8B9754362103D44500A4FFA3</string>
+ <string>8B792A7B21F35F77006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553899077.362046</real>
+ <real>569597815.38705599</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +651,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9754372103D44500A4FFA3</string>
<string>/Users/christopherjohnson/Desktop/MacAU/DeRez/DeRez.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>614 318 810 487 0 0 1440 878 </string>
+ <string>516 329 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Density/Density.cpp b/plugins/MacAU/Density/Density.cpp
index 68c3828..7edf12b 100755
--- a/plugins/MacAU/Density/Density.cpp
+++ b/plugins/MacAU/Density/Density.cpp
@@ -184,8 +184,7 @@ void Density::DensityKernel::Reset()
{
iirSampleA = 0.0;
iirSampleB = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
+ fpNShape = 0.0;
fpFlip = true;
}
@@ -220,9 +219,6 @@ void Density::DensityKernel::Process( const Float32 *inSourceP,
Float64 out = fabs(density);
density = density * fabs(density);
Float64 count;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -291,20 +287,13 @@ void Density::DensityKernel::Process( const Float32 *inSourceP,
if (wet < 1.0) inputSample = (drySample * dry)+(inputSample*wet);
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Density/Density.exp b/plugins/MacAU/Density/Density.exp
index 8d6e23b..85300f6 100755
--- a/plugins/MacAU/Density/Density.exp
+++ b/plugins/MacAU/Density/Density.exp
@@ -1 +1 @@
-_DensityEntry \ No newline at end of file
+_DensityEntry
diff --git a/plugins/MacAU/Density/Density.h b/plugins/MacAU/Density/Density.h
index ac8d445..0d9af29 100755
--- a/plugins/MacAU/Density/Density.h
+++ b/plugins/MacAU/Density/Density.h
@@ -138,8 +138,7 @@ public:
private:
Float64 iirSampleA;
Float64 iirSampleB;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
+ long double fpNShape;
bool fpFlip;
};
};
diff --git a/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.pbxuser
index bbb10da..76445ad 100755
--- a/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.pbxuser
@@ -49,33 +49,51 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553737317;
- PBXWorkspaceStateSaveDate = 553737317;
+ PBXPerProjectTemplateStateSaveDate = 569597523;
+ PBXWorkspaceStateSaveDate = 569597523;
};
perUserProjectItems = {
- 8B241C8921015F29001BBF7E /* PBXTextBookmark */ = 8B241C8921015F29001BBF7E /* PBXTextBookmark */;
- 8BC5CD4B208D59FB0058B257 /* PBXTextBookmark */ = 8BC5CD4B208D59FB0058B257 /* PBXTextBookmark */;
+ 8B792A5721F35EBB006E9731 /* PBXTextBookmark */ = 8B792A5721F35EBB006E9731 /* PBXTextBookmark */;
+ 8B792A5D21F35ED5006E9731 /* PBXTextBookmark */ = 8B792A5D21F35ED5006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B241C8921015F29001BBF7E /* PBXTextBookmark */ = {
+ 8B792A5721F35EBB006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Density.cpp */;
- name = "Density.cpp: 290";
+ name = "Density.cpp: 286";
rLen = 68;
- rLoc = 12813;
+ rLoc = 12685;
rType = 0;
- vrLen = 106;
- vrLoc = 27;
+ vrLen = 91;
+ vrLoc = 42;
+ };
+ 8B792A5D21F35ED5006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Density.cpp */;
+ name = "Density.cpp: 286";
+ rLen = 68;
+ rLoc = 12685;
+ rType = 0;
+ vrLen = 91;
+ vrLoc = 42;
};
8BA05A660720730100365D66 /* Density.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 4108}}";
- sepNavSelRange = "{12813, 68}";
- sepNavVisRange = "{27, 106}";
- sepNavWindowFrame = "{{545, 59}, {895, 819}}";
+ sepNavIntBoundsRect = "{{0, 0}, {803, 4069}}";
+ sepNavSelRange = "{12685, 68}";
+ sepNavVisRange = "{42, 91}";
+ sepNavWindowFrame = "{{414, 59}, {895, 819}}";
+ };
+ };
+ 8BA05A670720730100365D66 /* Density.exp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}";
+ sepNavSelRange = "{14, 0}";
+ sepNavVisRange = "{0, 14}";
+ sepNavWindowFrame = "{{15, 51}, {1300, 822}}";
};
};
8BA05A690720730100365D66 /* DensityVersion.h */ = {
@@ -86,21 +104,11 @@
sepNavWindowFrame = "{{15, 38}, {731, 835}}";
};
};
- 8BC5CD4B208D59FB0058B257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Density.cpp */;
- name = "Density.cpp: 290";
- rLen = 68;
- rLoc = 12813;
- rType = 0;
- vrLen = 109;
- vrLoc = 24;
- };
8BC6025B073B072D006C4272 /* Density.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {856, 1950}}";
- sepNavSelRange = "{5537, 44}";
- sepNavVisRange = "{4519, 1228}";
+ sepNavIntBoundsRect = "{{0, 0}, {856, 2158}}";
+ sepNavSelRange = "{5604, 0}";
+ sepNavVisRange = "{4448, 1275}";
sepNavWindowFrame = "{{537, 146}, {903, 692}}";
};
};
diff --git a/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.perspectivev3
index 8c57043..affa75d 100755
--- a/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Density/Density.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>5</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>619 361 810 487 0 0 1440 878 </string>
+ <string>482 370 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +352,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B241C8921015F29001BBF7E</string>
+ <string>8B792A5D21F35ED5006E9731</string>
<key>history</key>
<array>
- <string>8BC5CD4B208D59FB0058B257</string>
+ <string>8B792A5721F35EBB006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 102}}</string>
+ <string>{{0, 0}, {603, 86}}</string>
<key>RubberWindowFrame</key>
- <string>619 361 810 487 0 0 1440 878 </string>
+ <string>482 370 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>102pt</string>
+ <string>86pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>355pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 312}}</string>
- <key>RubberWindowFrame</key>
- <string>619 361 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 328}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 328}}</string>
+ <key>RubberWindowFrame</key>
+ <string>482 370 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B241C8A21015F29001BBF7E</string>
+ <string>8B792A5E21F35ED5006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B241C8B21015F29001BBF7E</string>
+ <string>8B792A5F21F35ED5006E9731</string>
<string>8BE3FF9D1DAAD40200A5AAF5</string>
- <string>8B241C8C21015F29001BBF7E</string>
+ <string>8B792A6021F35ED5006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553738025.40924096</real>
+ <real>569597652.99950302</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,10 +652,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
+ <string>8B792A6121F35ED5006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Density/Density.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>619 361 810 487 0 0 1440 878 </string>
+ <string>482 370 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Desk/Desk.cpp b/plugins/MacAU/Desk/Desk.cpp
index d9bdb53..69dcf98 100755
--- a/plugins/MacAU/Desk/Desk.cpp
+++ b/plugins/MacAU/Desk/Desk.cpp
@@ -152,9 +152,7 @@ void Desk::DeskKernel::Reset()
lastSample = 0.0;
lastOutSample = 0.0;
lastSlew = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -184,11 +182,7 @@ void Desk::DeskKernel::Process( const Float32 *inSourceP,
Float64 bridgerectifier;
Float64 combSample;
long double inputSample;
- long double drySample;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
-
+ long double drySample;
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -251,19 +245,11 @@ void Desk::DeskKernel::Process( const Float32 *inSourceP,
//drive section
inputSample /= gain;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels;
diff --git a/plugins/MacAU/Desk/Desk.h b/plugins/MacAU/Desk/Desk.h
index de63d97..1193995 100755
--- a/plugins/MacAU/Desk/Desk.h
+++ b/plugins/MacAU/Desk/Desk.h
@@ -120,9 +120,7 @@ public:
long double lastSample;
long double lastOutSample;
Float64 lastSlew;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.pbxuser
index 88a6471..de343e4 100755
--- a/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.pbxuser
@@ -49,42 +49,42 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528455712;
- PBXWorkspaceStateSaveDate = 528455712;
+ PBXPerProjectTemplateStateSaveDate = 569597840;
+ PBXWorkspaceStateSaveDate = 569597840;
};
perUserProjectItems = {
- 8B9D64341F7C8495007AB60F /* PBXTextBookmark */ = 8B9D64341F7C8495007AB60F /* PBXTextBookmark */;
- 8B9D73AA1F7F984A007AB60F /* PBXTextBookmark */ = 8B9D73AA1F7F984A007AB60F /* PBXTextBookmark */;
+ 8B792A8921F35FDB006E9731 /* PBXTextBookmark */ = 8B792A8921F35FDB006E9731 /* PBXTextBookmark */;
+ 8B792A8E21F35FEC006E9731 /* PBXTextBookmark */ = 8B792A8E21F35FEC006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D64341F7C8495007AB60F /* PBXTextBookmark */ = {
+ 8B792A8921F35FDB006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Desk.cpp */;
- name = "Desk.cpp: 252";
+ name = "Desk.cpp: 247";
rLen = 0;
- rLoc = 10568;
+ rLoc = 10424;
rType = 0;
- vrLen = 149;
- vrLoc = 7870;
+ vrLen = 57;
+ vrLoc = 7909;
};
- 8B9D73AA1F7F984A007AB60F /* PBXTextBookmark */ = {
+ 8B792A8E21F35FEC006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Desk.cpp */;
- name = "Desk.cpp: 253";
+ name = "Desk.cpp: 247";
rLen = 0;
- rLoc = 10568;
+ rLoc = 10424;
rType = 0;
- vrLen = 102;
- vrLoc = 7917;
+ vrLen = 57;
+ vrLoc = 7909;
};
8BA05A660720730100365D66 /* Desk.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 3692}}";
- sepNavSelRange = "{10568, 0}";
- sepNavVisRange = "{7917, 102}";
+ sepNavIntBoundsRect = "{{0, 0}, {684, 3536}}";
+ sepNavSelRange = "{10424, 0}";
+ sepNavVisRange = "{7909, 57}";
sepNavWindowFrame = "{{244, 43}, {932, 815}}";
};
};
@@ -106,9 +106,9 @@
};
8BC6025B073B072D006C4272 /* Desk.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {885, 1716}}";
- sepNavSelRange = "{4798, 57}";
- sepNavVisRange = "{3480, 1484}";
+ sepNavIntBoundsRect = "{{0, 0}, {885, 1690}}";
+ sepNavSelRange = "{4821, 0}";
+ sepNavVisRange = "{3419, 1512}";
sepNavWindowFrame = "{{508, 59}, {932, 815}}";
};
};
diff --git a/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3
index d3824ff..f7cdd23 100755
--- a/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>531 308 810 487 0 0 1440 878 </string>
+ <string>516 308 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D73AA1F7F984A007AB60F</string>
+ <string>8B792A8E21F35FEC006E9731</string>
<key>history</key>
<array>
- <string>8B9D64341F7C8495007AB60F</string>
+ <string>8B792A8921F35FDB006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {603, 51}}</string>
<key>RubberWindowFrame</key>
- <string>531 308 810 487 0 0 1440 878 </string>
+ <string>516 308 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>390pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
- <key>RubberWindowFrame</key>
- <string>531 308 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 363}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 363}}</string>
+ <key>RubberWindowFrame</key>
+ <string>516 308 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D73AB1F7F984A007AB60F</string>
+ <string>8B792A8F21F35FEC006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D73AC1F7F984A007AB60F</string>
+ <string>8B792A9021F35FEC006E9731</string>
<string>8B3ED5371DDE6344004F9D64</string>
- <string>8B9D73AD1F7F984A007AB60F</string>
+ <string>8B792A9121F35FEC006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528455754.98853803</real>
+ <real>569597932.88541305</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +650,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D73AE1F7F984A007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Desk/Desk.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>531 308 810 487 0 0 1440 878 </string>
+ <string>516 308 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Desk4/Desk4.cpp b/plugins/MacAU/Desk4/Desk4.cpp
index 58dc36f..1fbdca1 100755
--- a/plugins/MacAU/Desk4/Desk4.cpp
+++ b/plugins/MacAU/Desk4/Desk4.cpp
@@ -204,9 +204,7 @@ void Desk4::Desk4Kernel::Reset()
lastSample = 0.0;
lastOutSample = 0.0;
lastSlew = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -224,9 +222,6 @@ void Desk4::Desk4Kernel::Process( const Float32 *inSourceP,
long double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
Float64 gain = (pow(GetParameter( kParam_One ),2)*10)+0.0001;
Float64 gaintrim = (pow(GetParameter( kParam_One ),2)*2)+1.0;
@@ -354,20 +349,11 @@ void Desk4::Desk4Kernel::Process( const Float32 *inSourceP,
inputSample = (inputSample * wet) + (drySample * dry);
}
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Desk4/Desk4.h b/plugins/MacAU/Desk4/Desk4.h
index a9cc924..8cd0193 100755
--- a/plugins/MacAU/Desk4/Desk4.h
+++ b/plugins/MacAU/Desk4/Desk4.h
@@ -146,9 +146,7 @@ public:
Float64 lastSample;
Float64 lastOutSample;
Float64 lastSlew;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser
index 298344e..6ee8f8f 100755
--- a/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser
@@ -49,18 +49,18 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528455766;
- PBXWorkspaceStateSaveDate = 528455766;
+ PBXPerProjectTemplateStateSaveDate = 569597965;
+ PBXWorkspaceStateSaveDate = 569597965;
};
perUserProjectItems = {
- 8B9D64451F7C84BA007AB60F /* PlistBookmark */ = 8B9D64451F7C84BA007AB60F /* PlistBookmark */;
- 8B9D73B91F7F9867007AB60F /* PlistBookmark */ = 8B9D73B91F7F9867007AB60F /* PlistBookmark */;
+ 8B792A9F21F36063006E9731 /* PlistBookmark */ = 8B792A9F21F36063006E9731 /* PlistBookmark */;
+ 8B792AA421F36073006E9731 /* PlistBookmark */ = 8B792AA421F36073006E9731 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D64451F7C84BA007AB60F /* PlistBookmark */ = {
+ 8B792A9F21F36063006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -70,9 +70,9 @@
);
name = /Users/christopherjohnson/Desktop/MacAU/Desk4/Info.plist;
rLen = 0;
- rLoc = 9223372036854775808;
+ rLoc = 9223372036854775807;
};
- 8B9D73B91F7F9867007AB60F /* PlistBookmark */ = {
+ 8B792AA421F36073006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -81,15 +81,15 @@
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/MacAU/Desk4/Info.plist;
- rLen = 0;
- rLoc = 9223372036854775807;
+ rLen = 26;
+ rLoc = 0;
};
8BA05A660720730100365D66 /* Desk4.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {958, 5005}}";
- sepNavSelRange = "{11418, 0}";
- sepNavVisRange = "{11164, 2245}";
- sepNavWindowFrame = "{{435, 39}, {1005, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {958, 5057}}";
+ sepNavSelRange = "{14871, 0}";
+ sepNavVisRange = "{13633, 1574}";
+ sepNavWindowFrame = "{{330, 39}, {1005, 839}}";
};
};
8BA05A690720730100365D66 /* Desk4Version.h */ = {
@@ -103,9 +103,9 @@
8BC6025B073B072D006C4272 /* Desk4.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {958, 2054}}";
- sepNavSelRange = "{5655, 120}";
- sepNavVisRange = "{1885, 1865}";
- sepNavWindowFrame = "{{725, 39}, {1005, 839}}";
+ sepNavSelRange = "{5798, 0}";
+ sepNavVisRange = "{4297, 1611}";
+ sepNavWindowFrame = "{{435, 39}, {1005, 839}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3
index e8d84b4..b050245 100755
--- a/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -325,7 +323,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 190 841 654 0 0 1440 878 </string>
+ <string>487 206 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D73B91F7F9867007AB60F</string>
+ <string>8B792AA421F36073006E9731</string>
<key>history</key>
<array>
- <string>8B9D64451F7C84BA007AB60F</string>
+ <string>8B792A9F21F36063006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 188}}</string>
+ <string>{{0, 0}, {531, 173}}</string>
<key>RubberWindowFrame</key>
- <string>599 190 841 654 0 0 1440 878 </string>
+ <string>487 206 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>188pt</string>
+ <string>173pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>420pt</string>
+ <string>435pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 393}}</string>
- <key>RubberWindowFrame</key>
- <string>599 190 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 408}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {531, 408}}</string>
+ <key>RubberWindowFrame</key>
+ <string>487 206 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D73BA1F7F9867007AB60F</string>
+ <string>8B792AA521F36073006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D73BB1F7F9867007AB60F</string>
+ <string>8B792AA621F36073006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D73BC1F7F9867007AB60F</string>
+ <string>8B792AA721F36073006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -656,7 +654,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528455783.26185501</real>
+ <real>569598067.29641104</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -673,11 +671,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D73BD1F7F9867007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Desk4/Desk4.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 190 841 654 0 0 1440 878 </string>
+ <string>487 206 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Distance/Distance.cpp b/plugins/MacAU/Distance/Distance.cpp
index 72c9e27..35c0a22 100755
--- a/plugins/MacAU/Distance/Distance.cpp
+++ b/plugins/MacAU/Distance/Distance.cpp
@@ -169,9 +169,7 @@ void Distance::DistanceKernel::Reset()
{
thirdresult = prevresult = lastclamp = clamp = change = last = 0.0;
//just an example
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -204,10 +202,6 @@ void Distance::DistanceKernel::Process( const Float32 *inSourceP,
Float64 wet = GetParameter( kParam_Two );
Float64 dry = 1.0-wet;
Float64 bridgerectifier;
-
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
Float64 inputSample;
Float64 drySample;
@@ -262,19 +256,11 @@ void Distance::DistanceKernel::Process( const Float32 *inSourceP,
if (wet < 1.0) inputSample = (drySample * dry)+(inputSample*wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels;
diff --git a/plugins/MacAU/Distance/Distance.exp b/plugins/MacAU/Distance/Distance.exp
index d74c02c..f4b0e52 100755
--- a/plugins/MacAU/Distance/Distance.exp
+++ b/plugins/MacAU/Distance/Distance.exp
@@ -1 +1 @@
-_DistanceEntry \ No newline at end of file
+_DistanceEntry
diff --git a/plugins/MacAU/Distance/Distance.h b/plugins/MacAU/Distance/Distance.h
index e1c5af3..cade7a5 100755
--- a/plugins/MacAU/Distance/Distance.h
+++ b/plugins/MacAU/Distance/Distance.h
@@ -137,10 +137,7 @@ public:
Float64 thirdresult;
Float64 prevresult;
Float64 last;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
-
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.pbxuser
index bb0c98b..1979f1e 100755
--- a/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.pbxuser
@@ -49,54 +49,62 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 547638606;
- PBXWorkspaceStateSaveDate = 547638606;
+ PBXPerProjectTemplateStateSaveDate = 569598091;
+ PBXWorkspaceStateSaveDate = 569598091;
};
perUserProjectItems = {
+ 8B792AB521F360EC006E9731 /* PBXTextBookmark */ = 8B792AB521F360EC006E9731 /* PBXTextBookmark */;
+ 8B792ABB21F36103006E9731 /* PBXTextBookmark */ = 8B792ABB21F36103006E9731 /* PBXTextBookmark */;
8B904CF820A44C4B008CBAD8 /* PBXTextBookmark */ = 8B904CF820A44C4B008CBAD8 /* PBXTextBookmark */;
- 8B904D1020A44D87008CBAD8 /* PBXTextBookmark */ = 8B904D1020A44D87008CBAD8 /* PBXTextBookmark */;
- 8B904D1120A44D87008CBAD8 /* PBXTextBookmark */ = 8B904D1120A44D87008CBAD8 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B904CF820A44C4B008CBAD8 /* PBXTextBookmark */ = {
+ 8B792AB521F360EC006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Distance.h */;
- name = "Distance.h: 134";
+ fRef = 8BA05A660720730100365D66 /* Distance.cpp */;
+ name = "Distance.cpp: 255";
rLen = 0;
- rLoc = 5367;
+ rLoc = 11375;
rType = 0;
- vrLen = 50;
- vrLoc = 5335;
+ vrLen = 0;
+ vrLoc = 0;
};
- 8B904D1020A44D87008CBAD8 /* PBXTextBookmark */ = {
+ 8B792ABB21F36103006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Distance.cpp */;
- name = "Distance.cpp: 261";
+ name = "Distance.cpp: 255";
rLen = 0;
- rLoc = 11520;
+ rLoc = 11375;
rType = 0;
- vrLen = 97;
- vrLoc = 10123;
+ vrLen = 0;
+ vrLoc = 0;
};
- 8B904D1120A44D87008CBAD8 /* PBXTextBookmark */ = {
+ 8B904CF820A44C4B008CBAD8 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Distance.cpp */;
- name = "Distance.cpp: 261";
+ fRef = 8BC6025B073B072D006C4272 /* Distance.h */;
+ name = "Distance.h: 134";
rLen = 0;
- rLoc = 11520;
+ rLoc = 5367;
rType = 0;
- vrLen = 97;
- vrLoc = 10123;
+ vrLen = 50;
+ vrLoc = 5335;
};
8BA05A660720730100365D66 /* Distance.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 3783}}";
- sepNavSelRange = "{11520, 0}";
- sepNavVisRange = "{10123, 97}";
- sepNavWindowFrame = "{{492, 53}, {948, 825}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 3705}}";
+ sepNavSelRange = "{11375, 0}";
+ sepNavVisRange = "{0, 0}";
+ sepNavWindowFrame = "{{394, 53}, {948, 825}}";
+ };
+ };
+ 8BA05A670720730100365D66 /* Distance.exp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}";
+ sepNavSelRange = "{15, 0}";
+ sepNavVisRange = "{0, 15}";
+ sepNavWindowFrame = "{{15, 51}, {1300, 822}}";
};
};
8BA05A690720730100365D66 /* DistanceVersion.h */ = {
@@ -109,9 +117,9 @@
};
8BC6025B073B072D006C4272 /* Distance.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1098, 1950}}";
- sepNavSelRange = "{5367, 0}";
- sepNavVisRange = "{2035, 1667}";
+ sepNavIntBoundsRect = "{{0, 0}, {1098, 1937}}";
+ sepNavSelRange = "{5487, 0}";
+ sepNavVisRange = "{4077, 1522}";
sepNavWindowFrame = "{{295, 66}, {1145, 812}}";
};
};
diff --git a/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3
index d80f812..2054453 100755
--- a/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>5</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 345 810 487 0 0 1440 878 </string>
+ <string>493 340 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,11 +352,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B904D1120A44D87008CBAD8</string>
+ <string>8B792ABB21F36103006E9731</string>
<key>history</key>
<array>
<string>8B904CF820A44C4B008CBAD8</string>
- <string>8B904D1020A44D87008CBAD8</string>
+ <string>8B792AB521F360EC006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 51}}</string>
+ <string>{{0, 0}, {603, 32}}</string>
<key>RubberWindowFrame</key>
- <string>630 345 810 487 0 0 1440 878 </string>
+ <string>493 340 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>51pt</string>
+ <string>32pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>390pt</string>
+ <string>409pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
- <key>RubberWindowFrame</key>
- <string>630 345 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 382}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 382}}</string>
+ <key>RubberWindowFrame</key>
+ <string>493 340 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B904D1220A44D87008CBAD8</string>
+ <string>8B792ABC21F36103006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B904D1320A44D87008CBAD8</string>
+ <string>8B792ABD21F36103006E9731</string>
<string>8BC5212E1DB3E2E500E72CD6</string>
- <string>8B904D1420A44D87008CBAD8</string>
+ <string>8B792ABE21F36103006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>547638663.51005495</real>
+ <real>569598211.72343302</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +653,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B904D1520A44D87008CBAD8</string>
+ <string>8B792ABF21F36103006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Distance/Distance.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 345 810 487 0 0 1440 878 </string>
+ <string>493 340 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Distance2/Distance2.cpp b/plugins/MacAU/Distance2/Distance2.cpp
index d9101d7..ddafb82 100755
--- a/plugins/MacAU/Distance2/Distance2.cpp
+++ b/plugins/MacAU/Distance2/Distance2.cpp
@@ -359,23 +359,15 @@ void Distance2::Distance2Kernel::Process( const Float32 *inSourceP,
}
//Dry/Wet control, defaults to the last slider
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser
index 3d24615..6b4a4a7 100755
--- a/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser
@@ -49,20 +49,40 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 547768382;
- PBXWorkspaceStateSaveDate = 547768382;
+ PBXPerProjectTemplateStateSaveDate = 569598233;
+ PBXWorkspaceStateSaveDate = 569598233;
};
perUserProjectItems = {
+ 8B792ACD21F3615C006E9731 /* PBXTextBookmark */ = 8B792ACD21F3615C006E9731 /* PBXTextBookmark */;
+ 8B792AD221F3616C006E9731 /* PBXTextBookmark */ = 8B792AD221F3616C006E9731 /* PBXTextBookmark */;
8B7E3D4220A64FFD00482CB5 /* PBXTextBookmark */ = 8B7E3D4220A64FFD00482CB5 /* PBXTextBookmark */;
8B7E3D4320A64FFD00482CB5 /* PBXTextBookmark */ = 8B7E3D4320A64FFD00482CB5 /* PBXTextBookmark */;
- 8B7E3D4420A64FFD00482CB5 /* PBXBookmark */ = 8B7E3D4420A64FFD00482CB5 /* PBXBookmark */;
- 8B7E3D4520A64FFD00482CB5 /* PBXTextBookmark */ = 8B7E3D4520A64FFD00482CB5 /* PBXTextBookmark */;
8B904DA120A465EC008CBAD8 /* PlistBookmark */ = 8B904DA120A465EC008CBAD8 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B792ACD21F3615C006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Distance2.cpp */;
+ name = "Distance2.cpp: 176";
+ rLen = 0;
+ rLoc = 8084;
+ rType = 0;
+ vrLen = 420;
+ vrLoc = 10855;
+ };
+ 8B792AD221F3616C006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Distance2.cpp */;
+ name = "Distance2.cpp: 176";
+ rLen = 0;
+ rLoc = 8084;
+ rType = 0;
+ vrLen = 420;
+ vrLoc = 10855;
+ };
8B7E3D4220A64FFD00482CB5 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* Distance2Version.h */;
@@ -83,20 +103,6 @@
vrLen = 375;
vrLoc = 2714;
};
- 8B7E3D4420A64FFD00482CB5 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 8BA05A660720730100365D66 /* Distance2.cpp */;
- };
- 8B7E3D4520A64FFD00482CB5 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Distance2.cpp */;
- name = "Distance2.cpp: 176";
- rLen = 0;
- rLoc = 8084;
- rType = 0;
- vrLen = 476;
- vrLoc = 10855;
- };
8B904DA120A465EC008CBAD8 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
@@ -111,10 +117,10 @@
};
8BA05A660720730100365D66 /* Distance2.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {642, 4979}}";
+ sepNavIntBoundsRect = "{{0, 0}, {572, 4875}}";
sepNavSelRange = "{8084, 0}";
- sepNavVisRange = "{10855, 476}";
- sepNavWindowFrame = "{{561, 47}, {877, 831}}";
+ sepNavVisRange = "{10855, 420}";
+ sepNavWindowFrame = "{{432, 47}, {877, 831}}";
};
};
8BA05A670720730100365D66 /* Distance2.exp */ = {
@@ -135,10 +141,10 @@
};
8BC6025B073B072D006C4272 /* Distance2.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 2210}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2223}}";
sepNavSelRange = "{2966, 0}";
- sepNavVisRange = "{2714, 375}";
- sepNavWindowFrame = "{{786, 47}, {877, 831}}";
+ sepNavVisRange = "{4877, 1321}";
+ sepNavWindowFrame = "{{563, 47}, {877, 831}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3
index 5d06e6f..deed33a 100755
--- a/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>576 144 841 654 0 0 1440 878 </string>
+ <string>487 174 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -354,13 +352,13 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B7E3D4520A64FFD00482CB5</string>
+ <string>8B792AD221F3616C006E9731</string>
<key>history</key>
<array>
<string>8B904DA120A465EC008CBAD8</string>
<string>8B7E3D4220A64FFD00482CB5</string>
<string>8B7E3D4320A64FFD00482CB5</string>
- <string>8B7E3D4420A64FFD00482CB5</string>
+ <string>8B792ACD21F3615C006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -374,18 +372,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 202}}</string>
+ <string>{{0, 0}, {531, 188}}</string>
<key>RubberWindowFrame</key>
- <string>576 144 841 654 0 0 1440 878 </string>
+ <string>487 174 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>202pt</string>
+ <string>188pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>406pt</string>
+ <string>420pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -399,9 +397,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 379}}</string>
- <key>RubberWindowFrame</key>
- <string>576 144 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 393}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -455,7 +451,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {531, 393}}</string>
+ <key>RubberWindowFrame</key>
+ <string>487 174 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -483,11 +481,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B7E3D4620A64FFD00482CB5</string>
+ <string>8B792AD321F3616C006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B7E3D4720A64FFD00482CB5</string>
+ <string>8B792AD421F3616C006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B7E3D4820A64FFD00482CB5</string>
+ <string>8B792AD521F3616C006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -660,7 +658,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>547770365.68357301</real>
+ <real>569598316.742221</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -680,7 +678,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Distance2/Distance2.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>576 144 841 654 0 0 1440 878 </string>
+ <string>487 174 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/DitherFloat/DitherFloat.cpp b/plugins/MacAU/DitherFloat/DitherFloat.cpp
new file mode 100755
index 0000000..7939fbe
--- /dev/null
+++ b/plugins/MacAU/DitherFloat/DitherFloat.cpp
@@ -0,0 +1,255 @@
+/*
+* File: DitherFloat.cpp
+*
+* Version: 1.0
+*
+* Created: 1/11/19
+*
+* Copyright: Copyright © 2019 Airwindows, All Rights Reserved
+*
+* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
+* consideration of your agreement to the following terms, and your use, installation, modification
+* or redistribution of this Apple software constitutes acceptance of these terms. If you do
+* not agree with these terms, please do not use, install, modify or redistribute this Apple
+* software.
+*
+* In consideration of your agreement to abide by the following terms, and subject to these terms,
+* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
+* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
+* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
+* redistribute the Apple Software in its entirety and without modifications, you must retain this
+* notice and the following text and disclaimers in all such redistributions of the Apple Software.
+* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
+* endorse or promote products derived from the Apple Software without specific prior written
+* permission from Apple. Except as expressly stated in this notice, no other rights or
+* licenses, express or implied, are granted by Apple herein, including but not limited to any
+* patent rights that may be infringed by your derivative works or by other works in which the
+* Apple Software may be incorporated.
+*
+* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
+* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
+* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
+* OR IN COMBINATION WITH YOUR PRODUCTS.
+*
+* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
+* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
+* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
+* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*/
+/*=============================================================================
+ DitherFloat.cpp
+
+=============================================================================*/
+#include "DitherFloat.h"
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+COMPONENT_ENTRY(DitherFloat)
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// DitherFloat::DitherFloat
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+DitherFloat::DitherFloat(AudioUnit component)
+ : AUEffectBase(component)
+{
+ CreateElements();
+ Globals()->UseIndexedParameters(kNumberOfParameters);
+ SetParameter(kParam_One, kDefaultValue_ParamOne );
+ SetParameter(kParam_Two, kDefaultValue_ParamTwo );
+
+#if AU_DEBUG_DISPATCHER
+ mDebugDispatcher = new AUDebugDispatcher (this);
+#endif
+
+}
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// DitherFloat::GetParameterValueStrings
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ComponentResult DitherFloat::GetParameterValueStrings(AudioUnitScope inScope,
+ AudioUnitParameterID inParameterID,
+ CFArrayRef * outStrings)
+{
+
+ return kAudioUnitErr_InvalidProperty;
+}
+
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// DitherFloat::GetParameterInfo
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ComponentResult DitherFloat::GetParameterInfo(AudioUnitScope inScope,
+ AudioUnitParameterID inParameterID,
+ AudioUnitParameterInfo &outParameterInfo )
+{
+ ComponentResult result = noErr;
+
+ outParameterInfo.flags = kAudioUnitParameterFlag_IsWritable
+ | kAudioUnitParameterFlag_IsReadable;
+
+ if (inScope == kAudioUnitScope_Global) {
+ switch(inParameterID)
+ {
+ case kParam_One:
+ AUBase::FillInParameterName (outParameterInfo, kParameterOneName, false);
+ outParameterInfo.unit = kAudioUnitParameterUnit_Indexed;
+ outParameterInfo.minValue = 0.0;
+ outParameterInfo.maxValue = 32.0;
+ outParameterInfo.defaultValue = kDefaultValue_ParamOne;
+ break;
+ case kParam_Two:
+ AUBase::FillInParameterName (outParameterInfo, kParameterTwoName, false);
+ outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
+ outParameterInfo.minValue = 0.0;
+ outParameterInfo.maxValue = 1.0;
+ outParameterInfo.defaultValue = kDefaultValue_ParamTwo;
+ break;
+ default:
+ result = kAudioUnitErr_InvalidParameter;
+ break;
+ }
+ } else {
+ result = kAudioUnitErr_InvalidParameter;
+ }
+
+
+
+ return result;
+}
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// DitherFloat::GetPropertyInfo
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ComponentResult DitherFloat::GetPropertyInfo (AudioUnitPropertyID inID,
+ AudioUnitScope inScope,
+ AudioUnitElement inElement,
+ UInt32 & outDataSize,
+ Boolean & outWritable)
+{
+ return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
+}
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// DitherFloat::GetProperty
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ComponentResult DitherFloat::GetProperty( AudioUnitPropertyID inID,
+ AudioUnitScope inScope,
+ AudioUnitElement inElement,
+ void * outData )
+{
+ return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
+}
+
+// DitherFloat::Initialize
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ComponentResult DitherFloat::Initialize()
+{
+ ComponentResult result = AUEffectBase::Initialize();
+ if (result == noErr)
+ Reset(kAudioUnitScope_Global, 0);
+ return result;
+}
+
+#pragma mark ____DitherFloatEffectKernel
+
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// DitherFloat::DitherFloatKernel::Reset()
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+void DitherFloat::DitherFloatKernel::Reset()
+{
+ fpNShape = 0.0;
+}
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// DitherFloat::DitherFloatKernel::Process
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+void DitherFloat::DitherFloatKernel::Process( const Float32 *inSourceP,
+ Float32 *inDestP,
+ UInt32 inFramesToProcess,
+ UInt32 inNumChannels,
+ bool &ioSilence )
+{
+ UInt32 nSampleFrames = inFramesToProcess;
+ const Float32 *sourceP = inSourceP;
+ Float32 *destP = inDestP;
+ long double overallscale = 1.0;
+ overallscale /= 44100.0;
+ overallscale *= GetSampleRate();
+
+ int floatOffset = GetParameter( kParam_One );
+ long double blend = GetParameter( kParam_Two );
+
+ long double gain = 0;
+
+ switch (floatOffset)
+ {
+ case 0: gain = 1.0; break;
+ case 1: gain = 2.0; break;
+ case 2: gain = 4.0; break;
+ case 3: gain = 8.0; break;
+ case 4: gain = 16.0; break;
+ case 5: gain = 32.0; break;
+ case 6: gain = 64.0; break;
+ case 7: gain = 128.0; break;
+ case 8: gain = 256.0; break;
+ case 9: gain = 512.0; break;
+ case 10: gain = 1024.0; break;
+ case 11: gain = 2048.0; break;
+ case 12: gain = 4096.0; break;
+ case 13: gain = 8192.0; break;
+ case 14: gain = 16384.0; break;
+ case 15: gain = 32768.0; break;
+ case 16: gain = 65536.0; break;
+ case 17: gain = 131072.0; break;
+ case 18: gain = 262144.0; break;
+ case 19: gain = 524288.0; break;
+ case 20: gain = 1048576.0; break;
+ case 21: gain = 2097152.0; break;
+ case 22: gain = 4194304.0; break;
+ case 23: gain = 8388608.0; break;
+ case 24: gain = 16777216.0; break;
+ case 25: gain = 33554432.0; break;
+ case 26: gain = 67108864.0; break;
+ case 27: gain = 134217728.0; break;
+ case 28: gain = 268435456.0; break;
+ case 29: gain = 536870912.0; break;
+ case 30: gain = 1073741824.0; break;
+ case 31: gain = 2147483648.0; break;
+ case 32: gain = 4294967296.0; break;
+ }
+ //we are directly punching in the gain values rather than calculating them
+
+ while (nSampleFrames-- > 0) {
+ long double inputSample = *sourceP + (gain-1); //this offsets the float into total truncation-land.
+
+
+
+
+
+
+ //begin 32 bit floating point dither
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit floating point dither
+
+
+
+
+
+ inputSample = (Float32)inputSample; //equivalent of 'floor' for 32 bit floating point
+ //We do that separately, we're truncating to floating point WHILE heavily offset.
+
+ *destP = inputSample - (gain-1); //this de-offsets the float.
+ sourceP += inNumChannels; destP += inNumChannels;
+ }
+}
+
diff --git a/plugins/MacAU/DitherFloat/DitherFloat.exp b/plugins/MacAU/DitherFloat/DitherFloat.exp
new file mode 100755
index 0000000..3dcb049
--- /dev/null
+++ b/plugins/MacAU/DitherFloat/DitherFloat.exp
@@ -0,0 +1 @@
+_DitherFloatEntry
diff --git a/plugins/MacAU/DitherFloat/DitherFloat.h b/plugins/MacAU/DitherFloat/DitherFloat.h
new file mode 100755
index 0000000..0eea62e
--- /dev/null
+++ b/plugins/MacAU/DitherFloat/DitherFloat.h
@@ -0,0 +1,138 @@
+/*
+* File: DitherFloat.h
+*
+* Version: 1.0
+*
+* Created: 1/11/19
+*
+* Copyright: Copyright © 2019 Airwindows, All Rights Reserved
+*
+* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
+* consideration of your agreement to the following terms, and your use, installation, modification
+* or redistribution of this Apple software constitutes acceptance of these terms. If you do
+* not agree with these terms, please do not use, install, modify or redistribute this Apple
+* software.
+*
+* In consideration of your agreement to abide by the following terms, and subject to these terms,
+* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
+* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
+* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
+* redistribute the Apple Software in its entirety and without modifications, you must retain this
+* notice and the following text and disclaimers in all such redistributions of the Apple Software.
+* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
+* endorse or promote products derived from the Apple Software without specific prior written
+* permission from Apple. Except as expressly stated in this notice, no other rights or
+* licenses, express or implied, are granted by Apple herein, including but not limited to any
+* patent rights that may be infringed by your derivative works or by other works in which the
+* Apple Software may be incorporated.
+*
+* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
+* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
+* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
+* OR IN COMBINATION WITH YOUR PRODUCTS.
+*
+* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
+* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
+* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
+* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*/
+#include "AUEffectBase.h"
+#include "DitherFloatVersion.h"
+
+#if AU_DEBUG_DISPATCHER
+ #include "AUDebugDispatcher.h"
+#endif
+
+
+#ifndef __DitherFloat_h__
+#define __DitherFloat_h__
+
+
+#pragma mark ____DitherFloat Parameters
+
+// parameters
+static const float kDefaultValue_ParamOne = 0.0;
+static const float kDefaultValue_ParamTwo = 1.0;
+
+static CFStringRef kParameterOneName = CFSTR("Float Offset");
+static CFStringRef kParameterTwoName = CFSTR("Dither Engage");
+//Alter the name if desired, but using the plugin name is a start
+
+enum {
+ kParam_One =0,
+ kParam_Two =1,
+ //Add your parameters here...
+ kNumberOfParameters=2
+};
+
+#pragma mark ____DitherFloat
+class DitherFloat : public AUEffectBase
+{
+public:
+ DitherFloat(AudioUnit component);
+#if AU_DEBUG_DISPATCHER
+ virtual ~DitherFloat () { delete mDebugDispatcher; }
+#endif
+
+ virtual AUKernelBase * NewKernel() { return new DitherFloatKernel(this); }
+
+ virtual ComponentResult GetParameterValueStrings(AudioUnitScope inScope,
+ AudioUnitParameterID inParameterID,
+ CFArrayRef * outStrings);
+
+ virtual ComponentResult GetParameterInfo(AudioUnitScope inScope,
+ AudioUnitParameterID inParameterID,
+ AudioUnitParameterInfo &outParameterInfo);
+
+ virtual ComponentResult GetPropertyInfo(AudioUnitPropertyID inID,
+ AudioUnitScope inScope,
+ AudioUnitElement inElement,
+ UInt32 & outDataSize,
+ Boolean & outWritable );
+
+ virtual ComponentResult GetProperty(AudioUnitPropertyID inID,
+ AudioUnitScope inScope,
+ AudioUnitElement inElement,
+ void * outData);
+
+ virtual ComponentResult Initialize();
+ virtual bool SupportsTail () { return true; }
+ virtual Float64 GetTailTime() {return (1.0/GetSampleRate())*0.0;} //in SECONDS! gsr * a number = in samples
+ virtual Float64 GetLatency() {return (1.0/GetSampleRate())*0.0;} // in SECONDS! gsr * a number = in samples
+
+ /*! @method Version */
+ virtual ComponentResult Version() { return kDitherFloatVersion; }
+
+
+
+protected:
+ class DitherFloatKernel : public AUKernelBase // most of the real work happens here
+ {
+public:
+ DitherFloatKernel(AUEffectBase *inAudioUnit )
+ : AUKernelBase(inAudioUnit)
+ {
+ }
+
+ // *Required* overides for the process method for this effect
+ // processes one channel of interleaved samples
+ virtual void Process( const Float32 *inSourceP,
+ Float32 *inDestP,
+ UInt32 inFramesToProcess,
+ UInt32 inNumChannels,
+ bool &ioSilence);
+
+ virtual void Reset();
+
+ private:
+ long double fpNShape;
+ };
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+#endif \ No newline at end of file
diff --git a/plugins/MacAU/DitherFloat/DitherFloat.r b/plugins/MacAU/DitherFloat/DitherFloat.r
new file mode 100755
index 0000000..89170e0
--- /dev/null
+++ b/plugins/MacAU/DitherFloat/DitherFloat.r
@@ -0,0 +1,61 @@
+/*
+* File: DitherFloat.r
+*
+* Version: 1.0
+*
+* Created: 1/11/19
+*
+* Copyright: Copyright © 2019 Airwindows, All Rights Reserved
+*
+* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
+* consideration of your agreement to the following terms, and your use, installation, modification
+* or redistribution of this Apple software constitutes acceptance of these terms. If you do
+* not agree with these terms, please do not use, install, modify or redistribute this Apple
+* software.
+*
+* In consideration of your agreement to abide by the following terms, and subject to these terms,
+* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
+* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
+* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
+* redistribute the Apple Software in its entirety and without modifications, you must retain this
+* notice and the following text and disclaimers in all such redistributions of the Apple Software.
+* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
+* endorse or promote products derived from the Apple Software without specific prior written
+* permission from Apple. Except as expressly stated in this notice, no other rights or
+* licenses, express or implied, are granted by Apple herein, including but not limited to any
+* patent rights that may be infringed by your derivative works or by other works in which the
+* Apple Software may be incorporated.
+*
+* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
+* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
+* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
+* OR IN COMBINATION WITH YOUR PRODUCTS.
+*
+* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
+* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
+* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
+* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*/
+#include <AudioUnit/AudioUnit.r>
+
+#include "DitherFloatVersion.h"
+
+// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
+#define kAudioUnitResID_DitherFloat 1000
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DitherFloat~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+#define RES_ID kAudioUnitResID_DitherFloat
+#define COMP_TYPE kAudioUnitType_Effect
+#define COMP_SUBTYPE DitherFloat_COMP_SUBTYPE
+#define COMP_MANUF DitherFloat_COMP_MANF
+
+#define VERSION kDitherFloatVersion
+#define NAME "Airwindows: DitherFloat"
+#define DESCRIPTION "DitherFloat AU"
+#define ENTRY_POINT "DitherFloatEntry"
+
+#include "AUResources.r" \ No newline at end of file
diff --git a/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.mode1v3
new file mode 100755
index 0000000..f301be9
--- /dev/null
+++ b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.mode1v3
@@ -0,0 +1,1358 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>ActivePerspectiveName</key>
+ <string>Project</string>
+ <key>AllowedModules</key>
+ <array>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Name</key>
+ <string>Groups and Files Outline View</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Name</key>
+ <string>Editor</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCTaskListModule</string>
+ <key>Name</key>
+ <string>Task List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Name</key>
+ <string>File and Smart Group Detail Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Name</key>
+ <string>Detailed Build Results Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Name</key>
+ <string>Project Batch Find Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Name</key>
+ <string>Project Format Conflicts List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Name</key>
+ <string>Bookmarks Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Name</key>
+ <string>Class Browser</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Name</key>
+ <string>Source Code Control Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXDebugBreakpointsModule</string>
+ <key>Name</key>
+ <string>Debug Breakpoints Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDockableInspector</string>
+ <key>Name</key>
+ <string>Inspector</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXOpenQuicklyModule</string>
+ <key>Name</key>
+ <string>Open Quickly Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Name</key>
+ <string>Debugger</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Name</key>
+ <string>Debug Console</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Name</key>
+ <string>Snapshots Tool</string>
+ </dict>
+ </array>
+ <key>BundlePath</key>
+ <string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string>
+ <key>Description</key>
+ <string>DefaultDescriptionKey</string>
+ <key>DockingSystemVisible</key>
+ <false/>
+ <key>Extension</key>
+ <string>mode1v3</string>
+ <key>FavBarConfig</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8BD3CCBC148831C90062E48C</string>
+ <key>XCBarModuleItemNames</key>
+ <dict/>
+ <key>XCBarModuleItems</key>
+ <array/>
+ </dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>com.apple.perspectives.project.mode1v3</string>
+ <key>MajorVersion</key>
+ <integer>33</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Default</string>
+ <key>Notifications</key>
+ <array/>
+ <key>OpenEditors</key>
+ <array/>
+ <key>PerspectiveWidths</key>
+ <array>
+ <integer>-1</integer>
+ <integer>-1</integer>
+ </array>
+ <key>Perspectives</key>
+ <array>
+ <dict>
+ <key>ChosenToolbarItems</key>
+ <array>
+ <string>active-combo-popup</string>
+ <string>action</string>
+ <string>build</string>
+ <string>debugger-enable-breakpoints</string>
+ <string>get-info</string>
+ <string>com.apple.pbx.toolbar.searchfield</string>
+ </array>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProjectWithEditor</string>
+ <key>Identifier</key>
+ <string>perspective.project</string>
+ <key>IsVertical</key>
+ <false/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <true/>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>186</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>089C166AFE841209C02AAC07</string>
+ <string>08FB77ADFE841716C02AAC07</string>
+ <string>8BA05AEB0720742700365D66</string>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FABC05509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>20</integer>
+ <integer>19</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {186, 445}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <true/>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.GFSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {203, 463}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>186</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>203 321 788 504 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>203pt</string>
+ </dict>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20306471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>MyNewFile14.java</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20406471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>MyNewFile14.java</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {580, 269}}</string>
+ <key>RubberWindowFrame</key>
+ <string>203 321 788 504 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>269pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20506471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 274}, {580, 189}}</string>
+ <key>RubberWindowFrame</key>
+ <string>203 321 788 504 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>189pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>580pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCModuleDock</string>
+ <string>PBXNavigatorGroup</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>8B563EC9161B5E170067FE32</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>8B563ECA161B5E170067FE32</string>
+ <string>1CE0B20306471E060097A5F4</string>
+ <string>1CE0B20506471E060097A5F4</string>
+ </array>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.defaultV3</string>
+ </dict>
+ <dict>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProject</string>
+ <key>Identifier</key>
+ <string>perspective.morph</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C08E77C0454961000C914BD</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>11E0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>186</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>29B97314FDCFA39411CA2CEA</string>
+ <string>1C37FABC05509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {186, 337}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>1</integer>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.GFSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {203, 355}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>186</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>373 269 690 397 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Morph</string>
+ <key>PreferredWidth</key>
+ <integer>300</integer>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>11E0B1FE06471DED0097A5F4</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.default.shortV3</string>
+ </dict>
+ </array>
+ <key>PerspectivesBarVisible</key>
+ <false/>
+ <key>ShelfIsVisible</key>
+ <false/>
+ <key>SourceDescription</key>
+ <string>file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TimeStamp</key>
+ <real>0.0</real>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarDisplayMode</key>
+ <integer>1</integer>
+ <key>ToolbarIsVisible</key>
+ <true/>
+ <key>ToolbarSizeMode</key>
+ <integer>2</integer>
+ <key>Type</key>
+ <string>Perspectives</string>
+ <key>UpdateMessage</key>
+ <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string>
+ <key>WindowJustification</key>
+ <integer>5</integer>
+ <key>WindowOrderList</key>
+ <array>
+ <string>8BD3CCBD148831C90062E48C</string>
+ <string>/Developer/Library/Xcode/Project Templates/System Plug-in/Audio Unit Effect/Audio Unit Effect/StarterAU.xcodeproj</string>
+ </array>
+ <key>WindowString</key>
+ <string>203 321 788 504 0 0 1440 878 </string>
+ <key>WindowToolsV3</key>
+ <array>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.build</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528F0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string></string>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {500, 218}}</string>
+ <key>RubberWindowFrame</key>
+ <string>668 222 500 500 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>218pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Build Results</string>
+ <key>XCBuildResultsTrigger_Collapse</key>
+ <integer>1021</integer>
+ <key>XCBuildResultsTrigger_Open</key>
+ <integer>1011</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 223}, {500, 236}}</string>
+ <key>RubberWindowFrame</key>
+ <string>668 222 500 500 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Proportion</key>
+ <string>236pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>459pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Build Results</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBuildResultsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>8BD3CCBD148831C90062E48C</string>
+ <string>8B563ECB161B5E170067FE32</string>
+ <string>1CD0528F0623707200166675</string>
+ <string>XCMainBuildResultsModuleGUID</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.buildV3</string>
+ <key>WindowContentMinSize</key>
+ <string>486 300</string>
+ <key>WindowString</key>
+ <string>668 222 500 500 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>8BD3CCBD148831C90062E48C</string>
+ <key>WindowToolIsVisible</key>
+ <false/>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugger</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>Debugger</key>
+ <dict>
+ <key>HorizontalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {317, 164}}</string>
+ <string>{{317, 0}, {377, 164}}</string>
+ </array>
+ </dict>
+ <key>VerticalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {694, 164}}</string>
+ <string>{{0, 164}, {694, 216}}</string>
+ </array>
+ </dict>
+ </dict>
+ <key>LauncherConfigVersion</key>
+ <string>8</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C162984064C10D400B95A72</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debug - GLUTExamples (Underwater)</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>DebugConsoleDrawerSize</key>
+ <string>{100, 120}</string>
+ <key>DebugConsoleVisible</key>
+ <string>None</string>
+ <key>DebugConsoleWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>DebugSTDIOWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>Frame</key>
+ <string>{{0, 0}, {694, 380}}</string>
+ <key>RubberWindowFrame</key>
+ <string>321 238 694 422 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugSessionModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <string>1C0AD2AB069F1E9B00FABCE6</string>
+ <string>1C162984064C10D400B95A72</string>
+ <string>1C0AD2AC069F1E9B00FABCE6</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugV3</string>
+ <key>WindowString</key>
+ <string>321 238 694 422 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.find</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CDD528C0622207200134675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528D0623707200166675</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {781, 167}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>781pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528E0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Project Find</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{8, 0}, {773, 254}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>428pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Find</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXProjectFindModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <string>1C530D58069F1CE1000CFCEE</string>
+ <string>1C530D59069F1CE1000CFCEE</string>
+ <string>1CDD528C0622207200134675</string>
+ <string>1C530D5A069F1CE1000CFCEE</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CD0528E0623707200166675</string>
+ </array>
+ <key>WindowString</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>MENUSEPARATOR</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debuggerConsole</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAAC065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debugger Console</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {650, 250}}</string>
+ <key>RubberWindowFrame</key>
+ <string>516 632 650 250 0 0 1680 1027 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Proportion</key>
+ <string>209pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>209pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger Console</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugCLIModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAAD065D492600B07095</string>
+ <string>1C78EAAE065D492600B07095</string>
+ <string>1C78EAAC065D492600B07095</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.consoleV3</string>
+ <key>WindowString</key>
+ <string>650 41 650 250 0 0 1280 1002 </string>
+ <key>WindowToolGUID</key>
+ <string>1C78EAAD065D492600B07095</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.snapshots</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Snapshots</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCSnapshotModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <string>Yes</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.snapshots</string>
+ <key>WindowString</key>
+ <string>315 824 300 550 0 0 1440 878 </string>
+ <key>WindowToolIsVisible</key>
+ <string>Yes</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.scm</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB2065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB3065D492600B07095</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {452, 0}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>0pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD052920623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>SCM</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ConsoleFrame</key>
+ <string>{{0, 259}, {452, 0}}</string>
+ <key>Frame</key>
+ <string>{{0, 7}, {452, 259}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ <key>TableConfiguration</key>
+ <array>
+ <string>Status</string>
+ <real>30</real>
+ <string>FileName</string>
+ <real>199</real>
+ <string>Path</string>
+ <real>197.0950012207031</real>
+ </array>
+ <key>TableFrame</key>
+ <string>{{0, 0}, {452, 250}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Proportion</key>
+ <string>262pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>266pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>SCM</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXCVSModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAB4065D492600B07095</string>
+ <string>1C78EAB5065D492600B07095</string>
+ <string>1C78EAB2065D492600B07095</string>
+ <string>1CD052920623707200166675</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.scm</string>
+ <key>WindowString</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.breakpoints</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>no</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>168</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {168, 350}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>0</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {185, 368}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>168</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>185pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA1AED706398EBD00589147</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{190, 0}, {554, 368}}</string>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>554pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>368pt</string>
+ </dict>
+ </array>
+ <key>MajorVersion</key>
+ <integer>3</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Breakpoints</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <string>1CDDB66907F98D9800BB5817</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CA1AED706398EBD00589147</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.breakpointsV3</string>
+ <key>WindowString</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <key>WindowToolIsVisible</key>
+ <integer>1</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugAnimator</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debug Visualizer</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXNavigatorGroup</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugAnimatorV3</string>
+ <key>WindowString</key>
+ <string>100 100 700 500 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.bookmarks</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Bookmarks</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBookmarksModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowString</key>
+ <string>538 42 401 187 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.projectFormatConflicts</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Format Conflicts</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCProjectFormatConflictsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowContentMinSize</key>
+ <string>450 300</string>
+ <key>WindowString</key>
+ <string>50 850 472 307 0 0 1440 877</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.classBrowser</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>OptionsSetName</key>
+ <string>Hierarchy, all classes</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA6456E063B45B4001379D8</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Class Browser - NSObject</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ClassesFrame</key>
+ <string>{{0, 0}, {374, 96}}</string>
+ <key>ClassesTreeTableConfiguration</key>
+ <array>
+ <string>PBXClassNameColumnIdentifier</string>
+ <real>208</real>
+ <string>PBXClassBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>Frame</key>
+ <string>{{0, 0}, {630, 331}}</string>
+ <key>MembersFrame</key>
+ <string>{{0, 105}, {374, 395}}</string>
+ <key>MembersTreeTableConfiguration</key>
+ <array>
+ <string>PBXMemberTypeIconColumnIdentifier</string>
+ <real>22</real>
+ <string>PBXMemberNameColumnIdentifier</string>
+ <real>216</real>
+ <string>PBXMemberTypeColumnIdentifier</string>
+ <real>97</real>
+ <string>PBXMemberBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <integer>1</integer>
+ <key>RubberWindowFrame</key>
+ <string>385 179 630 352 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Proportion</key>
+ <string>332pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>332pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Class Browser</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXClassBrowserModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C0AD2AF069F1E9B00FABCE6</string>
+ <string>1C0AD2B0069F1E9B00FABCE6</string>
+ <string>1CA6456E063B45B4001379D8</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.classbrowser</string>
+ <key>WindowString</key>
+ <string>385 179 630 352 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C0AD2AF069F1E9B00FABCE6</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.refactoring</string>
+ <key>IncludeInToolsMenu</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{0, 0}, {500, 335}</string>
+ <key>RubberWindowFrame</key>
+ <string>{0, 0}, {500, 335}</string>
+ </dict>
+ <key>Module</key>
+ <string>XCRefactoringModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Refactoring</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCRefactoringModule</string>
+ </array>
+ <key>WindowString</key>
+ <string>200 200 500 356 0 0 1920 1200 </string>
+ </dict>
+ </array>
+</dict>
+</plist>
diff --git a/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser
new file mode 100755
index 0000000..b851c08
--- /dev/null
+++ b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser
@@ -0,0 +1,131 @@
+// !$*UTF8*$!
+{
+ 089C1669FE841209C02AAC07 /* Project object */ = {
+ activeBuildConfigurationName = Release;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* DitherFloat */;
+ codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
+ perUserDictionary = {
+ PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 292,
+ 20,
+ 48,
+ 43,
+ 43,
+ 20,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ PBXFileDataSource_Target_ColumnID,
+ );
+ };
+ PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 252,
+ 60,
+ 20,
+ 48,
+ 43,
+ 43,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXTargetDataSource_PrimaryAttribute,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ );
+ };
+ PBXPerProjectTemplateStateSaveDate = 569802726;
+ PBXWorkspaceStateSaveDate = 569802726;
+ };
+ perUserProjectItems = {
+ 8BEF85AB21F6801300FEF113 /* PlistBookmark */ = 8BEF85AB21F6801300FEF113 /* PlistBookmark */;
+ 8BEF85AC21F6801300FEF113 /* PBXBookmark */ = 8BEF85AC21F6801300FEF113 /* PBXBookmark */;
+ 8BEF85AD21F6801300FEF113 /* PBXTextBookmark */ = 8BEF85AD21F6801300FEF113 /* PBXTextBookmark */;
+ };
+ sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
+ userBuildSettings = {
+ };
+ };
+ 8BA05A660720730100365D66 /* DitherFloat.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1048, 3588}}";
+ sepNavSelRange = "{10182, 58}";
+ sepNavVisRange = "{9784, 862}";
+ sepNavWindowFrame = "{{643, 56}, {1300, 822}}";
+ };
+ };
+ 8BA05A690720730100365D66 /* DitherFloatVersion.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1253, 767}}";
+ sepNavSelRange = "{2908, 0}";
+ sepNavVisRange = "{54, 2917}";
+ sepNavWindowFrame = "{{498, 23}, {1300, 822}}";
+ };
+ };
+ 8BC6025B073B072D006C4272 /* DitherFloat.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1253, 1794}}";
+ sepNavSelRange = "{3211, 0}";
+ sepNavVisRange = "{2595, 1482}";
+ sepNavWindowFrame = "{{717, 56}, {1300, 822}}";
+ };
+ };
+ 8BD3CCB8148830B20062E48C /* Source Control */ = {
+ isa = PBXSourceControlManager;
+ fallbackIsa = XCSourceControlManager;
+ isSCMEnabled = 0;
+ scmConfiguration = {
+ repositoryNamesForRoots = {
+ "" = "";
+ };
+ };
+ };
+ 8BD3CCB9148830B20062E48C /* Code sense */ = {
+ isa = PBXCodeSenseManager;
+ indexTemplatePath = "";
+ };
+ 8BEF85AB21F6801300FEF113 /* PlistBookmark */ = {
+ isa = PlistBookmark;
+ fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
+ fallbackIsa = PBXBookmark;
+ isK = 0;
+ kPath = (
+ CFBundleName,
+ );
+ name = /Users/christopherjohnson/Desktop/MacAU/DitherFloat/Info.plist;
+ rLen = 0;
+ rLoc = 9223372036854775807;
+ };
+ 8BEF85AC21F6801300FEF113 /* PBXBookmark */ = {
+ isa = PBXBookmark;
+ fRef = 8BA05A660720730100365D66 /* DitherFloat.cpp */;
+ };
+ 8BEF85AD21F6801300FEF113 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* DitherFloat.cpp */;
+ name = "DitherFloat.cpp: 240";
+ rLen = 58;
+ rLoc = 10182;
+ rType = 0;
+ vrLen = 862;
+ vrLoc = 9784;
+ };
+ 8D01CCC60486CAD60068D4B7 /* DitherFloat */ = {
+ activeExec = 0;
+ };
+}
diff --git a/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3
new file mode 100755
index 0000000..c05c55f
--- /dev/null
+++ b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3
@@ -0,0 +1,1506 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>ActivePerspectiveName</key>
+ <string>Project</string>
+ <key>AllowedModules</key>
+ <array>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Name</key>
+ <string>Groups and Files Outline View</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Name</key>
+ <string>Editor</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCTaskListModule</string>
+ <key>Name</key>
+ <string>Task List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Name</key>
+ <string>File and Smart Group Detail Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Name</key>
+ <string>Detailed Build Results Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Name</key>
+ <string>Project Batch Find Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Name</key>
+ <string>Project Format Conflicts List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Name</key>
+ <string>Bookmarks Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Name</key>
+ <string>Class Browser</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Name</key>
+ <string>Source Code Control Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXDebugBreakpointsModule</string>
+ <key>Name</key>
+ <string>Debug Breakpoints Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDockableInspector</string>
+ <key>Name</key>
+ <string>Inspector</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXOpenQuicklyModule</string>
+ <key>Name</key>
+ <string>Open Quickly Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Name</key>
+ <string>Debugger</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Name</key>
+ <string>Debug Console</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Name</key>
+ <string>Snapshots Tool</string>
+ </dict>
+ </array>
+ <key>BundlePath</key>
+ <string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string>
+ <key>Description</key>
+ <string>AIODescriptionKey</string>
+ <key>DockingSystemVisible</key>
+ <false/>
+ <key>Extension</key>
+ <string>perspectivev3</string>
+ <key>FavBarConfig</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8BD7274F1D46E5A5000176F0</string>
+ <key>XCBarModuleItemNames</key>
+ <dict/>
+ <key>XCBarModuleItems</key>
+ <array/>
+ </dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>com.apple.perspectives.project.defaultV3</string>
+ <key>MajorVersion</key>
+ <integer>34</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>All-In-One</string>
+ <key>Notifications</key>
+ <array>
+ <dict>
+ <key>XCObserverAutoDisconnectKey</key>
+ <true/>
+ <key>XCObserverDefintionKey</key>
+ <dict>
+ <key>PBXStatusErrorsKey</key>
+ <integer>0</integer>
+ </dict>
+ <key>XCObserverFactoryKey</key>
+ <string>XCPerspectivesSpecificationIdentifier</string>
+ <key>XCObserverGUIDKey</key>
+ <string>XCObserverProjectIdentifier</string>
+ <key>XCObserverNotificationKey</key>
+ <string>PBXStatusBuildStateMessageNotification</string>
+ <key>XCObserverTargetKey</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>XCObserverTriggerKey</key>
+ <string>awakenModuleWithObserver:</string>
+ <key>XCObserverValidationKey</key>
+ <dict>
+ <key>PBXStatusErrorsKey</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ </array>
+ <key>OpenEditors</key>
+ <array/>
+ <key>PerspectiveWidths</key>
+ <array>
+ <integer>841</integer>
+ <integer>841</integer>
+ </array>
+ <key>Perspectives</key>
+ <array>
+ <dict>
+ <key>ChosenToolbarItems</key>
+ <array>
+ <string>XCToolbarPerspectiveControl</string>
+ <string>NSToolbarSeparatorItem</string>
+ <string>active-combo-popup</string>
+ <string>action</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>debugger-enable-breakpoints</string>
+ <string>build-and-go</string>
+ <string>com.apple.ide.PBXToolbarStopButton</string>
+ <string>get-info</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>com.apple.pbx.toolbar.searchfield</string>
+ </array>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProject</string>
+ <key>Identifier</key>
+ <string>perspective.project</string>
+ <key>IsVertical</key>
+ <false/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA23ED40692098700951B8B</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>288</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>089C166AFE841209C02AAC07</string>
+ <string>08FB77ADFE841716C02AAC07</string>
+ <string>8BA05A56072072A900365D66</string>
+ <string>089C167CFE841241C02AAC07</string>
+ <string>1C37FBAC04509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>4</integer>
+ <integer>2</integer>
+ <integer>1</integer>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {288, 595}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <false/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {305, 613}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>288</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>566 208 841 654 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>305pt</string>
+ </dict>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <true/>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8BD7274A1D46E5A5000176F0</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>DitherFloat.cpp</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8BD7274B1D46E5A5000176F0</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>DitherFloat.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8BEF85AD21F6801300FEF113</string>
+ <key>history</key>
+ <array>
+ <string>8BEF85AB21F6801300FEF113</string>
+ <string>8BEF85AC21F6801300FEF113</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.CommonNavigatorGroupSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {531, 413}}</string>
+ <key>RubberWindowFrame</key>
+ <string>566 208 841 654 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>413pt</string>
+ </dict>
+ <dict>
+ <key>Proportion</key>
+ <string>195pt</string>
+ <key>Tabs</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA23EDF0692099D00951B8B</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{10, 27}, {531, 168}}</string>
+ <key>RubberWindowFrame</key>
+ <string>566 208 841 654 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA23EE00692099D00951B8B</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Project Find</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{10, 31}, {603, 297}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXCVSModuleFilterTypeKey</key>
+ <integer>1032</integer>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA23EE10692099D00951B8B</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>SCM Results</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{10, 31}, {603, 297}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Build Results</string>
+ <key>XCBuildResultsTrigger_Collapse</key>
+ <integer>1023</integer>
+ <key>XCBuildResultsTrigger_Open</key>
+ <integer>1012</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{10, 27}, {531, 365}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>531pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCModuleDock</string>
+ <string>PBXNavigatorGroup</string>
+ <string>XCDockableTabModule</string>
+ <string>XCDetailModule</string>
+ <string>PBXProjectFindModule</string>
+ <string>PBXCVSModule</string>
+ <string>PBXBuildResultsModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>8BEF85AE21F6801300FEF113</string>
+ <string>1CA23ED40692098700951B8B</string>
+ <string>8BEF85AF21F6801300FEF113</string>
+ <string>8BD7274A1D46E5A5000176F0</string>
+ <string>8BEF85B021F6801300FEF113</string>
+ <string>1CA23EDF0692099D00951B8B</string>
+ <string>1CA23EE00692099D00951B8B</string>
+ <string>1CA23EE10692099D00951B8B</string>
+ <string>XCMainBuildResultsModuleGUID</string>
+ </array>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.defaultV3</string>
+ </dict>
+ <dict>
+ <key>ChosenToolbarItems</key>
+ <array>
+ <string>XCToolbarPerspectiveControl</string>
+ <string>NSToolbarSeparatorItem</string>
+ <string>active-combo-popup</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>debugger-enable-breakpoints</string>
+ <string>build-and-go</string>
+ <string>com.apple.ide.PBXToolbarStopButton</string>
+ <string>debugger-restart-executable</string>
+ <string>debugger-pause</string>
+ <string>debugger-step-over</string>
+ <string>debugger-step-into</string>
+ <string>debugger-step-out</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>servicesModulebreakpoints</string>
+ <string>debugger-show-console-window</string>
+ </array>
+ <key>ControllerClassBaseName</key>
+ <string>PBXDebugSessionModule</string>
+ <key>IconName</key>
+ <string>DebugTabIcon</string>
+ <key>Identifier</key>
+ <string>perspective.debug</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CCC7628064C1048000F2A68</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debugger Console</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {424, 270}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Proportion</key>
+ <string>270pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>Debugger</key>
+ <dict>
+ <key>HorizontalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {395, 214}}</string>
+ <string>{{395, 0}, {415, 214}}</string>
+ </array>
+ </dict>
+ <key>VerticalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {810, 214}}</string>
+ <string>{{0, 214}, {810, 227}}</string>
+ </array>
+ </dict>
+ </dict>
+ <key>LauncherConfigVersion</key>
+ <string>8</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CCC7629064C1048000F2A68</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debug</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>DebugConsoleVisible</key>
+ <string>None</string>
+ <key>DebugConsoleWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>DebugSTDIOWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>Frame</key>
+ <string>{{0, 5}, {810, 441}}</string>
+ <key>PBXDebugSessionStackFrameViewKey</key>
+ <dict>
+ <key>DebugVariablesTableConfiguration</key>
+ <array>
+ <string>Name</string>
+ <real>120</real>
+ <string>Value</string>
+ <real>85</real>
+ <string>Summary</string>
+ <real>185</real>
+ </array>
+ <key>Frame</key>
+ <string>{{395, 0}, {415, 214}}</string>
+ </dict>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Proportion</key>
+ <string>441pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debug</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXDebugCLIModule</string>
+ <string>PBXDebugSessionModule</string>
+ <string>PBXDebugProcessAndThreadModule</string>
+ <string>PBXDebugProcessViewModule</string>
+ <string>PBXDebugThreadViewModule</string>
+ <string>PBXDebugStackFrameViewModule</string>
+ <string>PBXNavigatorGroup</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>8B79259B21F28381006E9731</string>
+ <string>1CCC7628064C1048000F2A68</string>
+ <string>1CCC7629064C1048000F2A68</string>
+ <string>8B79259C21F28381006E9731</string>
+ <string>8B79259D21F28381006E9731</string>
+ <string>8B79259E21F28381006E9731</string>
+ <string>8B79259F21F28381006E9731</string>
+ <string>8B7925A021F28381006E9731</string>
+ </array>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugV3</string>
+ </dict>
+ </array>
+ <key>PerspectivesBarVisible</key>
+ <true/>
+ <key>ShelfIsVisible</key>
+ <false/>
+ <key>SourceDescription</key>
+ <string>file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecification.xcperspec'</string>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TimeStamp</key>
+ <real>569802771.16773605</real>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarDisplayMode</key>
+ <integer>1</integer>
+ <key>ToolbarIsVisible</key>
+ <true/>
+ <key>ToolbarSizeMode</key>
+ <integer>2</integer>
+ <key>Type</key>
+ <string>Perspectives</string>
+ <key>UpdateMessage</key>
+ <string></string>
+ <key>WindowJustification</key>
+ <integer>5</integer>
+ <key>WindowOrderList</key>
+ <array>
+ <string>/Users/christopherjohnson/Desktop/MacAU/DitherFloat/DitherFloat.xcodeproj</string>
+ </array>
+ <key>WindowString</key>
+ <string>566 208 841 654 0 0 1440 878 </string>
+ <key>WindowToolsV3</key>
+ <array>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugger</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>Debugger</key>
+ <dict>
+ <key>HorizontalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {317, 164}}</string>
+ <string>{{317, 0}, {377, 164}}</string>
+ </array>
+ </dict>
+ <key>VerticalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {694, 164}}</string>
+ <string>{{0, 164}, {694, 216}}</string>
+ </array>
+ </dict>
+ </dict>
+ <key>LauncherConfigVersion</key>
+ <string>8</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C162984064C10D400B95A72</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debug - GLUTExamples (Underwater)</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>DebugConsoleDrawerSize</key>
+ <string>{100, 120}</string>
+ <key>DebugConsoleVisible</key>
+ <string>None</string>
+ <key>DebugConsoleWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>DebugSTDIOWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>Frame</key>
+ <string>{{0, 0}, {694, 380}}</string>
+ <key>RubberWindowFrame</key>
+ <string>321 238 694 422 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugSessionModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <string>1C0AD2AB069F1E9B00FABCE6</string>
+ <string>1C162984064C10D400B95A72</string>
+ <string>1C0AD2AC069F1E9B00FABCE6</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugV3</string>
+ <key>WindowString</key>
+ <string>321 238 694 422 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.build</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528F0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD052900623707200166675</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {500, 215}}</string>
+ <key>RubberWindowFrame</key>
+ <string>192 257 500 500 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>218pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Build Results</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 222}, {500, 236}}</string>
+ <key>RubberWindowFrame</key>
+ <string>192 257 500 500 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Proportion</key>
+ <string>236pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>458pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Build Results</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBuildResultsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAA5065D492600B07095</string>
+ <string>1C78EAA6065D492600B07095</string>
+ <string>1CD0528F0623707200166675</string>
+ <string>XCMainBuildResultsModuleGUID</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.buildV3</string>
+ <key>WindowString</key>
+ <string>192 257 500 500 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.find</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CDD528C0622207200134675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528D0623707200166675</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {781, 167}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>781pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528E0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Project Find</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{8, 0}, {773, 254}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>428pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Find</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXProjectFindModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <string>1C530D58069F1CE1000CFCEE</string>
+ <string>1C530D59069F1CE1000CFCEE</string>
+ <string>1CDD528C0622207200134675</string>
+ <string>1C530D5A069F1CE1000CFCEE</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CD0528E0623707200166675</string>
+ </array>
+ <key>WindowString</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.snapshots</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Snapshots</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCSnapshotModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <string>Yes</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.snapshots</string>
+ <key>WindowString</key>
+ <string>315 824 300 550 0 0 1440 878 </string>
+ <key>WindowToolIsVisible</key>
+ <string>Yes</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debuggerConsole</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAAC065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debugger Console</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {700, 358}}</string>
+ <key>RubberWindowFrame</key>
+ <string>149 87 700 400 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Proportion</key>
+ <string>358pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>358pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger Console</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugCLIModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C530D5B069F1CE1000CFCEE</string>
+ <string>1C530D5C069F1CE1000CFCEE</string>
+ <string>1C78EAAC065D492600B07095</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.consoleV3</string>
+ <key>WindowString</key>
+ <string>149 87 440 400 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C530D5B069F1CE1000CFCEE</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.scm</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB2065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB3065D492600B07095</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {452, 0}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>0pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD052920623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>SCM</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ConsoleFrame</key>
+ <string>{{0, 259}, {452, 0}}</string>
+ <key>Frame</key>
+ <string>{{0, 7}, {452, 259}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ <key>TableConfiguration</key>
+ <array>
+ <string>Status</string>
+ <real>30</real>
+ <string>FileName</string>
+ <real>199</real>
+ <string>Path</string>
+ <real>197.09500122070312</real>
+ </array>
+ <key>TableFrame</key>
+ <string>{{0, 0}, {452, 250}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Proportion</key>
+ <string>262pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>266pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>SCM</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXCVSModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAB4065D492600B07095</string>
+ <string>1C78EAB5065D492600B07095</string>
+ <string>1C78EAB2065D492600B07095</string>
+ <string>1CD052920623707200166675</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.scmV3</string>
+ <key>WindowString</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.breakpoints</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>no</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>168</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {168, 350}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>0</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {185, 368}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>168</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>185pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA1AED706398EBD00589147</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{190, 0}, {554, 368}}</string>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>554pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>368pt</string>
+ </dict>
+ </array>
+ <key>MajorVersion</key>
+ <integer>3</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Breakpoints</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <string>1CDDB66907F98D9800BB5817</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CA1AED706398EBD00589147</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.breakpointsV3</string>
+ <key>WindowString</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <key>WindowToolIsVisible</key>
+ <integer>1</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugAnimator</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debug Visualizer</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXNavigatorGroup</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugAnimatorV3</string>
+ <key>WindowString</key>
+ <string>100 100 700 500 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.bookmarks</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Proportion</key>
+ <string>166pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>166pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Bookmarks</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBookmarksModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowString</key>
+ <string>538 42 401 187 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.projectFormatConflicts</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Format Conflicts</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCProjectFormatConflictsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowContentMinSize</key>
+ <string>450 300</string>
+ <key>WindowString</key>
+ <string>50 850 472 307 0 0 1440 877</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.classBrowser</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>OptionsSetName</key>
+ <string>Hierarchy, all classes</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA6456E063B45B4001379D8</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Class Browser - NSObject</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ClassesFrame</key>
+ <string>{{0, 0}, {369, 96}}</string>
+ <key>ClassesTreeTableConfiguration</key>
+ <array>
+ <string>PBXClassNameColumnIdentifier</string>
+ <real>208</real>
+ <string>PBXClassBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>Frame</key>
+ <string>{{0, 0}, {616, 353}}</string>
+ <key>MembersFrame</key>
+ <string>{{0, 105}, {369, 395}}</string>
+ <key>MembersTreeTableConfiguration</key>
+ <array>
+ <string>PBXMemberTypeIconColumnIdentifier</string>
+ <real>22</real>
+ <string>PBXMemberNameColumnIdentifier</string>
+ <real>216</real>
+ <string>PBXMemberTypeColumnIdentifier</string>
+ <real>94</real>
+ <string>PBXMemberBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <integer>1</integer>
+ <key>RubberWindowFrame</key>
+ <string>597 125 616 374 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Proportion</key>
+ <string>354pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>354pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Class Browser</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXClassBrowserModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EABA065D492600B07095</string>
+ <string>1C78EABB065D492600B07095</string>
+ <string>1CA6456E063B45B4001379D8</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.classbrowser</string>
+ <key>WindowString</key>
+ <string>597 125 616 374 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.refactoring</string>
+ <key>IncludeInToolsMenu</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{0, 0}, {500, 335}</string>
+ <key>RubberWindowFrame</key>
+ <string>{0, 0}, {500, 335}</string>
+ </dict>
+ <key>Module</key>
+ <string>XCRefactoringModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Refactoring</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCRefactoringModule</string>
+ </array>
+ <key>WindowString</key>
+ <string>200 200 500 356 0 0 1920 1200 </string>
+ </dict>
+ </array>
+</dict>
+</plist>
diff --git a/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/project.pbxproj b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/project.pbxproj
new file mode 100755
index 0000000..e97226a
--- /dev/null
+++ b/plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/project.pbxproj
@@ -0,0 +1,490 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 45;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 3EEA126E089847F5002C6BFC /* CAVectorUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */; };
+ 3EEA126F089847F5002C6BFC /* CAVectorUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEA126C089847F5002C6BFC /* CAVectorUnit.h */; };
+ 3EEA1270089847F5002C6BFC /* CAVectorUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */; };
+ 8B4119B70749654200361ABE /* DitherFloat.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* DitherFloat.r */; };
+ 8BA05A6B0720730100365D66 /* DitherFloat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* DitherFloat.cpp */; };
+ 8BA05A6E0720730100365D66 /* DitherFloatVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* DitherFloatVersion.h */; };
+ 8BA05AAE072073D300365D66 /* AUBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A7F072073D200365D66 /* AUBase.cpp */; };
+ 8BA05AAF072073D300365D66 /* AUBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A80072073D200365D66 /* AUBase.h */; };
+ 8BA05AB0072073D300365D66 /* AUDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A81072073D200365D66 /* AUDispatch.cpp */; };
+ 8BA05AB1072073D300365D66 /* AUDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A82072073D200365D66 /* AUDispatch.h */; };
+ 8BA05AB2072073D300365D66 /* AUInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A83072073D200365D66 /* AUInputElement.cpp */; };
+ 8BA05AB3072073D300365D66 /* AUInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A84072073D200365D66 /* AUInputElement.h */; };
+ 8BA05AB4072073D300365D66 /* AUOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A85072073D200365D66 /* AUOutputElement.cpp */; };
+ 8BA05AB5072073D300365D66 /* AUOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A86072073D200365D66 /* AUOutputElement.h */; };
+ 8BA05AB7072073D300365D66 /* AUScopeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A88072073D200365D66 /* AUScopeElement.cpp */; };
+ 8BA05AB8072073D300365D66 /* AUScopeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A89072073D200365D66 /* AUScopeElement.h */; };
+ 8BA05AB9072073D300365D66 /* ComponentBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A8A072073D200365D66 /* ComponentBase.cpp */; };
+ 8BA05ABA072073D300365D66 /* ComponentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A8B072073D200365D66 /* ComponentBase.h */; };
+ 8BA05AC6072073D300365D66 /* AUEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */; };
+ 8BA05AC7072073D300365D66 /* AUEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A9B072073D200365D66 /* AUEffectBase.h */; };
+ 8BA05AD2072073D300365D66 /* AUBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AA7072073D200365D66 /* AUBuffer.cpp */; };
+ 8BA05AD3072073D300365D66 /* AUBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AA8072073D200365D66 /* AUBuffer.h */; };
+ 8BA05AD4072073D300365D66 /* AUDebugDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */; };
+ 8BA05AD5072073D300365D66 /* AUDebugDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */; };
+ 8BA05AD6072073D300365D66 /* AUInputFormatConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */; };
+ 8BA05AD7072073D300365D66 /* AUSilentTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */; };
+ 8BA05AD8072073D300365D66 /* AUTimestampGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */; };
+ 8BA05AE50720742100365D66 /* CAAudioChannelLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */; };
+ 8BA05AE60720742100365D66 /* CAAudioChannelLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */; };
+ 8BA05AE70720742100365D66 /* CAMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AE10720742100365D66 /* CAMutex.cpp */; };
+ 8BA05AE80720742100365D66 /* CAMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE20720742100365D66 /* CAMutex.h */; };
+ 8BA05AE90720742100365D66 /* CAStreamBasicDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */; };
+ 8BA05AEA0720742100365D66 /* CAStreamBasicDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */; };
+ 8BA05AFC072074E100365D66 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BA05AF9072074E100365D66 /* AudioToolbox.framework */; };
+ 8BA05AFD072074E100365D66 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BA05AFA072074E100365D66 /* AudioUnit.framework */; };
+ 8BA05B02072074F900365D66 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BA05B01072074F900365D66 /* CoreServices.framework */; };
+ 8BA05B070720754400365D66 /* CAAUParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05B050720754400365D66 /* CAAUParameter.cpp */; };
+ 8BA05B080720754400365D66 /* CAAUParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05B060720754400365D66 /* CAAUParameter.h */; };
+ 8BC6025C073B072D006C4272 /* DitherFloat.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* DitherFloat.h */; };
+ 8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; };
+ F7C347F00ECE5AF8008ADFB6 /* AUBaseHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F7C347EE0ECE5AF8008ADFB6 /* AUBaseHelper.cpp */; };
+ F7C347F10ECE5AF8008ADFB6 /* AUBaseHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C347EF0ECE5AF8008ADFB6 /* AUBaseHelper.h */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ 3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAVectorUnit.cpp; sourceTree = "<group>"; };
+ 3EEA126C089847F5002C6BFC /* CAVectorUnit.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAVectorUnit.h; sourceTree = "<group>"; };
+ 3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAVectorUnitTypes.h; sourceTree = "<group>"; };
+ 8B5C7FBF076FB2C200A15F61 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; };
+ 8BA05A660720730100365D66 /* DitherFloat.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DitherFloat.cpp; sourceTree = "<group>"; };
+ 8BA05A670720730100365D66 /* DitherFloat.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = DitherFloat.exp; sourceTree = "<group>"; };
+ 8BA05A680720730100365D66 /* DitherFloat.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = DitherFloat.r; sourceTree = "<group>"; };
+ 8BA05A690720730100365D66 /* DitherFloatVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DitherFloatVersion.h; sourceTree = "<group>"; };
+ 8BA05A7F072073D200365D66 /* AUBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUBase.cpp; sourceTree = "<group>"; };
+ 8BA05A80072073D200365D66 /* AUBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUBase.h; sourceTree = "<group>"; };
+ 8BA05A81072073D200365D66 /* AUDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUDispatch.cpp; sourceTree = "<group>"; };
+ 8BA05A82072073D200365D66 /* AUDispatch.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUDispatch.h; sourceTree = "<group>"; };
+ 8BA05A83072073D200365D66 /* AUInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUInputElement.cpp; sourceTree = "<group>"; };
+ 8BA05A84072073D200365D66 /* AUInputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUInputElement.h; sourceTree = "<group>"; };
+ 8BA05A85072073D200365D66 /* AUOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputElement.cpp; sourceTree = "<group>"; };
+ 8BA05A86072073D200365D66 /* AUOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUOutputElement.h; sourceTree = "<group>"; };
+ 8BA05A87072073D200365D66 /* AUResources.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = AUResources.r; sourceTree = "<group>"; };
+ 8BA05A88072073D200365D66 /* AUScopeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUScopeElement.cpp; sourceTree = "<group>"; };
+ 8BA05A89072073D200365D66 /* AUScopeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUScopeElement.h; sourceTree = "<group>"; };
+ 8BA05A8A072073D200365D66 /* ComponentBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentBase.cpp; sourceTree = "<group>"; };
+ 8BA05A8B072073D200365D66 /* ComponentBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ComponentBase.h; sourceTree = "<group>"; };
+ 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUEffectBase.cpp; sourceTree = "<group>"; };
+ 8BA05A9B072073D200365D66 /* AUEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUEffectBase.h; sourceTree = "<group>"; };
+ 8BA05AA7072073D200365D66 /* AUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUBuffer.cpp; sourceTree = "<group>"; };
+ 8BA05AA8072073D200365D66 /* AUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUBuffer.h; sourceTree = "<group>"; };
+ 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUDebugDispatcher.cpp; sourceTree = "<group>"; };
+ 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUDebugDispatcher.h; sourceTree = "<group>"; };
+ 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUInputFormatConverter.h; sourceTree = "<group>"; };
+ 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUSilentTimeout.h; sourceTree = "<group>"; };
+ 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUTimestampGenerator.h; sourceTree = "<group>"; };
+ 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayout.cpp; sourceTree = "<group>"; };
+ 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAAudioChannelLayout.h; sourceTree = "<group>"; };
+ 8BA05AE10720742100365D66 /* CAMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAMutex.cpp; sourceTree = "<group>"; };
+ 8BA05AE20720742100365D66 /* CAMutex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAMutex.h; sourceTree = "<group>"; };
+ 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamBasicDescription.cpp; sourceTree = "<group>"; };
+ 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAStreamBasicDescription.h; sourceTree = "<group>"; };
+ 8BA05AF9072074E100365D66 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = "<absolute>"; };
+ 8BA05AFA072074E100365D66 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = "<absolute>"; };
+ 8BA05B01072074F900365D66 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
+ 8BA05B050720754400365D66 /* CAAUParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUParameter.cpp; sourceTree = "<group>"; };
+ 8BA05B060720754400365D66 /* CAAUParameter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAAUParameter.h; sourceTree = "<group>"; };
+ 8BC6025B073B072D006C4272 /* DitherFloat.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DitherFloat.h; sourceTree = "<group>"; };
+ 8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
+ 8D01CCD20486CAD60068D4B7 /* DitherFloat.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DitherFloat.component; sourceTree = BUILT_PRODUCTS_DIR; };
+ F7C347EE0ECE5AF8008ADFB6 /* AUBaseHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AUBaseHelper.cpp; path = Extras/CoreAudio/AudioUnits/AUPublic/Utility/AUBaseHelper.cpp; sourceTree = SYSTEM_DEVELOPER_DIR; };
+ F7C347EF0ECE5AF8008ADFB6 /* AUBaseHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AUBaseHelper.h; path = Extras/CoreAudio/AudioUnits/AUPublic/Utility/AUBaseHelper.h; sourceTree = SYSTEM_DEVELOPER_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 8D01CCCD0486CAD60068D4B7 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8BA05AFC072074E100365D66 /* AudioToolbox.framework in Frameworks */,
+ 8BA05AFD072074E100365D66 /* AudioUnit.framework in Frameworks */,
+ 8BA05B02072074F900365D66 /* CoreServices.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 089C166AFE841209C02AAC07 /* DitherFloat */ = {
+ isa = PBXGroup;
+ children = (
+ 08FB77ADFE841716C02AAC07 /* Source */,
+ 089C167CFE841241C02AAC07 /* Resources */,
+ 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
+ 19C28FB4FE9D528D11CA2CBB /* Products */,
+ );
+ name = DitherFloat;
+ sourceTree = "<group>";
+ };
+ 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ 8B5C7FBF076FB2C200A15F61 /* CoreAudio.framework */,
+ 8BA05B01072074F900365D66 /* CoreServices.framework */,
+ 8BA05AF9072074E100365D66 /* AudioToolbox.framework */,
+ 8BA05AFA072074E100365D66 /* AudioUnit.framework */,
+ );
+ name = "External Frameworks and Libraries";
+ sourceTree = "<group>";
+ };
+ 089C167CFE841241C02AAC07 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 8D01CCD10486CAD60068D4B7 /* Info.plist */,
+ 089C167DFE841241C02AAC07 /* InfoPlist.strings */,
+ );
+ name = Resources;
+ sourceTree = "<group>";
+ };
+ 08FB77ADFE841716C02AAC07 /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ 8BA05A56072072A900365D66 /* AU Source */,
+ 8BA05AEB0720742700365D66 /* PublicUtility */,
+ 8BA05A7D072073D200365D66 /* AUPublic */,
+ );
+ name = Source;
+ sourceTree = "<group>";
+ };
+ 19C28FB4FE9D528D11CA2CBB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 8D01CCD20486CAD60068D4B7 /* DitherFloat.component */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 8BA05A56072072A900365D66 /* AU Source */ = {
+ isa = PBXGroup;
+ children = (
+ 8BC6025B073B072D006C4272 /* DitherFloat.h */,
+ 8BA05A660720730100365D66 /* DitherFloat.cpp */,
+ 8BA05A670720730100365D66 /* DitherFloat.exp */,
+ 8BA05A680720730100365D66 /* DitherFloat.r */,
+ 8BA05A690720730100365D66 /* DitherFloatVersion.h */,
+ );
+ name = "AU Source";
+ sourceTree = "<group>";
+ };
+ 8BA05A7D072073D200365D66 /* AUPublic */ = {
+ isa = PBXGroup;
+ children = (
+ 8BA05A7E072073D200365D66 /* AUBase */,
+ 8BA05A99072073D200365D66 /* OtherBases */,
+ 8BA05AA6072073D200365D66 /* Utility */,
+ );
+ name = AUPublic;
+ path = Extras/CoreAudio/AudioUnits/AUPublic;
+ sourceTree = SYSTEM_DEVELOPER_DIR;
+ };
+ 8BA05A7E072073D200365D66 /* AUBase */ = {
+ isa = PBXGroup;
+ children = (
+ 8BA05A7F072073D200365D66 /* AUBase.cpp */,
+ 8BA05A80072073D200365D66 /* AUBase.h */,
+ 8BA05A81072073D200365D66 /* AUDispatch.cpp */,
+ 8BA05A82072073D200365D66 /* AUDispatch.h */,
+ 8BA05A83072073D200365D66 /* AUInputElement.cpp */,
+ 8BA05A84072073D200365D66 /* AUInputElement.h */,
+ 8BA05A85072073D200365D66 /* AUOutputElement.cpp */,
+ 8BA05A86072073D200365D66 /* AUOutputElement.h */,
+ 8BA05A87072073D200365D66 /* AUResources.r */,
+ 8BA05A88072073D200365D66 /* AUScopeElement.cpp */,
+ 8BA05A89072073D200365D66 /* AUScopeElement.h */,
+ 8BA05A8A072073D200365D66 /* ComponentBase.cpp */,
+ 8BA05A8B072073D200365D66 /* ComponentBase.h */,
+ );
+ path = AUBase;
+ sourceTree = "<group>";
+ };
+ 8BA05A99072073D200365D66 /* OtherBases */ = {
+ isa = PBXGroup;
+ children = (
+ 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */,
+ 8BA05A9B072073D200365D66 /* AUEffectBase.h */,
+ );
+ path = OtherBases;
+ sourceTree = "<group>";
+ };
+ 8BA05AA6072073D200365D66 /* Utility */ = {
+ isa = PBXGroup;
+ children = (
+ F7C347EE0ECE5AF8008ADFB6 /* AUBaseHelper.cpp */,
+ F7C347EF0ECE5AF8008ADFB6 /* AUBaseHelper.h */,
+ 8BA05AA7072073D200365D66 /* AUBuffer.cpp */,
+ 8BA05AA8072073D200365D66 /* AUBuffer.h */,
+ 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */,
+ 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */,
+ 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */,
+ 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */,
+ 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */,
+ );
+ path = Utility;
+ sourceTree = "<group>";
+ };
+ 8BA05AEB0720742700365D66 /* PublicUtility */ = {
+ isa = PBXGroup;
+ children = (
+ 8BA05B050720754400365D66 /* CAAUParameter.cpp */,
+ 8BA05B060720754400365D66 /* CAAUParameter.h */,
+ 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */,
+ 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */,
+ 8BA05AE10720742100365D66 /* CAMutex.cpp */,
+ 8BA05AE20720742100365D66 /* CAMutex.h */,
+ 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */,
+ 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */,
+ 3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */,
+ 3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */,
+ 3EEA126C089847F5002C6BFC /* CAVectorUnit.h */,
+ );
+ name = PublicUtility;
+ path = Extras/CoreAudio/PublicUtility;
+ sourceTree = SYSTEM_DEVELOPER_DIR;
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ 8D01CCC70486CAD60068D4B7 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8BA05A6E0720730100365D66 /* DitherFloatVersion.h in Headers */,
+ 8BA05AAF072073D300365D66 /* AUBase.h in Headers */,
+ 8BA05AB1072073D300365D66 /* AUDispatch.h in Headers */,
+ 8BA05AB3072073D300365D66 /* AUInputElement.h in Headers */,
+ 8BA05AB5072073D300365D66 /* AUOutputElement.h in Headers */,
+ 8BA05AB8072073D300365D66 /* AUScopeElement.h in Headers */,
+ 8BA05ABA072073D300365D66 /* ComponentBase.h in Headers */,
+ 8BA05AC7072073D300365D66 /* AUEffectBase.h in Headers */,
+ 8BA05AD3072073D300365D66 /* AUBuffer.h in Headers */,
+ 8BA05AD5072073D300365D66 /* AUDebugDispatcher.h in Headers */,
+ 8BA05AD6072073D300365D66 /* AUInputFormatConverter.h in Headers */,
+ 8BA05AD7072073D300365D66 /* AUSilentTimeout.h in Headers */,
+ 8BA05AD8072073D300365D66 /* AUTimestampGenerator.h in Headers */,
+ 8BA05AE60720742100365D66 /* CAAudioChannelLayout.h in Headers */,
+ 8BA05AE80720742100365D66 /* CAMutex.h in Headers */,
+ 8BA05AEA0720742100365D66 /* CAStreamBasicDescription.h in Headers */,
+ 8BA05B080720754400365D66 /* CAAUParameter.h in Headers */,
+ 8BC6025C073B072D006C4272 /* DitherFloat.h in Headers */,
+ 3EEA126F089847F5002C6BFC /* CAVectorUnit.h in Headers */,
+ 3EEA1270089847F5002C6BFC /* CAVectorUnitTypes.h in Headers */,
+ F7C347F10ECE5AF8008ADFB6 /* AUBaseHelper.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ 8D01CCC60486CAD60068D4B7 /* DitherFloat */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "DitherFloat" */;
+ buildPhases = (
+ 8D01CCC70486CAD60068D4B7 /* Headers */,
+ 8D01CCC90486CAD60068D4B7 /* Resources */,
+ 8D01CCCB0486CAD60068D4B7 /* Sources */,
+ 8D01CCCD0486CAD60068D4B7 /* Frameworks */,
+ 8D01CCCF0486CAD60068D4B7 /* Rez */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = DitherFloat;
+ productInstallPath = "$(HOME)/Library/Bundles";
+ productName = DitherFloat;
+ productReference = 8D01CCD20486CAD60068D4B7 /* DitherFloat.component */;
+ productType = "com.apple.product-type.bundle";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 089C1669FE841209C02AAC07 /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = 3E4BA247089833B7007656EC /* Build configuration list for PBXProject "DitherFloat" */;
+ compatibilityVersion = "Xcode 3.1";
+ developmentRegion = English;
+ hasScannedForEncodings = 1;
+ knownRegions = (
+ English,
+ Japanese,
+ French,
+ German,
+ );
+ mainGroup = 089C166AFE841209C02AAC07 /* DitherFloat */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 8D01CCC60486CAD60068D4B7 /* DitherFloat */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 8D01CCC90486CAD60068D4B7 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXRezBuildPhase section */
+ 8D01CCCF0486CAD60068D4B7 /* Rez */ = {
+ isa = PBXRezBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8B4119B70749654200361ABE /* DitherFloat.r in Rez */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXRezBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 8D01CCCB0486CAD60068D4B7 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8BA05A6B0720730100365D66 /* DitherFloat.cpp in Sources */,
+ 8BA05AAE072073D300365D66 /* AUBase.cpp in Sources */,
+ 8BA05AB0072073D300365D66 /* AUDispatch.cpp in Sources */,
+ 8BA05AB2072073D300365D66 /* AUInputElement.cpp in Sources */,
+ 8BA05AB4072073D300365D66 /* AUOutputElement.cpp in Sources */,
+ 8BA05AB7072073D300365D66 /* AUScopeElement.cpp in Sources */,
+ 8BA05AB9072073D300365D66 /* ComponentBase.cpp in Sources */,
+ 8BA05AC6072073D300365D66 /* AUEffectBase.cpp in Sources */,
+ 8BA05AD2072073D300365D66 /* AUBuffer.cpp in Sources */,
+ 8BA05AD4072073D300365D66 /* AUDebugDispatcher.cpp in Sources */,
+ 8BA05AE50720742100365D66 /* CAAudioChannelLayout.cpp in Sources */,
+ 8BA05AE70720742100365D66 /* CAMutex.cpp in Sources */,
+ 8BA05AE90720742100365D66 /* CAStreamBasicDescription.cpp in Sources */,
+ 8BA05B070720754400365D66 /* CAAUParameter.cpp in Sources */,
+ 3EEA126E089847F5002C6BFC /* CAVectorUnit.cpp in Sources */,
+ F7C347F00ECE5AF8008ADFB6 /* AUBaseHelper.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 089C167DFE841241C02AAC07 /* InfoPlist.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 089C167EFE841241C02AAC07 /* English */,
+ );
+ name = InfoPlist.strings;
+ sourceTree = "<group>";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 3E4BA244089833B7007656EC /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ EXPORTED_SYMBOLS_FILE = DitherFloat.exp;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GENERATE_PKGINFO_FILE = YES;
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/";
+ LIBRARY_STYLE = Bundle;
+ OTHER_LDFLAGS = "-bundle";
+ OTHER_REZFLAGS = "-d ppc_$ppc -d i386_$i386 -d ppc64_$ppc64 -d x86_64_$x86_64 -I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I \"$(DEVELOPER_DIR)/Examples/CoreAudio/AudioUnits/AUPublic/AUBase\"";
+ PRODUCT_NAME = DitherFloat;
+ WRAPPER_EXTENSION = component;
+ };
+ name = Debug;
+ };
+ 3E4BA245089833B7007656EC /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = (
+ ppc,
+ i386,
+ x86_64,
+ );
+ EXPORTED_SYMBOLS_FILE = DitherFloat.exp;
+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GENERATE_PKGINFO_FILE = YES;
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/";
+ LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.4;
+ OTHER_LDFLAGS = "-bundle";
+ OTHER_REZFLAGS = "-d ppc_$ppc -d i386_$i386 -d x86_64_$x86_64 -I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I \"$(DEVELOPER_DIR)/Examples/CoreAudio/AudioUnits/AUPublic/AUBase\"";
+ PRODUCT_NAME = DitherFloat;
+ SDKROOT = macosx10.5;
+ STRIP_INSTALLED_PRODUCT = YES;
+ STRIP_STYLE = all;
+ WRAPPER_EXTENSION = component;
+ };
+ name = Release;
+ };
+ 3E4BA248089833B7007656EC /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ SDKROOT = macosx10.6;
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ name = Debug;
+ };
+ 3E4BA249089833B7007656EC /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ SDKROOT = macosx10.6;
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "DitherFloat" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3E4BA244089833B7007656EC /* Debug */,
+ 3E4BA245089833B7007656EC /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Debug;
+ };
+ 3E4BA247089833B7007656EC /* Build configuration list for PBXProject "DitherFloat" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3E4BA248089833B7007656EC /* Debug */,
+ 3E4BA249089833B7007656EC /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Debug;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 089C1669FE841209C02AAC07 /* Project object */;
+}
diff --git a/plugins/MacAU/DitherFloat/DitherFloatVersion.h b/plugins/MacAU/DitherFloat/DitherFloatVersion.h
new file mode 100755
index 0000000..b9f4b9b
--- /dev/null
+++ b/plugins/MacAU/DitherFloat/DitherFloatVersion.h
@@ -0,0 +1,58 @@
+/*
+* File: DitherFloatVersion.h
+*
+* Version: 1.0
+*
+* Created: 1/11/19
+*
+* Copyright: Copyright © 2019 Airwindows, All Rights Reserved
+*
+* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
+* consideration of your agreement to the following terms, and your use, installation, modification
+* or redistribution of this Apple software constitutes acceptance of these terms. If you do
+* not agree with these terms, please do not use, install, modify or redistribute this Apple
+* software.
+*
+* In consideration of your agreement to abide by the following terms, and subject to these terms,
+* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
+* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
+* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
+* redistribute the Apple Software in its entirety and without modifications, you must retain this
+* notice and the following text and disclaimers in all such redistributions of the Apple Software.
+* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
+* endorse or promote products derived from the Apple Software without specific prior written
+* permission from Apple. Except as expressly stated in this notice, no other rights or
+* licenses, express or implied, are granted by Apple herein, including but not limited to any
+* patent rights that may be infringed by your derivative works or by other works in which the
+* Apple Software may be incorporated.
+*
+* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
+* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
+* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
+* OR IN COMBINATION WITH YOUR PRODUCTS.
+*
+* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
+* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
+* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
+* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*/
+#ifndef __DitherFloatVersion_h__
+#define __DitherFloatVersion_h__
+
+
+#ifdef DEBUG
+ #define kDitherFloatVersion 0xFFFFFFFF
+#else
+ #define kDitherFloatVersion 0x00010000
+#endif
+
+//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
+#define DitherFloat_COMP_MANF 'Dthr'
+#define DitherFloat_COMP_SUBTYPE 'dthf'
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
+
+#endif
+
diff --git a/plugins/MacAU/DitherFloat/English.lproj/InfoPlist.strings b/plugins/MacAU/DitherFloat/English.lproj/InfoPlist.strings
new file mode 100755
index 0000000..bb9c5d5
--- /dev/null
+++ b/plugins/MacAU/DitherFloat/English.lproj/InfoPlist.strings
Binary files differ
diff --git a/plugins/MacAU/DitherFloat/Info.plist b/plugins/MacAU/DitherFloat/Info.plist
new file mode 100755
index 0000000..01dc683
--- /dev/null
+++ b/plugins/MacAU/DitherFloat/Info.plist
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.airwindows.audiounit.${PRODUCT_NAME:identifier}</string>
+ <key>CFBundleName</key>
+ <string>${PROJECTNAMEASIDENTIFIER}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>BNDL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>DthX</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>CSResourcesFileMapped</key>
+ <true/>
+</dict>
+</plist>
diff --git a/plugins/MacAU/DitherFloat/version.plist b/plugins/MacAU/DitherFloat/version.plist
new file mode 100755
index 0000000..11edf8a
--- /dev/null
+++ b/plugins/MacAU/DitherFloat/version.plist
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>BuildVersion</key>
+ <string>3</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>ProjectName</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>SourceVersion</key>
+ <string>590000</string>
+</dict>
+</plist>
diff --git a/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser
index ae10e21..e01742c 100755
--- a/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser
@@ -49,24 +49,34 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 566513740;
- PBXWorkspaceStateSaveDate = 566513740;
+ PBXPerProjectTemplateStateSaveDate = 569599304;
+ PBXWorkspaceStateSaveDate = 569599304;
};
perUserProjectItems = {
- 8BBB304421B70E5D00825986 /* PBXTextBookmark */ = 8BBB304421B70E5D00825986 /* PBXTextBookmark */;
- 8BBB329D21C4508800825986 /* PlistBookmark */ = 8BBB329D21C4508800825986 /* PlistBookmark */;
+ 8B792AF321F36563006E9731 /* PlistBookmark */ = 8B792AF321F36563006E9731 /* PlistBookmark */;
8BBB32A221C4509A00825986 /* PlistBookmark */ = 8BBB32A221C4509A00825986 /* PlistBookmark */;
- 8BBB32A621C4509A00825986 /* PBXTextBookmark */ = 8BBB32A621C4509A00825986 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B792AF321F36563006E9731 /* PlistBookmark */ = {
+ isa = PlistBookmark;
+ fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
+ fallbackIsa = PBXBookmark;
+ isK = 0;
+ kPath = (
+ CFBundleName,
+ );
+ name = /Users/christopherjohnson/Desktop/MacAU/DitherMeDiskers/Info.plist;
+ rLen = 0;
+ rLoc = 9223372036854775807;
+ };
8BA05A660720730100365D66 /* DitherMeDiskers.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1082, 2964}}";
- sepNavSelRange = "{8372, 0}";
- sepNavVisRange = "{6754, 1793}";
+ sepNavIntBoundsRect = "{{0, 0}, {1082, 2938}}";
+ sepNavSelRange = "{7589, 0}";
+ sepNavVisRange = "{6703, 1843}";
sepNavWindowFrame = "{{15, 39}, {1129, 834}}";
};
};
@@ -78,28 +88,6 @@
sepNavWindowFrame = "{{15, 39}, {1129, 834}}";
};
};
- 8BBB304421B70E5D00825986 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* DitherMeDiskers.cpp */;
- name = "DitherMeDiskers.cpp: 187";
- rLen = 0;
- rLoc = 8466;
- rType = 0;
- vrLen = 1811;
- vrLoc = 6559;
- };
- 8BBB329D21C4508800825986 /* PlistBookmark */ = {
- isa = PlistBookmark;
- fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
- fallbackIsa = PBXBookmark;
- isK = 0;
- kPath = (
- CFBundleName,
- );
- name = /Users/christopherjohnson/Desktop/MacAU/DitherMeDiskers/Info.plist;
- rLen = 0;
- rLoc = 9223372036854775807;
- };
8BBB32A221C4509A00825986 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
@@ -112,16 +100,6 @@
rLen = 26;
rLoc = 0;
};
- 8BBB32A621C4509A00825986 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* DitherMeDiskers.cpp */;
- name = "DitherMeDiskers.cpp: 192";
- rLen = 0;
- rLoc = 8372;
- rType = 0;
- vrLen = 1793;
- vrLoc = 6754;
- };
8BC6025B073B072D006C4272 /* DitherMeDiskers.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1082, 1664}}";
diff --git a/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3
index 663d212..214721f 100755
--- a/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3
@@ -222,48 +222,7 @@
</dict>
</array>
<key>OpenEditors</key>
- <array>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8BBB303C21B70E4F00825986</string>
- <key>PBXProjectModuleLabel</key>
- <string>DitherMeDiskers.cpp</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8BBB303D21B70E4F00825986</string>
- <key>PBXProjectModuleLabel</key>
- <string>DitherMeDiskers.cpp</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>8BBB32A621C4509A00825986</string>
- <key>history</key>
- <array>
- <string>8BBB304421B70E5D00825986</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {1129, 737}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>15 95 1129 778 0 0 1440 878 </string>
- </dict>
- </dict>
- </array>
+ <array/>
<key>PerspectiveWidths</key>
<array>
<integer>841</integer>
@@ -297,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -365,7 +326,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>16 205 841 654 0 0 1440 878 </string>
+ <string>67 204 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -393,10 +354,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBB32A221C4509A00825986</string>
+ <string>8B792AF321F36563006E9731</string>
<key>history</key>
<array>
- <string>8BBB329D21C4508800825986</string>
+ <string>8BBB32A221C4509A00825986</string>
</array>
</dict>
<key>SplitCount</key>
@@ -410,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 229}}</string>
+ <string>{{0, 0}, {531, 216}}</string>
<key>RubberWindowFrame</key>
- <string>16 205 841 654 0 0 1440 878 </string>
+ <string>67 204 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>229pt</string>
+ <string>216pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>379pt</string>
+ <string>392pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -435,7 +396,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 352}}</string>
+ <string>{{10, 27}, {531, 365}}</string>
+ <key>RubberWindowFrame</key>
+ <string>67 204 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -490,8 +453,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {531, 352}}</string>
- <key>RubberWindowFrame</key>
- <string>16 205 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -519,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBB32A321C4509A00825986</string>
+ <string>8B792AF421F36563006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBB32A421C4509A00825986</string>
+ <string>8B792AF521F36563006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BBB32A521C4509A00825986</string>
+ <string>8B792AF621F36563006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -696,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>566513818.26343</real>
+ <real>569599331.99398303</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -713,11 +674,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBB303C21B70E4F00825986</string>
<string>/Users/christopherjohnson/Desktop/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>16 205 841 654 0 0 1440 878 </string>
+ <string>67 204 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.cpp b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.cpp
index a9c5963..7651fda 100755
--- a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.cpp
+++ b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.cpp
@@ -177,10 +177,10 @@ void DitherMeTimbers::DitherMeTimbersKernel::Process( const Float32 *inSourceP
if ((lastSample+lastSample) >= (inputSample+lastSample2)) outputSample = floor(lastSample);
else outputSample = floor(lastSample+1.0); //round down or up based on whether it softens treble angles
-
+
lastSample2 = lastSample;
lastSample = inputSample; //we retain three samples in a row
-
+
noiseShaping += outputSample;
noiseShaping -= lastSample;
@@ -199,6 +199,3 @@ void DitherMeTimbers::DitherMeTimbersKernel::Process( const Float32 *inSourceP
destP += inNumChannels;
}
}
-
-
-
diff --git a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.h b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.h
index 28c3eb4..abc959d 100755
--- a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.h
+++ b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.h
@@ -119,8 +119,8 @@ public:
private:
long double noiseShaping;
- Float64 lastSample;
- Float64 lastSample2;
+ long double lastSample;
+ long double lastSample2;
};
};
diff --git a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser
index 7f19694..45e9d2e 100755
--- a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser
@@ -51,13 +51,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 566513924;
- PBXWorkspaceStateSaveDate = 566513924;
+ PBXPerProjectTemplateStateSaveDate = 569599350;
+ PBXWorkspaceStateSaveDate = 569599350;
};
perUserProjectItems = {
8B416D5621B6000500DD5013 /* PlistBookmark */ = 8B416D5621B6000500DD5013 /* PlistBookmark */;
- 8BBB329121C4504400825986 /* PBXTextBookmark */ = 8BBB329121C4504400825986 /* PBXTextBookmark */;
- 8BBB32D021C4524300825986 /* PBXTextBookmark */ = 8BBB32D021C4524300825986 /* PBXTextBookmark */;
+ 8B792B0221F3657A006E9731 /* PBXTextBookmark */ = 8B792B0221F3657A006E9731 /* PBXTextBookmark */;
+ 8B792B0821F365A0006E9731 /* PBXTextBookmark */ = 8B792B0821F365A0006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -75,11 +75,31 @@
rLen = 0;
rLoc = 9223372036854775808;
};
+ 8B792B0221F3657A006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* DitherMeTimbers.cpp */;
+ name = "DitherMeTimbers.cpp: 202";
+ rLen = 0;
+ rLoc = 8558;
+ rType = 0;
+ vrLen = 152;
+ vrLoc = 8165;
+ };
+ 8B792B0821F365A0006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* DitherMeTimbers.cpp */;
+ name = "DitherMeTimbers.cpp: 202";
+ rLen = 0;
+ rLoc = 8558;
+ rType = 0;
+ vrLen = 335;
+ vrLoc = 7733;
+ };
8BA05A660720730100365D66 /* DitherMeTimbers.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {789, 2808}}";
- sepNavSelRange = "{8279, 0}";
- sepNavVisRange = "{8161, 245}";
+ sepNavIntBoundsRect = "{{0, 0}, {789, 2834}}";
+ sepNavSelRange = "{8558, 0}";
+ sepNavVisRange = "{7733, 335}";
sepNavWindowFrame = "{{311, 44}, {1129, 834}}";
};
};
@@ -91,31 +111,11 @@
sepNavWindowFrame = "{{311, 44}, {1129, 834}}";
};
};
- 8BBB329121C4504400825986 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* DitherMeTimbers.cpp */;
- name = "DitherMeTimbers.cpp: 188";
- rLen = 0;
- rLoc = 8279;
- rType = 0;
- vrLen = 252;
- vrLoc = 8161;
- };
- 8BBB32D021C4524300825986 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* DitherMeTimbers.cpp */;
- name = "DitherMeTimbers.cpp: 188";
- rLen = 0;
- rLoc = 8279;
- rType = 0;
- vrLen = 245;
- vrLoc = 8161;
- };
8BC6025B073B072D006C4272 /* DitherMeTimbers.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1082, 1690}}";
- sepNavSelRange = "{4971, 45}";
- sepNavVisRange = "{2662, 1719}";
+ sepNavSelRange = "{4943, 81}";
+ sepNavVisRange = "{3376, 1757}";
sepNavWindowFrame = "{{311, 44}, {1129, 834}}";
};
};
diff --git a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3
index 349f556..f9c57cc 100755
--- a/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3
@@ -302,7 +302,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -354,11 +354,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBB32D021C4524300825986</string>
+ <string>8B792B0821F365A0006E9731</string>
<key>history</key>
<array>
<string>8B416D5621B6000500DD5013</string>
- <string>8BBB329121C4504400825986</string>
+ <string>8B792B0221F3657A006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +372,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 158}}</string>
+ <string>{{0, 0}, {531, 109}}</string>
<key>RubberWindowFrame</key>
<string>594 193 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>158pt</string>
+ <string>109pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>450pt</string>
+ <string>499pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +397,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 423}}</string>
- <key>RubberWindowFrame</key>
- <string>594 193 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 472}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +451,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 408}}</string>
+ <string>{{10, 27}, {531, 472}}</string>
+ <key>RubberWindowFrame</key>
+ <string>594 193 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -481,11 +481,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBB32D121C4524300825986</string>
+ <string>8B792B0921F365A0006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBB32D221C4524300825986</string>
+ <string>8B792B0A21F365A0006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BBB32D321C4524300825986</string>
+ <string>8B792B0B21F365A0006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +658,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>566514243.55308604</real>
+ <real>569599392.67723703</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
diff --git a/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser
index 3c31d7a..bb2bf83 100755
--- a/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser
@@ -51,18 +51,28 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 557696136;
- PBXWorkspaceStateSaveDate = 557696136;
+ PBXPerProjectTemplateStateSaveDate = 569598344;
+ PBXWorkspaceStateSaveDate = 569598344;
};
perUserProjectItems = {
+ 8B792AE321F361B2006E9731 /* PBXTextBookmark */ = 8B792AE321F361B2006E9731 /* PBXTextBookmark */;
8B913FA3213DBD2F00BA6EEC /* PBXTextBookmark */ = 8B913FA3213DBD2F00BA6EEC /* PBXTextBookmark */;
- 8B913FE1213DC54C00BA6EEC /* PBXTextBookmark */ = 8B913FE1213DC54C00BA6EEC /* PBXTextBookmark */;
8B913FEB213DC5A500BA6EEC /* PBXTextBookmark */ = 8B913FEB213DC5A500BA6EEC /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B792AE321F361B2006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* Ditherbox.h */;
+ name = "Ditherbox.h: 216";
+ rLen = 0;
+ rLoc = 8486;
+ rType = 0;
+ vrLen = 206;
+ vrLoc = 132;
+ };
8B913FA3213DBD2F00BA6EEC /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Ditherbox.cpp */;
@@ -73,16 +83,6 @@
vrLen = 342;
vrLoc = 10516;
};
- 8B913FE1213DC54C00BA6EEC /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Ditherbox.h */;
- name = "Ditherbox.h: 216";
- rLen = 0;
- rLoc = 8486;
- rType = 0;
- vrLen = 209;
- vrLoc = 129;
- };
8B913FEB213DC5A500BA6EEC /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Ditherbox.h */;
@@ -95,9 +95,9 @@
};
8BA05A660720730100365D66 /* Ditherbox.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {978, 11076}}";
+ sepNavIntBoundsRect = "{{0, 0}, {978, 10829}}";
sepNavSelRange = "{11237, 0}";
- sepNavVisRange = "{1680, 2418}";
+ sepNavVisRange = "{29519, 1747}";
sepNavWindowFrame = "{{471, 45}, {816, 833}}";
};
};
@@ -127,9 +127,9 @@
};
8BC6025B073B072D006C4272 /* Ditherbox.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 3003}}";
+ sepNavIntBoundsRect = "{{0, 0}, {803, 2990}}";
sepNavSelRange = "{8486, 0}";
- sepNavVisRange = "{129, 209}";
+ sepNavVisRange = "{132, 206}";
sepNavWindowFrame = "{{419, 78}, {1021, 800}}";
};
};
diff --git a/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3
index efe3540..2486243 100755
--- a/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -350,11 +352,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B913FEB213DC5A500BA6EEC</string>
+ <string>8B792AE321F361B2006E9731</string>
<key>history</key>
<array>
<string>8B913FA3213DBD2F00BA6EEC</string>
- <string>8B913FE1213DC54C00BA6EEC</string>
+ <string>8B913FEB213DC5A500BA6EEC</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {603, 51}}</string>
<key>RubberWindowFrame</key>
<string>468 237 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>390pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +395,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 363}}</string>
+ <key>RubberWindowFrame</key>
+ <string>468 237 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -448,8 +452,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 345}}</string>
- <key>RubberWindowFrame</key>
- <string>468 237 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -477,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B913FB1213DC48A00BA6EEC</string>
+ <string>8B792AE421F361B2006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B913FB2213DC48A00BA6EEC</string>
+ <string>8B792AE521F361B2006E9731</string>
<string>8B9E7EE61DDE28AC006035FA</string>
- <string>8B913FB3213DC48A00BA6EEC</string>
+ <string>8B792AE621F361B2006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>557696421.06510198</real>
+ <real>569598386.47118104</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
diff --git a/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser
index 76f3628..0076005 100755
--- a/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser
@@ -49,15 +49,15 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528455820;
- PBXWorkspaceStateSaveDate = 528455820;
+ PBXPerProjectTemplateStateSaveDate = 569599414;
+ PBXWorkspaceStateSaveDate = 569599414;
};
perUserProjectItems = {
8B753DD21E4005B300347157 /* PlistBookmark */ = 8B753DD21E4005B300347157 /* PlistBookmark */;
- 8B9D64691F7C8512007AB60F /* PBXTextBookmark */ = 8B9D64691F7C8512007AB60F /* PBXTextBookmark */;
- 8B9D73DB1F7F98B0007AB60F /* PBXTextBookmark */ = 8B9D73DB1F7F98B0007AB60F /* PBXTextBookmark */;
+ 8B792B1921F365CE006E9731 /* PBXTextBookmark */ = 8B792B1921F365CE006E9731 /* PBXTextBookmark */;
+ 8B913F30213DB8AA00BA6EEC /* PBXTextBookmark */ = 8B913F30213DB8AA00BA6EEC /* PBXTextBookmark */;
+ 8B913FCD213DC4EE00BA6EEC /* PBXTextBookmark */ = 8B913FCD213DC4EE00BA6EEC /* PBXTextBookmark */;
8BB6DE001E5A8BDB00F3CD1D /* PBXTextBookmark */ = 8BB6DE001E5A8BDB00F3CD1D /* PBXTextBookmark */;
- 8BB6DE011E5A8BDB00F3CD1D /* PBXTextBookmark */ = 8BB6DE011E5A8BDB00F3CD1D /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -75,39 +75,49 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B9D64691F7C8512007AB60F /* PBXTextBookmark */ = {
+ 8B792B1921F365CE006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A690720730100365D66 /* DoublePaulVersion.h */;
- name = "DoublePaulVersion.h: 54";
+ fRef = 8BA05A660720730100365D66 /* DoublePaul.cpp */;
+ name = "DoublePaul.cpp: 219";
rLen = 0;
- rLoc = 2901;
+ rLoc = 9846;
rType = 0;
- vrLen = 357;
- vrLoc = 2598;
+ vrLen = 152;
+ vrLoc = 9879;
};
- 8B9D73DB1F7F98B0007AB60F /* PBXTextBookmark */ = {
+ 8B913F30213DB8AA00BA6EEC /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* DoublePaulVersion.h */;
name = "DoublePaulVersion.h: 54";
rLen = 0;
rLoc = 2901;
rType = 0;
- vrLen = 354;
- vrLoc = 2601;
+ vrLen = 290;
+ vrLoc = 2665;
+ };
+ 8B913FCD213DC4EE00BA6EEC /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* DoublePaul.cpp */;
+ name = "DoublePaul.cpp: 219";
+ rLen = 0;
+ rLoc = 9846;
+ rType = 0;
+ vrLen = 474;
+ vrLoc = 8093;
};
8BA05A660720730100365D66 /* DoublePaul.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {876, 3159}}";
- sepNavSelRange = "{7552, 0}";
- sepNavVisRange = "{6507, 2681}";
- sepNavWindowFrame = "{{517, 41}, {923, 837}}";
+ sepNavIntBoundsRect = "{{0, 0}, {677, 3068}}";
+ sepNavSelRange = "{9846, 0}";
+ sepNavVisRange = "{9879, 152}";
+ sepNavWindowFrame = "{{42, 39}, {923, 837}}";
};
};
8BA05A690720730100365D66 /* DoublePaulVersion.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 819}}";
+ sepNavIntBoundsRect = "{{0, 0}, {824, 858}}";
sepNavSelRange = "{2901, 0}";
- sepNavVisRange = "{2601, 354}";
+ sepNavVisRange = "{2665, 290}";
sepNavWindowFrame = "{{15, 39}, {923, 837}}";
};
};
@@ -121,22 +131,12 @@
vrLen = 412;
vrLoc = 4667;
};
- 8BB6DE011E5A8BDB00F3CD1D /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* DoublePaul.cpp */;
- name = "DoublePaul.cpp: 193";
- rLen = 0;
- rLoc = 9846;
- rType = 0;
- vrLen = 595;
- vrLoc = 8025;
- };
8BC6025B073B072D006C4272 /* DoublePaul.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {894, 1703}}";
sepNavSelRange = "{4958, 19}";
- sepNavVisRange = "{1786, 1948}";
- sepNavWindowFrame = "{{509, 12}, {923, 837}}";
+ sepNavVisRange = "{3359, 1727}";
+ sepNavWindowFrame = "{{38, 12}, {923, 837}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3
index a45f5ce..9124a10 100755
--- a/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3
@@ -325,7 +325,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>328 180 841 654 0 0 1440 878 </string>
+ <string>19 213 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -341,7 +341,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>DoublePaulVersion.h</string>
+ <string>DoublePaul.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,17 +349,17 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>DoublePaulVersion.h</string>
+ <string>DoublePaul.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D73DB1F7F98B0007AB60F</string>
+ <string>8B792B1921F365CE006E9731</string>
<key>history</key>
<array>
<string>8B753DD21E4005B300347157</string>
<string>8BB6DE001E5A8BDB00F3CD1D</string>
- <string>8BB6DE011E5A8BDB00F3CD1D</string>
- <string>8B9D64691F7C8512007AB60F</string>
+ <string>8B913F30213DB8AA00BA6EEC</string>
+ <string>8B913FCD213DC4EE00BA6EEC</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +373,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 202}}</string>
+ <string>{{0, 0}, {531, 158}}</string>
<key>RubberWindowFrame</key>
- <string>328 180 841 654 0 0 1440 878 </string>
+ <string>19 213 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>202pt</string>
+ <string>158pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>406pt</string>
+ <string>450pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +398,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 379}}</string>
+ <string>{{10, 27}, {531, 423}}</string>
<key>RubberWindowFrame</key>
- <string>328 180 841 654 0 0 1440 878 </string>
+ <string>19 213 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -482,11 +482,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D73DC1F7F98B0007AB60F</string>
+ <string>8B792B1A21F365CE006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D73DD1F7F98B0007AB60F</string>
+ <string>8B792B1B21F365CE006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D73DE1F7F98B0007AB60F</string>
+ <string>8B792B1C21F365CE006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +659,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528455856.515679</real>
+ <real>569599438.68596196</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -676,11 +676,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D73DF1F7F98B0007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/DoublePaul/DoublePaul.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>328 180 841 654 0 0 1440 878 </string>
+ <string>19 213 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Drive/Drive.cpp b/plugins/MacAU/Drive/Drive.cpp
index 179d9ae..ab3c0bc 100755
--- a/plugins/MacAU/Drive/Drive.cpp
+++ b/plugins/MacAU/Drive/Drive.cpp
@@ -184,8 +184,7 @@ void Drive::DriveKernel::Reset()
{
iirSampleA = 0.0;
iirSampleB = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
+ fpNShape = 0.0;
fpFlip = true;
}
@@ -220,10 +219,6 @@ void Drive::DriveKernel::Process( const Float32 *inSourceP,
Float64 glitch = 0.60;
Float64 out;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
-
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
if (inputSample<1.2e-38 && -inputSample<1.2e-38) {
@@ -282,20 +277,13 @@ void Drive::DriveKernel::Process( const Float32 *inSourceP,
if (wet < 1.0) inputSample = (drySample * dry)+(inputSample*wet);
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Drive/Drive.exp b/plugins/MacAU/Drive/Drive.exp
index f23aad0..caa6fe9 100755
--- a/plugins/MacAU/Drive/Drive.exp
+++ b/plugins/MacAU/Drive/Drive.exp
@@ -1 +1 @@
-_DriveEntry \ No newline at end of file
+_DriveEntry
diff --git a/plugins/MacAU/Drive/Drive.h b/plugins/MacAU/Drive/Drive.h
index 83be2b2..0e4af2a 100755
--- a/plugins/MacAU/Drive/Drive.h
+++ b/plugins/MacAU/Drive/Drive.h
@@ -139,8 +139,7 @@ public:
private:
Float64 iirSampleA;
Float64 iirSampleB;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
+ long double fpNShape;
bool fpFlip;
};
};
diff --git a/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.pbxuser
index 948474f..8cd024d 100755
--- a/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 559395484;
- PBXWorkspaceStateSaveDate = 559395484;
+ PBXPerProjectTemplateStateSaveDate = 569599476;
+ PBXWorkspaceStateSaveDate = 569599476;
};
perUserProjectItems = {
8B3D790A1DB4057D00247AD5 /* PBXTextBookmark */ = 8B3D790A1DB4057D00247AD5 /* PBXTextBookmark */;
- 8BE626152157B2BF00E4E476 /* PBXTextBookmark */ = 8BE626152157B2BF00E4E476 /* PBXTextBookmark */;
- 8BE626162157B2BF00E4E476 /* PBXTextBookmark */ = 8BE626162157B2BF00E4E476 /* PBXTextBookmark */;
+ 8B792B2A21F36661006E9731 /* PBXTextBookmark */ = 8B792B2A21F36661006E9731 /* PBXTextBookmark */;
+ 8B792B3021F36679006E9731 /* PBXTextBookmark */ = 8B792B3021F36679006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -71,12 +71,40 @@
vrLen = 59;
vrLoc = 0;
};
+ 8B792B2A21F36661006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Drive.cpp */;
+ name = "Drive.cpp: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 64;
+ vrLoc = 0;
+ };
+ 8B792B3021F36679006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Drive.cpp */;
+ name = "Drive.cpp: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 64;
+ vrLoc = 0;
+ };
8BA05A660720730100365D66 /* Drive.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 4056}}";
+ sepNavIntBoundsRect = "{{0, 0}, {803, 3991}}";
sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 127}";
- sepNavWindowFrame = "{{537, 59}, {895, 819}}";
+ sepNavVisRange = "{0, 64}";
+ sepNavWindowFrame = "{{423, 59}, {895, 819}}";
+ };
+ };
+ 8BA05A670720730100365D66 /* Drive.exp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}";
+ sepNavSelRange = "{12, 0}";
+ sepNavVisRange = "{0, 12}";
+ sepNavWindowFrame = "{{15, 51}, {1300, 822}}";
};
};
8BA05A690720730100365D66 /* DriveVersion.h */ = {
@@ -89,9 +117,9 @@
};
8BC6025B073B072D006C4272 /* Drive.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {856, 1963}}";
- sepNavSelRange = "{5553, 57}";
- sepNavVisRange = "{4498, 1221}";
+ sepNavIntBoundsRect = "{{0, 0}, {856, 2184}}";
+ sepNavSelRange = "{5576, 0}";
+ sepNavVisRange = "{4496, 1205}";
sepNavWindowFrame = "{{517, 162}, {903, 692}}";
};
};
@@ -109,26 +137,6 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BE626152157B2BF00E4E476 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Drive.cpp */;
- name = "Drive.cpp: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 127;
- vrLoc = 0;
- };
- 8BE626162157B2BF00E4E476 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Drive.cpp */;
- name = "Drive.cpp: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 127;
- vrLoc = 0;
- };
8D01CCC60486CAD60068D4B7 /* Drive */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3
index 09b8cfc..a684ee9 100755
--- a/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -300,7 +298,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>5</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>624 381 810 487 0 0 1440 878 </string>
+ <string>511 370 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,11 +350,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BE626162157B2BF00E4E476</string>
+ <string>8B792B3021F36679006E9731</string>
<key>history</key>
<array>
<string>8B3D790A1DB4057D00247AD5</string>
- <string>8BE626152157B2BF00E4E476</string>
+ <string>8B792B2A21F36661006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>624 381 810 487 0 0 1440 878 </string>
+ <string>511 370 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>624 381 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 297}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>511 370 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BE626172157B2BF00E4E476</string>
+ <string>8B792B3121F36679006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BE626182157B2BF00E4E476</string>
+ <string>8B792B3221F36679006E9731</string>
<string>8BE3FFB51DAAD42E00A5AAF5</string>
- <string>8BE626192157B2BF00E4E476</string>
+ <string>8B792B3321F36679006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>559395519.27228796</real>
+ <real>569599609.11398804</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,10 +651,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
+ <string>8B792B3421F36679006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Drive/Drive.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>624 381 810 487 0 0 1440 878 </string>
+ <string>511 370 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/DrumSlam/DrumSlam.cpp b/plugins/MacAU/DrumSlam/DrumSlam.cpp
index 50053f3..8002ede 100755
--- a/plugins/MacAU/DrumSlam/DrumSlam.cpp
+++ b/plugins/MacAU/DrumSlam/DrumSlam.cpp
@@ -183,9 +183,8 @@ void DrumSlam::DrumSlamKernel::Reset()
iirSampleG = 0.0;
iirSampleH = 0.0;
lastSample = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
+ fpFlip = false;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -216,8 +215,6 @@ void DrumSlam::DrumSlamKernel::Process( const Float32 *inSourceP,
Float64 out = GetParameter( kParam_Two );
Float64 wet = GetParameter( kParam_Three );
Float64 dry = 1.0 - wet;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (nSampleFrames-- > 0) {
long double inputSample = *sourceP;
@@ -320,21 +317,13 @@ void DrumSlam::DrumSlamKernel::Process( const Float32 *inSourceP,
if (wet < 1.0) {
inputSample = (drySample * dry)+(inputSample*wet);
}
-
- //noise shaping to 32-bit floating point
- Float32 fpTemp;
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels;
diff --git a/plugins/MacAU/DrumSlam/DrumSlam.h b/plugins/MacAU/DrumSlam/DrumSlam.h
index 2222f01..99d3058 100755
--- a/plugins/MacAU/DrumSlam/DrumSlam.h
+++ b/plugins/MacAU/DrumSlam/DrumSlam.h
@@ -140,8 +140,7 @@ public:
Float64 iirSampleG;
Float64 iirSampleH;
Float64 lastSample;
- long double fpNShapeA;
- long double fpNShapeB;
+ long double fpNShape;
bool fpFlip;
};
};
diff --git a/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser
index 549e398..fed09c8 100755
--- a/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser
@@ -49,54 +49,65 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 547825387;
- PBXWorkspaceStateSaveDate = 547825387;
+ PBXPerProjectTemplateStateSaveDate = 569599635;
+ PBXWorkspaceStateSaveDate = 569599635;
};
perUserProjectItems = {
+ 8B792B4421F36707006E9731 /* PBXTextBookmark */ = 8B792B4421F36707006E9731 /* PBXTextBookmark */;
+ 8B792B4521F36707006E9731 /* PBXTextBookmark */ = 8B792B4521F36707006E9731 /* PBXTextBookmark */;
+ 8B792B5221F36735006E9731 /* PBXTextBookmark */ = 8B792B5221F36735006E9731 /* PBXTextBookmark */;
8B7E3F2E20A72F9500482CB5 /* PBXTextBookmark */ = 8B7E3F2E20A72F9500482CB5 /* PBXTextBookmark */;
- 8B7E3F2F20A72F9500482CB5 /* PBXTextBookmark */ = 8B7E3F2F20A72F9500482CB5 /* PBXTextBookmark */;
- 8B7E3F3020A72F9500482CB5 /* PBXTextBookmark */ = 8B7E3F3020A72F9500482CB5 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B7E3F2E20A72F9500482CB5 /* PBXTextBookmark */ = {
+ 8B792B4421F36707006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A690720730100365D66 /* DrumSlamVersion.h */;
- name = "DrumSlamVersion.h: 1";
+ fRef = 8BA05A660720730100365D66 /* DrumSlam.cpp */;
+ name = "DrumSlam.cpp: 314";
rLen = 0;
- rLoc = 0;
+ rLoc = 13827;
rType = 0;
- vrLen = 397;
- vrLoc = 3021;
+ vrLen = 237;
+ vrLoc = 13982;
};
- 8B7E3F2F20A72F9500482CB5 /* PBXTextBookmark */ = {
+ 8B792B4521F36707006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* DrumSlam.cpp */;
- name = "DrumSlam.cpp: 329";
+ fRef = 8BC6025B073B072D006C4272 /* DrumSlam.h */;
+ name = "DrumSlam.h: 143";
rLen = 0;
- rLoc = 13944;
+ rLoc = 5485;
rType = 0;
- vrLen = 318;
- vrLoc = 13904;
+ vrLen = 119;
+ vrLoc = 5359;
};
- 8B7E3F3020A72F9500482CB5 /* PBXTextBookmark */ = {
+ 8B792B5221F36735006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* DrumSlam.cpp */;
- name = "DrumSlam.cpp: 318";
+ fRef = 8BC6025B073B072D006C4272 /* DrumSlam.h */;
+ name = "DrumSlam.h: 144";
rLen = 0;
- rLoc = 13944;
+ rLoc = 5485;
rType = 0;
- vrLen = 201;
- vrLoc = 14073;
+ vrLen = 131;
+ vrLoc = 5359;
+ };
+ 8B7E3F2E20A72F9500482CB5 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A690720730100365D66 /* DrumSlamVersion.h */;
+ name = "DrumSlamVersion.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 397;
+ vrLoc = 3021;
};
8BA05A660720730100365D66 /* DrumSlam.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {852, 4810}}";
- sepNavSelRange = "{13944, 0}";
- sepNavVisRange = "{14073, 201}";
- sepNavWindowFrame = "{{291, 66}, {1145, 812}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1098, 4472}}";
+ sepNavSelRange = "{13975, 0}";
+ sepNavVisRange = "{12035, 1944}";
+ sepNavWindowFrame = "{{208, 66}, {1145, 812}}";
};
};
8BA05A670720730100365D66 /* DrumSlam.exp */ = {
@@ -116,10 +127,10 @@
};
8BC6025B073B072D006C4272 /* DrumSlam.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {960, 1976}}";
- sepNavSelRange = "{5249, 198}";
- sepNavVisRange = "{1784, 1800}";
- sepNavWindowFrame = "{{673, 59}, {1007, 819}}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 2132}}";
+ sepNavSelRange = "{5485, 0}";
+ sepNavVisRange = "{5359, 131}";
+ sepNavWindowFrame = "{{433, 59}, {1007, 819}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3
index 5b5c6ba..882f5c2 100755
--- a/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>618 344 810 487 0 0 1440 878 </string>
+ <string>526 350 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -340,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BBDB99F208BFC67006F0D04</string>
<key>PBXProjectModuleLabel</key>
- <string>DrumSlam.cpp</string>
+ <string>DrumSlam.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -348,15 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BBDB9A0208BFC67006F0D04</string>
<key>PBXProjectModuleLabel</key>
- <string>DrumSlam.cpp</string>
+ <string>DrumSlam.h</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B7E3F3020A72F9500482CB5</string>
+ <string>8B792B5221F36735006E9731</string>
<key>history</key>
<array>
<string>8B7E3F2E20A72F9500482CB5</string>
- <string>8B7E3F2F20A72F9500482CB5</string>
+ <string>8B792B4421F36707006E9731</string>
+ <string>8B792B4521F36707006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>618 344 810 487 0 0 1440 878 </string>
+ <string>526 350 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>618 344 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 297}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>526 350 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B7E3F3120A72F9500482CB5</string>
+ <string>8B792B4721F36707006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B7E3F3220A72F9500482CB5</string>
+ <string>8B792B4821F36707006E9731</string>
<string>8BBDB99F208BFC67006F0D04</string>
- <string>8B7E3F3320A72F9500482CB5</string>
+ <string>8B792B4921F36707006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +637,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>547827605.06235003</real>
+ <real>569599797.07027304</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -656,7 +657,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/DrumSlam/DrumSlam.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>618 344 810 487 0 0 1440 878 </string>
+ <string>526 350 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/DubCenter/DubCenter.cpp b/plugins/MacAU/DubCenter/DubCenter.cpp
index e0bfcae..397d118 100755
--- a/plugins/MacAU/DubCenter/DubCenter.cpp
+++ b/plugins/MacAU/DubCenter/DubCenter.cpp
@@ -608,18 +608,14 @@ OSStatus DubCenter::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
@@ -630,12 +626,6 @@ OSStatus DubCenter::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
outputL += 1;
outputR += 1;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
return noErr;
}
diff --git a/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser
index 7ca3e9a..92a76a9 100755
--- a/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser
@@ -49,50 +49,50 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561682686;
- PBXWorkspaceStateSaveDate = 561682686;
+ PBXPerProjectTemplateStateSaveDate = 569601995;
+ PBXWorkspaceStateSaveDate = 569601995;
};
perUserProjectItems = {
- 8B15DBE021788E16007AD769 /* PBXTextBookmark */ = 8B15DBE021788E16007AD769 /* PBXTextBookmark */;
- 8B15DC9D217A9A34007AD769 /* PBXTextBookmark */ = 8B15DC9D217A9A34007AD769 /* PBXTextBookmark */;
+ 8B792B6021F37032006E9731 /* PBXTextBookmark */ = 8B792B6021F37032006E9731 /* PBXTextBookmark */;
+ 8B792B6521F37044006E9731 /* PBXTextBookmark */ = 8B792B6521F37044006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B15DBE021788E16007AD769 /* PBXTextBookmark */ = {
+ 8B792B6021F37032006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* DubCenterVersion.h */;
name = "DubCenterVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 138;
+ vrLen = 72;
vrLoc = 0;
};
- 8B15DC9D217A9A34007AD769 /* PBXTextBookmark */ = {
+ 8B792B6521F37044006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* DubCenterVersion.h */;
name = "DubCenterVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 75;
+ vrLen = 72;
vrLoc = 0;
};
8BA05A660720730100365D66 /* DubCenter.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {843, 8515}}";
- sepNavSelRange = "{21662, 0}";
- sepNavVisRange = "{18060, 2145}";
- sepNavWindowFrame = "{{524, 68}, {890, 810}}";
+ sepNavIntBoundsRect = "{{0, 0}, {843, 8710}}";
+ sepNavSelRange = "{25766, 0}";
+ sepNavVisRange = "{12612, 2162}";
+ sepNavWindowFrame = "{{418, 60}, {890, 810}}";
};
};
8BA05A690720730100365D66 /* DubCenterVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {803, 845}}";
sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 75}";
+ sepNavVisRange = "{0, 72}";
sepNavWindowFrame = "{{15, 63}, {890, 810}}";
};
};
@@ -106,9 +106,9 @@
8BC6025B073B072D006C4272 /* DubCenter.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {894, 2626}}";
- sepNavSelRange = "{6309, 802}";
- sepNavVisRange = "{1890, 2172}";
- sepNavWindowFrame = "{{743, 68}, {890, 810}}";
+ sepNavSelRange = "{6647, 0}";
+ sepNavVisRange = "{6253, 1011}";
+ sepNavWindowFrame = "{{550, 68}, {890, 810}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3
index 9e4deb2..db80a2d 100755
--- a/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>824 324 573 517 0 0 1440 878 </string>
+ <string>506 318 573 517 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B15DC9D217A9A34007AD769</string>
+ <string>8B792B6521F37044006E9731</string>
<key>history</key>
<array>
- <string>8B15DBE021788E16007AD769</string>
+ <string>8B792B6021F37032006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {366, 119}}</string>
+ <string>{{0, 0}, {366, 103}}</string>
<key>RubberWindowFrame</key>
- <string>824 324 573 517 0 0 1440 878 </string>
+ <string>506 318 573 517 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>119pt</string>
+ <string>103pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>352pt</string>
+ <string>368pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {366, 325}}</string>
- <key>RubberWindowFrame</key>
- <string>824 324 573 517 0 0 1440 878 </string>
+ <string>{{10, 27}, {366, 341}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {366, 282}}</string>
+ <string>{{10, 27}, {366, 341}}</string>
+ <key>RubberWindowFrame</key>
+ <string>506 318 573 517 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B15DC9E217A9A34007AD769</string>
+ <string>8B792B6621F37044006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B15DC9F217A9A34007AD769</string>
+ <string>8B792B6721F37044006E9731</string>
<string>8B27205C2173B3A600396442</string>
- <string>8B15DCA0217A9A34007AD769</string>
+ <string>8B792B6821F37044006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561682996.86381996</real>
+ <real>569602116.17734897</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -655,7 +653,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/DubCenter/DubCenter.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>824 324 573 517 0 0 1440 878 </string>
+ <string>506 318 573 517 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/DubSub/DubSub.cpp b/plugins/MacAU/DubSub/DubSub.cpp
index 3d375c7..49a371b 100755
--- a/plugins/MacAU/DubSub/DubSub.cpp
+++ b/plugins/MacAU/DubSub/DubSub.cpp
@@ -523,23 +523,14 @@ void DubSub::DubSubKernel::Process( const Float32 *inSourceP,
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
-
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser
index 1b78563..0bf9966 100755
--- a/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser
@@ -49,43 +49,43 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 560565055;
- PBXWorkspaceStateSaveDate = 560565055;
+ PBXPerProjectTemplateStateSaveDate = 569602135;
+ PBXWorkspaceStateSaveDate = 569602135;
};
perUserProjectItems = {
- 8B42FE3E21698BC50092969A /* PBXTextBookmark */ = 8B42FE3E21698BC50092969A /* PBXTextBookmark */;
- 8B42FE3F21698BC50092969A /* PBXTextBookmark */ = 8B42FE3F21698BC50092969A /* PBXTextBookmark */;
+ 8B792B7521F3708C006E9731 /* PBXTextBookmark */ = 8B792B7521F3708C006E9731 /* PBXTextBookmark */;
+ 8B792B7A21F3709C006E9731 /* PBXTextBookmark */ = 8B792B7A21F3709C006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B42FE3E21698BC50092969A /* PBXTextBookmark */ = {
+ 8B792B7521F3708C006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* DubSub.cpp */;
name = "DubSub.cpp: 521";
rLen = 0;
rLoc = 22045;
rType = 0;
- vrLen = 160;
- vrLoc = 21949;
+ vrLen = 68;
+ vrLoc = 21996;
};
- 8B42FE3F21698BC50092969A /* PBXTextBookmark */ = {
+ 8B792B7A21F3709C006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* DubSub.cpp */;
name = "DubSub.cpp: 521";
rLen = 0;
rLoc = 22045;
rType = 0;
- vrLen = 160;
- vrLoc = 21915;
+ vrLen = 68;
+ vrLoc = 21996;
};
8BA05A660720730100365D66 /* DubSub.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {663, 7241}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 7072}}";
sepNavSelRange = "{22045, 0}";
- sepNavVisRange = "{21915, 160}";
- sepNavWindowFrame = "{{749, 66}, {1145, 812}}";
+ sepNavVisRange = "{21996, 68}";
+ sepNavWindowFrame = "{{1, 41}, {1145, 812}}";
};
};
8BA05A670720730100365D66 /* DubSub.exp */ = {
@@ -108,16 +108,16 @@
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1098, 767}}";
sepNavSelRange = "{2869, 0}";
- sepNavVisRange = "{68, 2869}";
+ sepNavVisRange = "{49, 2888}";
sepNavWindowFrame = "{{295, 66}, {1145, 812}}";
};
};
8BC6025B073B072D006C4272 /* DubSub.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 2392}}";
- sepNavSelRange = "{3332, 0}";
- sepNavVisRange = "{2519, 1677}";
- sepNavWindowFrame = "{{832, 72}, {608, 806}}";
+ sepNavIntBoundsRect = "{{0, 0}, {824, 2756}}";
+ sepNavSelRange = "{6097, 1035}";
+ sepNavVisRange = "{6232, 1033}";
+ sepNavWindowFrame = "{{26, 54}, {608, 806}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3
index 5e22a02..b95829d 100755
--- a/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>625 371 810 487 0 0 1440 878 </string>
+ <string>412 359 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B42FE3F21698BC50092969A</string>
+ <string>8B792B7A21F3709C006E9731</string>
<key>history</key>
<array>
- <string>8B42FE3E21698BC50092969A</string>
+ <string>8B792B7521F3708C006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 69}}</string>
<key>RubberWindowFrame</key>
- <string>625 371 810 487 0 0 1440 878 </string>
+ <string>412 359 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>69pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>372pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
- <key>RubberWindowFrame</key>
- <string>625 371 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 345}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 345}}</string>
+ <key>RubberWindowFrame</key>
+ <string>412 359 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B42FE4021698BC50092969A</string>
+ <string>8B792B7B21F3709C006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B42FE4121698BC50092969A</string>
+ <string>8B792B7C21F3709C006E9731</string>
<string>8BE6256A2157A03900E4E476</string>
- <string>8B42FE4221698BC50092969A</string>
+ <string>8B792B7D21F3709C006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>560565189.36784196</real>
+ <real>569602204.74752998</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +650,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B42FE4321698BC50092969A</string>
+ <string>8B792B7E21F3709C006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/DubSub/DubSub.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>625 371 810 487 0 0 1440 878 </string>
+ <string>412 359 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/DustBunny/DustBunny.cpp b/plugins/MacAU/DustBunny/DustBunny.cpp
index 84ac4f6..28418d4 100755
--- a/plugins/MacAU/DustBunny/DustBunny.cpp
+++ b/plugins/MacAU/DustBunny/DustBunny.cpp
@@ -164,7 +164,7 @@ void DustBunny::DustBunnyKernel::Reset()
ataUpsampleHighTweak = 0.0414213562373095048801688; //more adds treble to upsampling
ataDecay = 0.915965594177219015; //Catalan's constant, more adds focus and clarity
ataFlip = false; //end reset of antialias parameters
- demotimer = 0;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -242,6 +242,12 @@ void DustBunny::DustBunnyKernel::Process( const Float32 *inSourceP,
ataPrevDiffSample = ataDiffSample / 2.0;
//apply processing as difference to non-oversampled raw input
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
+
*destP = inputSample;
//built in output trim and dry/wet by default
diff --git a/plugins/MacAU/DustBunny/DustBunny.h b/plugins/MacAU/DustBunny/DustBunny.h
index 942ef4a..ce73aa5 100755
--- a/plugins/MacAU/DustBunny/DustBunny.h
+++ b/plugins/MacAU/DustBunny/DustBunny.h
@@ -140,7 +140,7 @@ public:
Float32 ataDiffSample;
Float32 ataPrevDiffSample;
bool ataFlip; //end defining of antialiasing variables
- int demotimer;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser
index f043578..aed040a 100755
--- a/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser
@@ -49,18 +49,18 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528455970;
- PBXWorkspaceStateSaveDate = 528455970;
+ PBXPerProjectTemplateStateSaveDate = 569602226;
+ PBXWorkspaceStateSaveDate = 569602226;
};
perUserProjectItems = {
- 8B9D648D1F7C8584007AB60F /* PBXTextBookmark */ = 8B9D648D1F7C8584007AB60F /* PBXTextBookmark */;
+ 8B792B8D21F37127006E9731 /* PBXTextBookmark */ = 8B792B8D21F37127006E9731 /* PBXTextBookmark */;
8B9D73FD1F7F9959007AB60F /* PBXTextBookmark */ = 8B9D73FD1F7F9959007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D648D1F7C8584007AB60F /* PBXTextBookmark */ = {
+ 8B792B8D21F37127006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A670720730100365D66 /* DustBunny.exp */;
name = "DustBunny.exp: 2";
@@ -82,15 +82,15 @@
};
8BA05A660720730100365D66 /* DustBunny.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1027, 3315}}";
- sepNavSelRange = "{8604, 0}";
- sepNavVisRange = "{8097, 2779}";
- sepNavWindowFrame = "{{435, 39}, {1005, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {958, 3536}}";
+ sepNavSelRange = "{7726, 0}";
+ sepNavVisRange = "{5884, 2552}";
+ sepNavWindowFrame = "{{329, 39}, {1005, 839}}";
};
};
8BA05A670720730100365D66 /* DustBunny.exp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 70}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 54}}";
sepNavSelRange = "{16, 0}";
sepNavVisRange = "{0, 16}";
sepNavWindowFrame = "{{15, 39}, {1005, 839}}";
@@ -106,10 +106,10 @@
};
8BC6025B073B072D006C4272 /* DustBunny.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {958, 1950}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{4064, 1467}";
- sepNavWindowFrame = "{{435, 39}, {1005, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {958, 1898}}";
+ sepNavSelRange = "{5428, 0}";
+ sepNavVisRange = "{3922, 1609}";
+ sepNavWindowFrame = "{{166, 39}, {1005, 839}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3
index dc5427b..0cf4cf6 100755
--- a/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 291 810 487 0 0 1440 878 </string>
+ <string>444 300 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +352,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D73FD1F7F9959007AB60F</string>
+ <string>8B792B8D21F37127006E9731</string>
<key>history</key>
<array>
- <string>8B9D648D1F7C8584007AB60F</string>
+ <string>8B9D73FD1F7F9959007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 102}}</string>
+ <string>{{0, 0}, {603, 86}}</string>
<key>RubberWindowFrame</key>
- <string>630 291 810 487 0 0 1440 878 </string>
+ <string>444 300 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>102pt</string>
+ <string>86pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>355pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +394,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 312}}</string>
+ <string>{{10, 27}, {603, 328}}</string>
<key>RubberWindowFrame</key>
- <string>630 291 810 487 0 0 1440 878 </string>
+ <string>444 300 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D73FE1F7F9959007AB60F</string>
+ <string>8B792B8E21F37127006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D73FF1F7F9959007AB60F</string>
+ <string>8B792B8F21F37127006E9731</string>
<string>8BAC230D1F1EA30C009C635C</string>
- <string>8B9D74001F7F9959007AB60F</string>
+ <string>8B792B9021F37127006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456025.40104002</real>
+ <real>569602343.09456503</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +652,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D74011F7F9959007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/DustBunny/DustBunny.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 291 810 487 0 0 1440 878 </string>
+ <string>444 300 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/EQ/EQ.cpp b/plugins/MacAU/EQ/EQ.cpp
index eecaa38..4b2d40b 100755
--- a/plugins/MacAU/EQ/EQ.cpp
+++ b/plugins/MacAU/EQ/EQ.cpp
@@ -222,9 +222,7 @@ ComponentResult EQ::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void EQ::EQKernel::Reset()
{
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
iirHighSampleA = 0.0;
iirHighSampleB = 0.0;
@@ -285,10 +283,6 @@ void EQ::EQKernel::Process( const Float32 *inSourceP,
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
Float64 overallscale = GetSampleRate();
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
-
Float64 inputSample;
Float64 highSample = 0.0;
Float64 midSample = 0.0;
@@ -354,7 +348,7 @@ void EQ::EQKernel::Process( const Float32 *inSourceP,
last2Sample = lastSample;
lastSample = inputSample;
- flip = not flip;
+ flip = !flip;
flipthree++;
if (flipthree < 1 || flipthree > 3) flipthree = 1;
//counters
@@ -522,19 +516,11 @@ void EQ::EQKernel::Process( const Float32 *inSourceP,
//built in output trim and dry/wet if desired
if (outputgain != 1.0) inputSample *= outputgain;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/EQ/EQ.h b/plugins/MacAU/EQ/EQ.h
index bfe6e51..a3b0194 100755
--- a/plugins/MacAU/EQ/EQ.h
+++ b/plugins/MacAU/EQ/EQ.h
@@ -197,9 +197,7 @@ public:
Float64 lastSample;
Float64 last2Sample;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.pbxuser
index bcc2261..0385b92 100755
--- a/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541887565;
- PBXWorkspaceStateSaveDate = 541887565;
+ PBXPerProjectTemplateStateSaveDate = 569643969;
+ PBXWorkspaceStateSaveDate = 569643969;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -58,9 +58,9 @@
};
8BA05A660720730100365D66 /* EQ.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {787, 7306}}";
- sepNavSelRange = "{11544, 0}";
- sepNavVisRange = "{9924, 1260}";
+ sepNavIntBoundsRect = "{{0, 0}, {787, 7280}}";
+ sepNavSelRange = "{12231, 0}";
+ sepNavVisRange = "{11723, 2294}";
sepNavWindowFrame = "{{25, 65}, {834, 813}}";
};
};
@@ -81,9 +81,9 @@
};
8BC6025B073B072D006C4272 /* EQ.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 2717}}";
- sepNavSelRange = "{7129, 0}";
- sepNavVisRange = "{2030, 1998}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 3133}}";
+ sepNavSelRange = "{7155, 0}";
+ sepNavVisRange = "{6104, 1153}";
sepNavWindowFrame = "{{561, 65}, {834, 813}}";
};
};
diff --git a/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3
index bfd1346..91f367e 100755
--- a/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>3</integer>
+ <integer>4</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>626 361 810 487 0 0 1440 878 </string>
+ <string>497 289 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -363,7 +363,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>626 361 810 487 0 0 1440 878 </string>
+ <string>497 289 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -387,8 +387,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>626 361 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -442,7 +440,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>497 289 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -470,11 +470,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B181AEC204C940200516BEE</string>
+ <string>8B792BFF21F41480006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B181AED204C940200516BEE</string>
+ <string>8B792C0021F41480006E9731</string>
<string>8BCA70302027EDF000D92BAD</string>
- <string>8B181AEE204C940200516BEE</string>
+ <string>8B792C0121F41480006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -627,7 +627,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541889538.11759806</real>
+ <real>569644160.89823198</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -644,10 +644,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
+ <string>8B792C0221F41480006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/EQ/EQ.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>626 361 810 487 0 0 1440 878 </string>
+ <string>497 289 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/EdIsDim/EdIsDim.cpp b/plugins/MacAU/EdIsDim/EdIsDim.cpp
index 164f8df..e9d2e23 100755
--- a/plugins/MacAU/EdIsDim/EdIsDim.cpp
+++ b/plugins/MacAU/EdIsDim/EdIsDim.cpp
@@ -171,11 +171,8 @@ ComponentResult EdIsDim::Initialize()
// this is called the reset the DSP state (clear buffers, reset counters, etc.)
ComponentResult EdIsDim::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
return noErr;
}
@@ -194,10 +191,6 @@ OSStatus EdIsDim::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags
Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData);
Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData);
UInt32 nSampleFrames = inFramesToProcess;
-
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -256,25 +249,14 @@ OSStatus EdIsDim::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags
mid = (inputSampleL+inputSampleR)/2.0;
side = (inputSampleL-inputSampleR)/2.0;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = mid;
*outputR = side;
diff --git a/plugins/MacAU/EdIsDim/EdIsDim.h b/plugins/MacAU/EdIsDim/EdIsDim.h
index 6646778..e5d5e46 100755
--- a/plugins/MacAU/EdIsDim/EdIsDim.h
+++ b/plugins/MacAU/EdIsDim/EdIsDim.h
@@ -111,11 +111,8 @@ public:
virtual ComponentResult Version() { return kEdIsDimVersion; }
private:
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
};
diff --git a/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser
index dd54e22..0eaeffc 100755
--- a/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser
@@ -49,43 +49,43 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456036;
- PBXWorkspaceStateSaveDate = 528456036;
+ PBXPerProjectTemplateStateSaveDate = 569602369;
+ PBXWorkspaceStateSaveDate = 569602369;
};
perUserProjectItems = {
- 8B9D649D1F7C85BA007AB60F /* PBXTextBookmark */ = 8B9D649D1F7C85BA007AB60F /* PBXTextBookmark */;
- 8B9D740C1F7F99CD007AB60F /* PBXTextBookmark */ = 8B9D740C1F7F99CD007AB60F /* PBXTextBookmark */;
+ 8B792B9E21F371C6006E9731 /* PBXTextBookmark */ = 8B792B9E21F371C6006E9731 /* PBXTextBookmark */;
+ 8B792BA321F371D7006E9731 /* PBXTextBookmark */ = 8B792BA321F371D7006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D649D1F7C85BA007AB60F /* PBXTextBookmark */ = {
+ 8B792B9E21F371C6006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* EdIsDim.cpp */;
- name = "EdIsDim.cpp: 253";
- rLen = 710;
- rLoc = 10830;
+ name = "EdIsDim.cpp: 260";
+ rLen = 0;
+ rLoc = 11194;
rType = 0;
- vrLen = 437;
- vrLoc = 8933;
+ vrLen = 150;
+ vrLoc = 9250;
};
- 8B9D740C1F7F99CD007AB60F /* PBXTextBookmark */ = {
+ 8B792BA321F371D7006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* EdIsDim.cpp */;
- name = "EdIsDim.cpp: 253";
- rLen = 710;
- rLoc = 10830;
+ name = "EdIsDim.cpp: 260";
+ rLen = 0;
+ rLoc = 11194;
rType = 0;
- vrLen = 382;
- vrLoc = 8988;
+ vrLen = 150;
+ vrLoc = 9250;
};
8BA05A660720730100365D66 /* EdIsDim.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 3770}}";
- sepNavSelRange = "{10830, 710}";
- sepNavVisRange = "{8988, 382}";
- sepNavWindowFrame = "{{370, 39}, {1070, 811}}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 3640}}";
+ sepNavSelRange = "{11194, 0}";
+ sepNavVisRange = "{9250, 150}";
+ sepNavWindowFrame = "{{182, 67}, {1070, 811}}";
};
};
8BA05A670720730100365D66 /* EdIsDim.exp */ = {
@@ -106,9 +106,9 @@
};
8BC6025B073B072D006C4272 /* EdIsDim.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {922, 1638}}";
- sepNavSelRange = "{2966, 8}";
- sepNavVisRange = "{3189, 1845}";
+ sepNavIntBoundsRect = "{{0, 0}, {922, 1599}}";
+ sepNavSelRange = "{4844, 0}";
+ sepNavVisRange = "{3126, 1842}";
sepNavWindowFrame = "{{376, 41}, {923, 837}}";
};
};
diff --git a/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3
index 500b578..187be5c 100755
--- a/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>622 330 810 487 0 0 1440 878 </string>
+ <string>457 331 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D740C1F7F99CD007AB60F</string>
+ <string>8B792BA321F371D7006E9731</string>
<key>history</key>
<array>
- <string>8B9D649D1F7C85BA007AB60F</string>
+ <string>8B792B9E21F371C6006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 86}}</string>
+ <string>{{0, 0}, {603, 69}}</string>
<key>RubberWindowFrame</key>
- <string>622 330 810 487 0 0 1440 878 </string>
+ <string>457 331 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>86pt</string>
+ <string>69pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>355pt</string>
+ <string>372pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
- <key>RubberWindowFrame</key>
- <string>622 330 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 345}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 345}}</string>
+ <key>RubberWindowFrame</key>
+ <string>457 331 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D740D1F7F99CD007AB60F</string>
+ <string>8B792BA421F371D7006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D740E1F7F99CD007AB60F</string>
+ <string>8B792BA521F371D7006E9731</string>
<string>8B753E4E1E40210F00347157</string>
- <string>8B9D740F1F7F99CD007AB60F</string>
+ <string>8B792BA621F371D7006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456141.63520998</real>
+ <real>569602519.02649903</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +650,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D74101F7F99CD007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/EdIsDim/EdIsDim.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>622 330 810 487 0 0 1440 878 </string>
+ <string>457 331 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/ElectroHat/ElectroHat.cpp b/plugins/MacAU/ElectroHat/ElectroHat.cpp
index 6fd2b29..cfdf411 100755
--- a/plugins/MacAU/ElectroHat/ElectroHat.cpp
+++ b/plugins/MacAU/ElectroHat/ElectroHat.cpp
@@ -214,9 +214,7 @@ void ElectroHat::ElectroHatKernel::Reset()
tik = 3746926;
lok = 0;
flip = true;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -270,9 +268,6 @@ void ElectroHat::ElectroHatKernel::Process( const Float32 *inSourceP,
int posE = fosE;
int posF = fosF;
int posG = posF*posE*posD*posC*posB; //factorial
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
while (nSampleFrames-- > 0) {
@@ -317,19 +312,11 @@ void ElectroHat::ElectroHatKernel::Process( const Float32 *inSourceP,
inputSample = (inputSample * wet) + (drySample * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
//moving average combats that near-Nyquist stuff
diff --git a/plugins/MacAU/ElectroHat/ElectroHat.h b/plugins/MacAU/ElectroHat/ElectroHat.h
index 7592a4c..6d3525e 100755
--- a/plugins/MacAU/ElectroHat/ElectroHat.h
+++ b/plugins/MacAU/ElectroHat/ElectroHat.h
@@ -156,9 +156,7 @@ public:
int tik;
int lok;
bool flip;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ Float64 fpNShape;
};
};
diff --git a/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser
index 9605e3d..6e8da0d 100755
--- a/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541288564;
- PBXWorkspaceStateSaveDate = 541288564;
+ PBXPerProjectTemplateStateSaveDate = 569602542;
+ PBXWorkspaceStateSaveDate = 569602542;
};
perUserProjectItems = {
- 8BC009F220436BB300304BC7 /* PBXTextBookmark */ = 8BC009F220436BB300304BC7 /* PBXTextBookmark */;
- 8BC009F320436BB300304BC7 /* PBXTextBookmark */ = 8BC009F320436BB300304BC7 /* PBXTextBookmark */;
+ 8B792BB621F37247006E9731 /* PBXTextBookmark */ = 8B792BB621F37247006E9731 /* PBXTextBookmark */;
+ 8B792BBB21F37261006E9731 /* PBXTextBookmark */ = 8B792BBB21F37261006E9731 /* PBXTextBookmark */;
8BCEFB832042DD54002E8187 /* PBXTextBookmark */ = 8BCEFB832042DD54002E8187 /* PBXTextBookmark */;
8BCEFBA32043656D002E8187 /* PBXTextBookmark */ = 8BCEFBA32043656D002E8187 /* PBXTextBookmark */;
};
@@ -62,11 +62,31 @@
userBuildSettings = {
};
};
+ 8B792BB621F37247006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* ElectroHat.cpp */;
+ name = "ElectroHat.cpp: 303";
+ rLen = 31;
+ rLoc = 12605;
+ rType = 0;
+ vrLen = 524;
+ vrLoc = 12283;
+ };
+ 8B792BBB21F37261006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* ElectroHat.cpp */;
+ name = "ElectroHat.cpp: 303";
+ rLen = 31;
+ rLoc = 12605;
+ rType = 0;
+ vrLen = 226;
+ vrLoc = 12283;
+ };
8BA05A660720730100365D66 /* ElectroHat.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {712, 4667}}";
- sepNavSelRange = "{12748, 31}";
- sepNavVisRange = "{12105, 736}";
+ sepNavIntBoundsRect = "{{0, 0}, {712, 4472}}";
+ sepNavSelRange = "{12605, 31}";
+ sepNavVisRange = "{12283, 226}";
sepNavWindowFrame = "{{252, 40}, {997, 838}}";
};
};
@@ -78,31 +98,11 @@
sepNavWindowFrame = "{{15, 40}, {909, 838}}";
};
};
- 8BC009F220436BB300304BC7 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* ElectroHat.cpp */;
- name = "ElectroHat.cpp: 145";
- rLen = 0;
- rLoc = 6799;
- rType = 0;
- vrLen = 926;
- vrLoc = 9949;
- };
- 8BC009F320436BB300304BC7 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* ElectroHat.cpp */;
- name = "ElectroHat.cpp: 308";
- rLen = 31;
- rLoc = 12748;
- rType = 0;
- vrLen = 736;
- vrLoc = 12105;
- };
8BC6025B073B072D006C4272 /* ElectroHat.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 2002}}";
- sepNavSelRange = "{3208, 0}";
- sepNavVisRange = "{2134, 1985}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2301}}";
+ sepNavSelRange = "{6281, 0}";
+ sepNavVisRange = "{4808, 1583}";
sepNavWindowFrame = "{{630, 50}, {810, 826}}";
};
};
diff --git a/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3
index f67a203..2f7bc15 100755
--- a/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3
@@ -333,8 +333,6 @@
<key>Dock</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -352,12 +350,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BC009F320436BB300304BC7</string>
+ <string>8B792BBB21F37261006E9731</string>
<key>history</key>
<array>
<string>8BCEFB832042DD54002E8187</string>
<string>8BCEFBA32043656D002E8187</string>
- <string>8BC009F220436BB300304BC7</string>
+ <string>8B792BB621F37247006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 306}}</string>
+ <string>{{0, 0}, {603, 94}}</string>
<key>RubberWindowFrame</key>
<string>442 380 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>306pt</string>
+ <string>94pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>135pt</string>
+ <string>347pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 108}}</string>
- <key>RubberWindowFrame</key>
- <string>442 380 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 114}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 320}}</string>
+ <key>RubberWindowFrame</key>
+ <string>442 380 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC009F420436BB300304BC7</string>
+ <string>8B792BBC21F37261006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC009F520436BB300304BC7</string>
+ <string>8B792BBD21F37261006E9731</string>
<string>8BCA6F152027DB6B00D92BAD</string>
- <string>8BC009F620436BB300304BC7</string>
+ <string>8B792BBE21F37261006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -637,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541289395.77599096</real>
+ <real>569602657.83772898</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
diff --git a/plugins/MacAU/Energy/Energy.cpp b/plugins/MacAU/Energy/Energy.cpp
index e3b3354..3e9d4cb 100755
--- a/plugins/MacAU/Energy/Energy.cpp
+++ b/plugins/MacAU/Energy/Energy.cpp
@@ -733,22 +733,14 @@ void Energy::EnergyKernel::Process( const Float32 *inSourceP,
//we don't need a drySample because we never touched inputSample
//so, this provides the inv/dry/wet control all by itself
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
} \ No newline at end of file
diff --git a/plugins/MacAU/Energy/Energy.h b/plugins/MacAU/Energy/Energy.h
index 2ea7b28..62648f2 100755
--- a/plugins/MacAU/Energy/Energy.h
+++ b/plugins/MacAU/Energy/Energy.h
@@ -225,7 +225,7 @@ public:
Float64 PrevB;
Float64 PrevA;
- Float64 fpNShape;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.pbxuser
index 4d5f878..ea6a47e 100755
--- a/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.pbxuser
@@ -49,19 +49,39 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 547787625;
- PBXWorkspaceStateSaveDate = 547787625;
+ PBXPerProjectTemplateStateSaveDate = 569602677;
+ PBXWorkspaceStateSaveDate = 569602677;
};
perUserProjectItems = {
+ 8B792BCC21F372B8006E9731 /* PBXTextBookmark */ = 8B792BCC21F372B8006E9731 /* PBXTextBookmark */;
+ 8B792BD121F372CE006E9731 /* PBXTextBookmark */ = 8B792BD121F372CE006E9731 /* PBXTextBookmark */;
8B7E3EE120A720D100482CB5 /* PBXTextBookmark */ = 8B7E3EE120A720D100482CB5 /* PBXTextBookmark */;
8B7E3EE220A720D100482CB5 /* PBXTextBookmark */ = 8B7E3EE220A720D100482CB5 /* PBXTextBookmark */;
- 8B7E3EE320A720D100482CB5 /* PBXTextBookmark */ = 8B7E3EE320A720D100482CB5 /* PBXTextBookmark */;
- 8B7E3EE420A720D100482CB5 /* PBXTextBookmark */ = 8B7E3EE420A720D100482CB5 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B792BCC21F372B8006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* Energy.h */;
+ name = "Energy.h: 229";
+ rLen = 0;
+ rLoc = 7165;
+ rType = 0;
+ vrLen = 64;
+ vrLoc = 7106;
+ };
+ 8B792BD121F372CE006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* Energy.h */;
+ name = "Energy.h: 229";
+ rLen = 0;
+ rLoc = 7165;
+ rType = 0;
+ vrLen = 64;
+ vrLoc = 7106;
+ };
8B7E3EE120A720D100482CB5 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Energy.cpp */;
@@ -82,32 +102,12 @@
vrLen = 265;
vrLoc = 3189;
};
- 8B7E3EE320A720D100482CB5 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Energy.h */;
- name = "Energy.h: 229";
- rLen = 0;
- rLoc = 7161;
- rType = 0;
- vrLen = 63;
- vrLoc = 7106;
- };
- 8B7E3EE420A720D100482CB5 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Energy.h */;
- name = "Energy.h: 229";
- rLen = 0;
- rLoc = 7161;
- rType = 0;
- vrLen = 63;
- vrLoc = 7106;
- };
8BA05A660720730100365D66 /* Energy.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {740, 10985}}";
- sepNavSelRange = "{13885, 8875}";
- sepNavVisRange = "{22057, 1537}";
- sepNavWindowFrame = "{{653, 65}, {787, 813}}";
+ sepNavIntBoundsRect = "{{0, 0}, {740, 10309}}";
+ sepNavSelRange = "{23013, 0}";
+ sepNavVisRange = "{21843, 1256}";
+ sepNavWindowFrame = "{{504, 65}, {787, 813}}";
};
};
8BA05A670720730100365D66 /* Energy.exp */ = {
@@ -128,10 +128,10 @@
};
8BC6025B073B072D006C4272 /* Energy.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {656, 3263}}";
- sepNavSelRange = "{7161, 0}";
- sepNavVisRange = "{7106, 63}";
- sepNavWindowFrame = "{{796, 53}, {863, 813}}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 3211}}";
+ sepNavSelRange = "{7165, 0}";
+ sepNavVisRange = "{7106, 64}";
+ sepNavWindowFrame = "{{577, 53}, {863, 813}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3
index b8eeb52..951b9b4 100755
--- a/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>618 342 810 487 0 0 1440 878 </string>
+ <string>475 322 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,12 +350,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B7E3EE420A720D100482CB5</string>
+ <string>8B792BD121F372CE006E9731</string>
<key>history</key>
<array>
<string>8B7E3EE120A720D100482CB5</string>
<string>8B7E3EE220A720D100482CB5</string>
- <string>8B7E3EE320A720D100482CB5</string>
+ <string>8B792BCC21F372B8006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 102}}</string>
<key>RubberWindowFrame</key>
- <string>618 342 810 487 0 0 1440 878 </string>
+ <string>475 322 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>102pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>339pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
- <key>RubberWindowFrame</key>
- <string>618 342 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 312}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 312}}</string>
+ <key>RubberWindowFrame</key>
+ <string>475 322 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B7E3EE520A720D100482CB5</string>
+ <string>8B792BD221F372CE006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B7E3EE620A720D100482CB5</string>
+ <string>8B792BD321F372CE006E9731</string>
<string>8B7E3C2F20A5148000482CB5</string>
- <string>8B7E3EE720A720D100482CB5</string>
+ <string>8B792BD421F372CE006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -637,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>547823825.49813604</real>
+ <real>569602766.40819299</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -657,7 +655,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Energy/Energy.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>618 342 810 487 0 0 1440 878 </string>
+ <string>475 322 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Ensemble/Ensemble.cpp b/plugins/MacAU/Ensemble/Ensemble.cpp
index dec69cb..cdb1f4c 100755
--- a/plugins/MacAU/Ensemble/Ensemble.cpp
+++ b/plugins/MacAU/Ensemble/Ensemble.cpp
@@ -190,8 +190,7 @@ void Ensemble::EnsembleKernel::Reset()
airEven = 0.0;
airOdd = 0.0;
airFactor = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
+ fpNShape = 0.0;
fpFlip = true;
}
@@ -229,11 +228,6 @@ void Ensemble::EnsembleKernel::Process( const Float32 *inSourceP,
int count;
int ensemble;
Float64 temp;
-
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
long double inputSample;
Float64 drySample;
//now we'll precalculate some stuff that needn't be in every sample
@@ -308,20 +302,13 @@ void Ensemble::EnsembleKernel::Process( const Float32 *inSourceP,
if (wet !=1.0) {
inputSample = (inputSample * wet) + (drySample * dry);
}
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
destP += inNumChannels;
diff --git a/plugins/MacAU/Ensemble/Ensemble.h b/plugins/MacAU/Ensemble/Ensemble.h
index 356e30e..af1c3aa 100755
--- a/plugins/MacAU/Ensemble/Ensemble.h
+++ b/plugins/MacAU/Ensemble/Ensemble.h
@@ -143,9 +143,8 @@ public:
Float64 airEven;
Float64 airOdd;
Float64 airFactor;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
+ bool fpFlip;
};
};
diff --git a/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser
index c4a1875..2fdaf52 100755
--- a/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser
@@ -49,43 +49,43 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 529850403;
- PBXWorkspaceStateSaveDate = 529850403;
+ PBXPerProjectTemplateStateSaveDate = 569602943;
+ PBXWorkspaceStateSaveDate = 569602943;
};
perUserProjectItems = {
- 8B4C96551F94E0EC00064452 /* PBXTextBookmark */ = 8B4C96551F94E0EC00064452 /* PBXTextBookmark */;
- 8B4C96561F94E0EC00064452 /* PBXTextBookmark */ = 8B4C96561F94E0EC00064452 /* PBXTextBookmark */;
+ 8B792BE321F373ED006E9731 /* PBXTextBookmark */ = 8B792BE321F373ED006E9731 /* PBXTextBookmark */;
+ 8B792BE821F37401006E9731 /* PBXTextBookmark */ = 8B792BE821F37401006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B4C96551F94E0EC00064452 /* PBXTextBookmark */ = {
+ 8B792BE321F373ED006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Ensemble.cpp */;
- name = "Ensemble.cpp: 278";
+ name = "Ensemble.cpp: 272";
rLen = 0;
- rLoc = 12211;
+ rLoc = 12071;
rType = 0;
- vrLen = 310;
- vrLoc = 7547;
+ vrLen = 162;
+ vrLoc = 7695;
};
- 8B4C96561F94E0EC00064452 /* PBXTextBookmark */ = {
+ 8B792BE821F37401006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Ensemble.cpp */;
- name = "Ensemble.cpp: 278";
+ name = "Ensemble.cpp: 272";
rLen = 0;
- rLoc = 12211;
+ rLoc = 12071;
rType = 0;
- vrLen = 310;
- vrLoc = 7547;
+ vrLen = 162;
+ vrLoc = 7695;
};
8BA05A660720730100365D66 /* Ensemble.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {677, 4303}}";
- sepNavSelRange = "{12211, 0}";
- sepNavVisRange = "{7547, 310}";
- sepNavWindowFrame = "{{770, 63}, {1145, 812}}";
+ sepNavIntBoundsRect = "{{0, 0}, {670, 4277}}";
+ sepNavSelRange = "{12071, 0}";
+ sepNavVisRange = "{7695, 162}";
+ sepNavWindowFrame = "{{179, 66}, {1145, 812}}";
};
};
8BA05A670720730100365D66 /* Ensemble.exp */ = {
@@ -107,9 +107,9 @@
8BC6025B073B072D006C4272 /* Ensemble.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {980, 2015}}";
- sepNavSelRange = "{5506, 0}";
- sepNavVisRange = "{1439, 2148}";
- sepNavWindowFrame = "{{659, 41}, {1027, 835}}";
+ sepNavSelRange = "{5659, 0}";
+ sepNavVisRange = "{4251, 1512}";
+ sepNavWindowFrame = "{{238, 39}, {1027, 835}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3
index 90acbb9..91e64e9 100755
--- a/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -300,7 +298,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>618 373 810 487 0 0 1440 878 </string>
+ <string>501 374 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4C96561F94E0EC00064452</string>
+ <string>8B792BE821F37401006E9731</string>
<key>history</key>
<array>
- <string>8B4C96551F94E0EC00064452</string>
+ <string>8B792BE321F373ED006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 86}}</string>
+ <string>{{0, 0}, {603, 69}}</string>
<key>RubberWindowFrame</key>
- <string>618 373 810 487 0 0 1440 878 </string>
+ <string>501 374 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>86pt</string>
+ <string>69pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>355pt</string>
+ <string>372pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
- <key>RubberWindowFrame</key>
- <string>618 373 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 345}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 345}}</string>
+ <key>RubberWindowFrame</key>
+ <string>501 374 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4C96571F94E0EC00064452</string>
+ <string>8B792BE921F37401006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4C96581F94E0EC00064452</string>
+ <string>8B792BEA21F37401006E9731</string>
<string>8B7FDBCE1F85C8E400A80060</string>
- <string>8B4C96591F94E0EC00064452</string>
+ <string>8B792BEB21F37401006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>529850604.37639201</real>
+ <real>569603073.27928698</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +650,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B4C965A1F94E0EC00064452</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Ensemble/Ensemble.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>618 373 810 487 0 0 1440 878 </string>
+ <string>501 374 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/EveryTrim/EveryTrim.cpp b/plugins/MacAU/EveryTrim/EveryTrim.cpp
index 94f854e..550a23a 100755
--- a/plugins/MacAU/EveryTrim/EveryTrim.cpp
+++ b/plugins/MacAU/EveryTrim/EveryTrim.cpp
@@ -203,11 +203,8 @@ ComponentResult EveryTrim::Initialize()
// this is called the reset the DSP state (clear buffers, reset counters, etc.)
ComponentResult EveryTrim::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
return noErr;
}
@@ -226,11 +223,7 @@ OSStatus EveryTrim::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData);
Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData);
UInt32 nSampleFrames = inFramesToProcess;
-
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+
long double inputSampleL;
long double inputSampleR;
long double mid;
@@ -296,25 +289,14 @@ OSStatus EveryTrim::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacAU/EveryTrim/EveryTrim.h b/plugins/MacAU/EveryTrim/EveryTrim.h
index dfb8b69..58ffc72 100755
--- a/plugins/MacAU/EveryTrim/EveryTrim.h
+++ b/plugins/MacAU/EveryTrim/EveryTrim.h
@@ -121,12 +121,8 @@ public:
virtual ComponentResult Version() { return kEveryTrimVersion; }
private:
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
- //default stuff
+ long double fpNShapeL;
+ long double fpNShapeR;
};
diff --git a/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser
index 9bc4e8a..bd0016f 100755
--- a/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser
@@ -49,32 +49,42 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 557257719;
- PBXWorkspaceStateSaveDate = 557257719;
+ PBXPerProjectTemplateStateSaveDate = 569644212;
+ PBXWorkspaceStateSaveDate = 569644212;
};
perUserProjectItems = {
- 8B67C6D91FA1721B008C64D6 /* PBXTextBookmark */ = 8B67C6D91FA1721B008C64D6 /* PBXTextBookmark */;
- 8BFDAF84213714150079F90D /* PBXTextBookmark */ = 8BFDAF84213714150079F90D /* PBXTextBookmark */;
+ 8B792C1021F4152A006E9731 /* PBXTextBookmark */ = 8B792C1021F4152A006E9731 /* PBXTextBookmark */;
+ 8B792C1621F41559006E9731 /* PBXTextBookmark */ = 8B792C1621F41559006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B67C6D91FA1721B008C64D6 /* PBXTextBookmark */ = {
+ 8B792C1021F4152A006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* EveryTrim.cpp */;
- name = "EveryTrim.cpp: 208";
+ name = "EveryTrim.cpp: 207";
rLen = 0;
- rLoc = 9439;
+ rLoc = 9418;
rType = 0;
- vrLen = 105;
- vrLoc = 29;
+ vrLen = 69;
+ vrLoc = 65;
+ };
+ 8B792C1621F41559006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* EveryTrim.cpp */;
+ name = "EveryTrim.cpp: 207";
+ rLen = 0;
+ rLoc = 9418;
+ rType = 0;
+ vrLen = 69;
+ vrLoc = 65;
};
8BA05A660720730100365D66 /* EveryTrim.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 4407}}";
- sepNavSelRange = "{9439, 0}";
- sepNavVisRange = "{44, 90}";
+ sepNavIntBoundsRect = "{{0, 0}, {803, 4238}}";
+ sepNavSelRange = "{9418, 0}";
+ sepNavVisRange = "{65, 69}";
sepNavWindowFrame = "{{170, 67}, {1070, 811}}";
};
};
@@ -96,9 +106,9 @@
};
8BC6025B073B072D006C4272 /* EveryTrim.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1023, 1768}}";
- sepNavSelRange = "{5173, 131}";
- sepNavVisRange = "{3570, 1835}";
+ sepNavIntBoundsRect = "{{0, 0}, {1023, 1716}}";
+ sepNavSelRange = "{5221, 0}";
+ sepNavVisRange = "{3522, 1806}";
sepNavWindowFrame = "{{370, 67}, {1070, 811}}";
};
};
@@ -116,16 +126,6 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BFDAF84213714150079F90D /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* EveryTrim.cpp */;
- name = "EveryTrim.cpp: 208";
- rLen = 0;
- rLoc = 9439;
- rType = 0;
- vrLen = 90;
- vrLoc = 44;
- };
8D01CCC60486CAD60068D4B7 /* EveryTrim */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3
index 3937f74..afd4e1f 100755
--- a/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -325,7 +325,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>610 324 810 487 0 0 1440 878 </string>
+ <string>507 328 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,10 +353,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BFDAF84213714150079F90D</string>
+ <string>8B792C1621F41559006E9731</string>
<key>history</key>
<array>
- <string>8B67C6D91FA1721B008C64D6</string>
+ <string>8B792C1021F4152A006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 86}}</string>
+ <string>{{0, 0}, {603, 69}}</string>
<key>RubberWindowFrame</key>
- <string>610 324 810 487 0 0 1440 878 </string>
+ <string>507 328 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>86pt</string>
+ <string>69pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>355pt</string>
+ <string>372pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
- <key>RubberWindowFrame</key>
- <string>610 324 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 345}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 345}}</string>
+ <key>RubberWindowFrame</key>
+ <string>507 328 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BFDAF85213714150079F90D</string>
+ <string>8B792C1721F41559006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BFDAF86213714150079F90D</string>
+ <string>8B792C1821F41559006E9731</string>
<string>8B753E6F1E40231800347157</string>
- <string>8BFDAF87213714150079F90D</string>
+ <string>8B792C1921F41559006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>557257749.03621697</real>
+ <real>569644377.55946004</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,10 +653,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
+ <string>8B792C1A21F41559006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/EveryTrim/EveryTrim.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>610 324 810 487 0 0 1440 878 </string>
+ <string>507 328 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/FathomFive/FathomFive.cpp b/plugins/MacAU/FathomFive/FathomFive.cpp
index dd2bd98..b2746ae 100755
--- a/plugins/MacAU/FathomFive/FathomFive.cpp
+++ b/plugins/MacAU/FathomFive/FathomFive.cpp
@@ -188,6 +188,7 @@ void FathomFive::FathomFiveKernel::Reset()
iirSampleB = 0.0;
iirSampleC = 0.0;
iirSampleD = 0.0;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -274,6 +275,11 @@ void FathomFive::FathomFiveKernel::Process( const Float32 *inSourceP,
//to make it easier to understand for when these are open sourced.
//FathomFive is the original Airwindows deep bass booster algorithm:
//further ones work to rein in that DC offset issue.
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)outputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ outputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
sourceP += inNumChannels;
*destP = outputSample;
diff --git a/plugins/MacAU/FathomFive/FathomFive.h b/plugins/MacAU/FathomFive/FathomFive.h
index 8cc656c..4d0b2f1 100755
--- a/plugins/MacAU/FathomFive/FathomFive.h
+++ b/plugins/MacAU/FathomFive/FathomFive.h
@@ -140,6 +140,7 @@ public:
Float64 iirSampleB;
Float64 iirSampleC;
Float64 iirSampleD;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser
index 8f8248b..7d4e84c 100755
--- a/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456153;
- PBXWorkspaceStateSaveDate = 528456153;
+ PBXPerProjectTemplateStateSaveDate = 569644406;
+ PBXWorkspaceStateSaveDate = 569644406;
};
perUserProjectItems = {
8B5E540B1D629899009FEF76 /* PBXTextBookmark */ = 8B5E540B1D629899009FEF76 /* PBXTextBookmark */;
- 8B9D64B81F7C86FC007AB60F /* PBXTextBookmark */ = 8B9D64B81F7C86FC007AB60F /* PBXTextBookmark */;
- 8B9D741B1F7F99FC007AB60F /* PBXTextBookmark */ = 8B9D741B1F7F99FC007AB60F /* PBXTextBookmark */;
+ 8B792C2821F416B3006E9731 /* PBXTextBookmark */ = 8B792C2821F416B3006E9731 /* PBXTextBookmark */;
+ 8B792C2D21F416C5006E9731 /* PBXTextBookmark */ = 8B792C2D21F416C5006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -71,32 +71,32 @@
vrLen = 177;
vrLoc = 3318;
};
- 8B9D64B81F7C86FC007AB60F /* PBXTextBookmark */ = {
+ 8B792C2821F416B3006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* FathomFive.h */;
name = "FathomFive.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 148;
- vrLoc = 4091;
+ vrLen = 0;
+ vrLoc = 0;
};
- 8B9D741B1F7F99FC007AB60F /* PBXTextBookmark */ = {
+ 8B792C2D21F416C5006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* FathomFive.h */;
name = "FathomFive.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 107;
- vrLoc = 4091;
+ vrLen = 0;
+ vrLoc = 0;
};
8BA05A660720730100365D66 /* FathomFive.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {964, 3926}}";
- sepNavSelRange = "{11859, 0}";
- sepNavVisRange = "{9798, 2175}";
- sepNavWindowFrame = "{{568, 49}, {872, 829}}";
+ sepNavIntBoundsRect = "{{0, 0}, {964, 3939}}";
+ sepNavSelRange = "{12693, 0}";
+ sepNavVisRange = "{10879, 1966}";
+ sepNavWindowFrame = "{{427, 49}, {872, 829}}";
};
};
8BA05A670720730100365D66 /* FathomFive.exp */ = {
@@ -116,9 +116,9 @@
};
8BC6025B073B072D006C4272 /* FathomFive.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {649, 1963}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 1976}}";
sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{4091, 107}";
+ sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{568, 49}, {872, 829}}";
};
};
diff --git a/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3
index 1b9c6b6..16aca64 100755
--- a/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -325,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>506 355 810 487 0 0 1440 878 </string>
+ <string>457 343 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D741B1F7F99FC007AB60F</string>
+ <string>8B792C2D21F416C5006E9731</string>
<key>history</key>
<array>
<string>8B5E540B1D629899009FEF76</string>
- <string>8B9D64B81F7C86FC007AB60F</string>
+ <string>8B792C2821F416B3006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 51}}</string>
+ <string>{{0, 0}, {603, 32}}</string>
<key>RubberWindowFrame</key>
- <string>506 355 810 487 0 0 1440 878 </string>
+ <string>457 343 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>51pt</string>
+ <string>32pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>390pt</string>
+ <string>409pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
- <key>RubberWindowFrame</key>
- <string>506 355 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 382}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 382}}</string>
+ <key>RubberWindowFrame</key>
+ <string>457 343 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D741C1F7F99FC007AB60F</string>
+ <string>8B792C2E21F416C5006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D741D1F7F99FC007AB60F</string>
+ <string>8B792C2F21F416C5006E9731</string>
<string>8B5E54091D629899009FEF76</string>
- <string>8B9D741E1F7F99FC007AB60F</string>
+ <string>8B792C3021F416C5006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -637,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456188.63718599</real>
+ <real>569644741.719468</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -654,11 +652,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D741F1F7F99FC007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/FathomFive/FathomFive.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>506 355 810 487 0 0 1440 878 </string>
+ <string>457 343 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Floor/Floor.cpp b/plugins/MacAU/Floor/Floor.cpp
index db0dbe5..fefa12e 100755
--- a/plugins/MacAU/Floor/Floor.cpp
+++ b/plugins/MacAU/Floor/Floor.cpp
@@ -346,23 +346,15 @@ void Floor::FloorKernel::Process( const Float32 *inSourceP,
if (wet < 1.0) inputSample = (drySample * dry)+(inputSample*wet);
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.pbxuser
index c955700..6a349bf 100755
--- a/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.pbxuser
@@ -49,34 +49,44 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561685575;
- PBXWorkspaceStateSaveDate = 561685575;
+ PBXPerProjectTemplateStateSaveDate = 569644795;
+ PBXWorkspaceStateSaveDate = 569644795;
};
perUserProjectItems = {
- 8B15DD2C217AA6B4007AD769 /* PBXTextBookmark */ = 8B15DD2C217AA6B4007AD769 /* PBXTextBookmark */;
+ 8B792C3E21F4179E006E9731 /* PBXTextBookmark */ = 8B792C3E21F4179E006E9731 /* PBXTextBookmark */;
+ 8B792C4321F4194B006E9731 /* PBXTextBookmark */ = 8B792C4321F4194B006E9731 /* PBXTextBookmark */;
8BE625F22157B1F000E4E476 /* PBXTextBookmark */ = 8BE625F22157B1F000E4E476 /* PBXTextBookmark */;
- 8BE6261E2157B2E800E4E476 /* PBXTextBookmark */ = 8BE6261E2157B2E800E4E476 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B15DD2C217AA6B4007AD769 /* PBXTextBookmark */ = {
+ 8B792C3E21F4179E006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Floor.h */;
name = "Floor.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 63;
+ vrLen = 60;
+ vrLoc = 0;
+ };
+ 8B792C4321F4194B006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* Floor.h */;
+ name = "Floor.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 60;
vrLoc = 0;
};
8BA05A660720730100365D66 /* Floor.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {843, 4901}}";
- sepNavSelRange = "{10441, 3168}";
- sepNavVisRange = "{10017, 1785}";
- sepNavWindowFrame = "{{550, 56}, {890, 810}}";
+ sepNavIntBoundsRect = "{{0, 0}, {843, 5096}}";
+ sepNavSelRange = "{13928, 0}";
+ sepNavVisRange = "{10975, 1602}";
+ sepNavWindowFrame = "{{413, 68}, {890, 810}}";
};
};
8BA05A670720730100365D66 /* Floor.exp */ = {
@@ -99,8 +109,8 @@
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {740, 2015}}";
sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 63}";
- sepNavWindowFrame = "{{743, 68}, {890, 810}}";
+ sepNavVisRange = "{0, 60}";
+ sepNavWindowFrame = "{{550, 68}, {890, 810}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
@@ -127,16 +137,6 @@
vrLen = 133;
vrLoc = 0;
};
- 8BE6261E2157B2E800E4E476 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Floor.h */;
- name = "Floor.h: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 126;
- vrLoc = 0;
- };
8D01CCC60486CAD60068D4B7 /* Floor */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3
index 51cf855..d5526e2 100755
--- a/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>745 315 810 487 0 0 1440 878 </string>
+ <string>517 310 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,11 +350,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B15DD2C217AA6B4007AD769</string>
+ <string>8B792C4321F4194B006E9731</string>
<key>history</key>
<array>
<string>8BE625F22157B1F000E4E476</string>
- <string>8BE6261E2157B2E800E4E476</string>
+ <string>8B792C3E21F4179E006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 102}}</string>
<key>RubberWindowFrame</key>
- <string>745 315 810 487 0 0 1440 878 </string>
+ <string>517 310 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>102pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>339pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
- <key>RubberWindowFrame</key>
- <string>745 315 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 312}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 312}}</string>
+ <key>RubberWindowFrame</key>
+ <string>517 310 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B15DD08217AA44C007AD769</string>
+ <string>8B792C4421F4194B006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B15DD09217AA44C007AD769</string>
+ <string>8B792C4521F4194B006E9731</string>
<string>8BE625F02157B1F000E4E476</string>
- <string>8B15DD0A217AA44C007AD769</string>
+ <string>8B792C4621F4194B006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561686196.25954103</real>
+ <real>569645387.98353899</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -656,7 +654,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Floor/Floor.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>745 315 810 487 0 0 1440 878 </string>
+ <string>517 310 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Fracture/Fracture.cpp b/plugins/MacAU/Fracture/Fracture.cpp
index f6a7186..4818270 100755
--- a/plugins/MacAU/Fracture/Fracture.cpp
+++ b/plugins/MacAU/Fracture/Fracture.cpp
@@ -182,9 +182,7 @@ ComponentResult Fracture::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Fracture::FractureKernel::Reset()
{
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -211,11 +209,7 @@ void Fracture::FractureKernel::Process( const Float32 *inSourceP,
Float64 wet = GetParameter( kParam_Four );
Float64 dry = 1.0-wet;
Float64 bridgerectifier;
- density = density * fabs(density);
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
-
+ density = density * fabs(density);
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -261,19 +255,11 @@ void Fracture::FractureKernel::Process( const Float32 *inSourceP,
inputSample = (drySample * dry)+(inputSample*wet);
//that simple.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels;
diff --git a/plugins/MacAU/Fracture/Fracture.exp b/plugins/MacAU/Fracture/Fracture.exp
index b485428..9eb17a5 100755
--- a/plugins/MacAU/Fracture/Fracture.exp
+++ b/plugins/MacAU/Fracture/Fracture.exp
@@ -1 +1 @@
-_FractureEntry \ No newline at end of file
+_FractureEntry
diff --git a/plugins/MacAU/Fracture/Fracture.h b/plugins/MacAU/Fracture/Fracture.h
index aa9a6f5..1dccb92 100755
--- a/plugins/MacAU/Fracture/Fracture.h
+++ b/plugins/MacAU/Fracture/Fracture.h
@@ -134,9 +134,7 @@ public:
virtual void Reset();
private:
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser
index 9e2cdb2..4efb520 100755
--- a/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser
@@ -49,19 +49,51 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456201;
- PBXWorkspaceStateSaveDate = 528456201;
+ PBXPerProjectTemplateStateSaveDate = 569645423;
+ PBXWorkspaceStateSaveDate = 569645423;
+ };
+ perUserProjectItems = {
+ 8B792C5521F41A58006E9731 /* PBXTextBookmark */ = 8B792C5521F41A58006E9731 /* PBXTextBookmark */;
+ 8B792C5B21F41AB6006E9731 /* PBXTextBookmark */ = 8B792C5B21F41AB6006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B792C5521F41A58006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Fracture.cpp */;
+ name = "Fracture.cpp: 248";
+ rLen = 0;
+ rLoc = 11543;
+ rType = 0;
+ vrLen = 312;
+ vrLoc = 11562;
+ };
+ 8B792C5B21F41AB6006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Fracture.cpp */;
+ name = "Fracture.cpp: 248";
+ rLen = 0;
+ rLoc = 11543;
+ rType = 0;
+ vrLen = 312;
+ vrLoc = 11562;
+ };
8BA05A660720730100365D66 /* Fracture.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {964, 3913}}";
- sepNavSelRange = "{11687, 0}";
- sepNavVisRange = "{9717, 2345}";
- sepNavWindowFrame = "{{517, 41}, {923, 837}}";
+ sepNavIntBoundsRect = "{{0, 0}, {621, 3718}}";
+ sepNavSelRange = "{11543, 0}";
+ sepNavVisRange = "{11562, 312}";
+ sepNavWindowFrame = "{{365, 41}, {923, 837}}";
+ };
+ };
+ 8BA05A670720730100365D66 /* Fracture.exp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}";
+ sepNavSelRange = "{15, 0}";
+ sepNavVisRange = "{0, 15}";
+ sepNavWindowFrame = "{{15, 51}, {1300, 822}}";
};
};
8BA05A690720730100365D66 /* FractureVersion.h */ = {
@@ -74,9 +106,9 @@
};
8BC6025B073B072D006C4272 /* Fracture.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {922, 1846}}";
- sepNavSelRange = "{5434, 0}";
- sepNavVisRange = "{3891, 1652}";
+ sepNavIntBoundsRect = "{{0, 0}, {922, 1859}}";
+ sepNavSelRange = "{5401, 0}";
+ sepNavVisRange = "{3843, 1667}";
sepNavWindowFrame = "{{517, 39}, {923, 837}}";
};
};
diff --git a/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3
index 46cfa67..a5f791e 100755
--- a/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>5</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>362 267 810 487 0 0 1440 878 </string>
+ <string>431 299 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -340,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B9CE5211DFF96EB00A5DC6F</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>Fracture.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -348,7 +348,15 @@
<key>PBXProjectModuleGUID</key>
<string>8B9CE5221DFF96EB00A5DC6F</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>Fracture.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B792C5B21F41AB6006E9731</string>
+ <key>history</key>
+ <array>
+ <string>8B792C5521F41A58006E9731</string>
+ </array>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -361,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 0}}</string>
+ <string>{{0, 0}, {603, 132}}</string>
<key>RubberWindowFrame</key>
- <string>362 267 810 487 0 0 1440 878 </string>
+ <string>431 299 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>0pt</string>
+ <string>132pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>441pt</string>
+ <string>309pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -386,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>362 267 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 282}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -442,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 282}}</string>
+ <key>RubberWindowFrame</key>
+ <string>431 299 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -470,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D742C1F7F9A57007AB60F</string>
+ <string>8B792C5C21F41AB6006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D742D1F7F9A57007AB60F</string>
+ <string>8B792C5D21F41AB6006E9731</string>
<string>8B9CE5211DFF96EB00A5DC6F</string>
- <string>8B9D742E1F7F9A57007AB60F</string>
+ <string>8B792C5E21F41AB6006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -627,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456279.90402597</real>
+ <real>569645750.04603803</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -644,11 +652,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D742F1F7F9A57007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Fracture/Fracture.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>362 267 810 487 0 0 1440 878 </string>
+ <string>431 299 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/FromTape/FromTape.cpp b/plugins/MacAU/FromTape/FromTape.cpp
index 4a305e9..30fe41a 100755
--- a/plugins/MacAU/FromTape/FromTape.cpp
+++ b/plugins/MacAU/FromTape/FromTape.cpp
@@ -221,9 +221,7 @@ void FromTape::FromTapeKernel::Reset()
iirSampleZ = 0.0;
flip = 0;
//noisesource = 0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -259,9 +257,6 @@ void FromTape::FromTapeKernel::Process( const Float32 *inSourceP,
long double inputSample;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -378,19 +373,11 @@ void FromTape::FromTapeKernel::Process( const Float32 *inSourceP,
inputSample = (inputSample * wet) + (drySample * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/FromTape/FromTape.h b/plugins/MacAU/FromTape/FromTape.h
index f79862f..e9156d5 100755
--- a/plugins/MacAU/FromTape/FromTape.h
+++ b/plugins/MacAU/FromTape/FromTape.h
@@ -169,9 +169,7 @@ public:
Float64 iirSampleZ;
int flip;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser
index a9b7fe9..3594710 100755
--- a/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser
@@ -49,27 +49,28 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456291;
- PBXWorkspaceStateSaveDate = 528456291;
+ PBXPerProjectTemplateStateSaveDate = 569646762;
+ PBXWorkspaceStateSaveDate = 569646762;
};
perUserProjectItems = {
- 8B2B77731F6D6F8D00A2CD5B /* PBXTextBookmark */ = 8B2B77731F6D6F8D00A2CD5B /* PBXTextBookmark */;
+ 8B792C7021F41F11006E9731 /* PlistBookmark */ = 8B792C7021F41F11006E9731 /* PlistBookmark */;
8B8845F81F20429900E13453 /* PlistBookmark */ = 8B8845F81F20429900E13453 /* PlistBookmark */;
- 8B9D743A1F7F9A77007AB60F /* PBXTextBookmark */ = 8B9D743A1F7F9A77007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B2B77731F6D6F8D00A2CD5B /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* FromTape.h */;
- name = "FromTape.h: 172";
- rLen = 65;
- rLoc = 6216;
- rType = 0;
- vrLen = 40;
- vrLoc = 6241;
+ 8B792C7021F41F11006E9731 /* PlistBookmark */ = {
+ isa = PlistBookmark;
+ fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
+ fallbackIsa = PBXBookmark;
+ isK = 0;
+ kPath = (
+ CFBundleName,
+ );
+ name = /Users/christopherjohnson/Desktop/MacAU/FromTape/Info.plist;
+ rLen = 0;
+ rLoc = 9223372036854775807;
};
8B8845F81F20429900E13453 /* PlistBookmark */ = {
isa = PlistBookmark;
@@ -83,22 +84,12 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B9D743A1F7F9A77007AB60F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* FromTape.h */;
- name = "FromTape.h: 172";
- rLen = 65;
- rLoc = 6216;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
8BA05A660720730100365D66 /* FromTape.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {663, 5291}}";
- sepNavSelRange = "{17764, 148}";
- sepNavVisRange = "{0, 0}";
- sepNavWindowFrame = "{{410, 39}, {1005, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {958, 4849}}";
+ sepNavSelRange = "{18025, 0}";
+ sepNavVisRange = "{16126, 1987}";
+ sepNavWindowFrame = "{{208, 39}, {1005, 839}}";
};
};
8BA05A690720730100365D66 /* FromTapeVersion.h */ = {
@@ -111,8 +102,8 @@
};
8BC6025B073B072D006C4272 /* FromTape.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {482, 2418}}";
- sepNavSelRange = "{6216, 65}";
+ sepNavIntBoundsRect = "{{0, 0}, {482, 2392}}";
+ sepNavSelRange = "{6238, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{238, 39}, {1005, 839}}";
};
diff --git a/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3
index 9ea14ce..dbd983d 100755
--- a/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -341,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>FromTape.h</string>
+ <string>Info.plist</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,15 +347,14 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>FromTape.h</string>
+ <string>Info.plist</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D743A1F7F9A77007AB60F</string>
+ <string>8B792C7021F41F11006E9731</string>
<key>history</key>
<array>
<string>8B8845F81F20429900E13453</string>
- <string>8B2B77731F6D6F8D00A2CD5B</string>
</array>
</dict>
<key>SplitCount</key>
@@ -397,8 +394,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {531, 581}}</string>
- <key>RubberWindowFrame</key>
- <string>187 187 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 525}}</string>
+ <string>{{10, 27}, {531, 581}}</string>
+ <key>RubberWindowFrame</key>
+ <string>187 187 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D743B1F7F9A77007AB60F</string>
+ <string>8B792C7121F41F11006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D743C1F7F9A77007AB60F</string>
+ <string>8B792C7221F41F11006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D743D1F7F9A77007AB60F</string>
+ <string>8B792C7321F41F11006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +654,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456311.18495703</real>
+ <real>569646865.43937504</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,7 +671,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D743E1F7F9A77007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/FromTape/FromTape.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacAU/Gatelinked/Gatelinked.cpp b/plugins/MacAU/Gatelinked/Gatelinked.cpp
index 9c0c484..641b64d 100755
--- a/plugins/MacAU/Gatelinked/Gatelinked.cpp
+++ b/plugins/MacAU/Gatelinked/Gatelinked.cpp
@@ -310,7 +310,7 @@ OSStatus Gatelinked::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFl
if (highestSample > threshold)
{
treblefreq += attackSpeed;
- if (treblefreq > 1.0) treblefreq = 1.0;
+ if (treblefreq > 2.0) treblefreq = 2.0;
bassfreq -= attackSpeed;
bassfreq -= attackSpeed;
if (bassfreq < 0.0) bassfreq = 0.0;
@@ -337,6 +337,8 @@ OSStatus Gatelinked::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFl
iirLowpassAR = (iirLowpassAR * (1.0 - treblefreq)) + (inputSampleR * treblefreq);
}
+ if (bassfreq > 1.0) bassfreq = 1.0;
+
if (bassfreq > 0.0) {
iirHighpassAL = (iirHighpassAL * (1.0 - bassfreq)) + (inputSampleL * bassfreq);
iirHighpassAR = (iirHighpassAR * (1.0 - bassfreq)) + (inputSampleR * bassfreq);
@@ -358,7 +360,7 @@ OSStatus Gatelinked::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFl
if (highestSample > threshold)
{
treblefreq += attackSpeed;
- if (treblefreq > 1.0) treblefreq = 1.0;
+ if (treblefreq > 2.0) treblefreq = 2.0;
bassfreq -= attackSpeed;
bassfreq -= attackSpeed;
if (bassfreq < 0.0) bassfreq = 0.0;
@@ -385,6 +387,8 @@ OSStatus Gatelinked::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFl
iirLowpassBR = (iirLowpassBR * (1.0 - treblefreq)) + (inputSampleR * treblefreq);
}
+ if (bassfreq > 1.0) bassfreq = 1.0;
+
if (bassfreq > 0.0) {
iirHighpassBL = (iirHighpassBL * (1.0 - bassfreq)) + (inputSampleL * bassfreq);
iirHighpassBR = (iirHighpassBR * (1.0 - bassfreq)) + (inputSampleR * bassfreq);
@@ -408,18 +412,14 @@ OSStatus Gatelinked::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFl
flip = !flip;
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
@@ -430,12 +430,6 @@ OSStatus Gatelinked::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFl
outputL += 1;
outputR += 1;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
return noErr;
}
diff --git a/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.pbxuser
index 21b7e89..9dd8e83 100755
--- a/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 565400646;
- PBXWorkspaceStateSaveDate = 565400646;
+ PBXPerProjectTemplateStateSaveDate = 569646892;
+ PBXWorkspaceStateSaveDate = 569646892;
};
perUserProjectItems = {
8B0209B221B3258000952287 /* PBXTextBookmark */ = 8B0209B221B3258000952287 /* PBXTextBookmark */;
- 8B0209B421B3258000952287 /* PBXTextBookmark */ = 8B0209B421B3258000952287 /* PBXTextBookmark */;
- 8B020A3621B354DE00952287 /* PBXTextBookmark */ = 8B020A3621B354DE00952287 /* PBXTextBookmark */;
+ 8B416D4621B5FDC600DD5013 /* PBXTextBookmark */ = 8B416D4621B5FDC600DD5013 /* PBXTextBookmark */;
+ 8B792C8121F41F65006E9731 /* PBXTextBookmark */ = 8B792C8121F41F65006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -71,39 +71,39 @@
vrLen = 140;
vrLoc = 5351;
};
- 8B0209B421B3258000952287 /* PBXTextBookmark */ = {
+ 8B416D4621B5FDC600DD5013 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* GatelinkedVersion.h */;
name = "GatelinkedVersion.h: 54";
rLen = 0;
rLoc = 2902;
rType = 0;
- vrLen = 139;
+ vrLen = 130;
vrLoc = 2826;
};
- 8B020A3621B354DE00952287 /* PBXTextBookmark */ = {
+ 8B792C8121F41F65006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* GatelinkedVersion.h */;
name = "GatelinkedVersion.h: 54";
rLen = 0;
rLoc = 2902;
rType = 0;
- vrLen = 131;
+ vrLen = 130;
vrLoc = 2826;
};
8BA05A660720730100365D66 /* Gatelinked.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1105, 6136}}";
- sepNavSelRange = "{15096, 0}";
- sepNavVisRange = "{14897, 1807}";
+ sepNavIntBoundsRect = "{{0, 0}, {1105, 6071}}";
+ sepNavSelRange = "{16752, 0}";
+ sepNavVisRange = "{15147, 1623}";
sepNavWindowFrame = "{{177, 58}, {1152, 820}}";
};
};
8BA05A690720730100365D66 /* GatelinkedVersion.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {761, 936}}";
+ sepNavIntBoundsRect = "{{0, 0}, {456, 871}}";
sepNavSelRange = "{2902, 0}";
- sepNavVisRange = "{2826, 131}";
+ sepNavVisRange = "{2826, 130}";
sepNavWindowFrame = "{{15, 43}, {705, 830}}";
};
};
@@ -118,7 +118,7 @@
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {894, 1833}}";
sepNavSelRange = "{5276, 0}";
- sepNavVisRange = "{2524, 1545}";
+ sepNavVisRange = "{3729, 1930}";
sepNavWindowFrame = "{{735, 48}, {705, 830}}";
};
};
diff --git a/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.perspectivev3
index caae9ee..acd4314 100755
--- a/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Gatelinked/Gatelinked.xcodeproj/christopherjohnson.perspectivev3
@@ -324,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>622 458 815 376 0 0 1440 878 </string>
+ <string>491 452 815 376 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,11 +352,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B020A3621B354DE00952287</string>
+ <string>8B792C8121F41F65006E9731</string>
<key>history</key>
<array>
<string>8B0209B221B3258000952287</string>
- <string>8B0209B421B3258000952287</string>
+ <string>8B416D4621B5FDC600DD5013</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {505, 84}}</string>
+ <string>{{0, 0}, {505, 51}}</string>
<key>RubberWindowFrame</key>
- <string>622 458 815 376 0 0 1440 878 </string>
+ <string>491 452 815 376 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>84pt</string>
+ <string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>246pt</string>
+ <string>279pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {505, 219}}</string>
+ <string>{{10, 27}, {505, 252}}</string>
<key>RubberWindowFrame</key>
- <string>622 458 815 376 0 0 1440 878 </string>
+ <string>491 452 815 376 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +451,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {505, 303}}</string>
+ <string>{{10, 27}, {505, 235}}</string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B020A3721B354DE00952287</string>
+ <string>8B792C8221F41F65006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B020A3821B354DE00952287</string>
+ <string>8B792C8321F41F65006E9731</string>
<string>8BCAE2B921B0AD04005A3737</string>
- <string>8B020A3921B354DE00952287</string>
+ <string>8B792C8421F41F65006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>565400798.62677002</real>
+ <real>569646949.70571005</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +653,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B020A3A21B354DE00952287</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Gatelinked/Gatelinked.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>622 458 815 376 0 0 1440 878 </string>
+ <string>491 452 815 376 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Gatelope/Gatelope.cpp b/plugins/MacAU/Gatelope/Gatelope.cpp
index bde6522..3f6ed4e 100755
--- a/plugins/MacAU/Gatelope/Gatelope.cpp
+++ b/plugins/MacAU/Gatelope/Gatelope.cpp
@@ -334,23 +334,15 @@ void Gatelope::GatelopeKernel::Process( const Float32 *inSourceP,
flip = !flip;
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser
index 7846c86..fdc4740 100755
--- a/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser
@@ -49,15 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 565571362;
- PBXWorkspaceStateSaveDate = 565571362;
+ PBXPerProjectTemplateStateSaveDate = 569646970;
+ PBXWorkspaceStateSaveDate = 569646970;
};
perUserProjectItems = {
8B0209A521B3215F00952287 /* PlistBookmark */ = 8B0209A521B3215F00952287 /* PlistBookmark */;
- 8B416D2421B5EF2500DD5013 /* PBXBookmark */ = 8B416D2421B5EF2500DD5013 /* PBXBookmark */;
- 8B416D2921B5FD1F00DD5013 /* PBXTextBookmark */ = 8B416D2921B5FD1F00DD5013 /* PBXTextBookmark */;
- 8B416D2E21B5FD3000DD5013 /* PBXTextBookmark */ = 8B416D2E21B5FD3000DD5013 /* PBXTextBookmark */;
- 8B416D3421B5FD3000DD5013 /* PBXTextBookmark */ = 8B416D3421B5FD3000DD5013 /* PBXTextBookmark */;
+ 8B792C9021F41F9A006E9731 /* PBXTextBookmark */ = 8B792C9021F41F9A006E9731 /* PBXTextBookmark */;
+ 8B792C9521F420BF006E9731 /* PBXTextBookmark */ = 8B792C9521F420BF006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -75,11 +73,7 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B416D2421B5EF2500DD5013 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 8BA05A660720730100365D66 /* Gatelope.cpp */;
- };
- 8B416D2921B5FD1F00DD5013 /* PBXTextBookmark */ = {
+ 8B792C9021F41F9A006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* GatelopeVersion.h */;
name = "GatelopeVersion.h: 54";
@@ -89,7 +83,7 @@
vrLen = 126;
vrLoc = 2816;
};
- 8B416D2E21B5FD3000DD5013 /* PBXTextBookmark */ = {
+ 8B792C9521F420BF006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* GatelopeVersion.h */;
name = "GatelopeVersion.h: 54";
@@ -99,22 +93,12 @@
vrLen = 126;
vrLoc = 2816;
};
- 8B416D3421B5FD3000DD5013 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Gatelope.cpp */;
- name = "Gatelope.cpp: 325";
- rLen = 0;
- rLoc = 13129;
- rType = 0;
- vrLen = 1897;
- vrLoc = 12493;
- };
8BA05A660720730100365D66 /* Gatelope.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1082, 5057}}";
- sepNavSelRange = "{13129, 0}";
- sepNavVisRange = "{12493, 1897}";
- sepNavWindowFrame = "{{15, 39}, {1129, 834}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1082, 4979}}";
+ sepNavSelRange = "{13893, 0}";
+ sepNavVisRange = "{12404, 1492}";
+ sepNavWindowFrame = "{{185, 44}, {1129, 834}}";
};
};
8BA05A670720730100365D66 /* Gatelope.exp */ = {
@@ -127,7 +111,7 @@
};
8BA05A690720730100365D66 /* GatelopeVersion.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {456, 923}}";
+ sepNavIntBoundsRect = "{{0, 0}, {456, 871}}";
sepNavSelRange = "{2884, 4}";
sepNavVisRange = "{2816, 126}";
sepNavWindowFrame = "{{15, 43}, {705, 830}}";
diff --git a/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3
index 1a46c04..7009de0 100755
--- a/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3
@@ -222,48 +222,7 @@
</dict>
</array>
<key>OpenEditors</key>
- <array>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B416D3221B5FD3000DD5013</string>
- <key>PBXProjectModuleLabel</key>
- <string>Gatelope.cpp</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B416D3321B5FD3000DD5013</string>
- <key>PBXProjectModuleLabel</key>
- <string>Gatelope.cpp</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>8B416D3421B5FD3000DD5013</string>
- <key>history</key>
- <array>
- <string>8B416D2421B5EF2500DD5013</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {1129, 737}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>15 95 1129 778 0 0 1440 878 </string>
- </dict>
- </dict>
- </array>
+ <array/>
<key>PerspectiveWidths</key>
<array>
<integer>815</integer>
@@ -365,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>46 385 815 372 0 0 1440 878 </string>
+ <string>278 409 815 372 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -393,11 +352,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B416D2E21B5FD3000DD5013</string>
+ <string>8B792C9521F420BF006E9731</string>
<key>history</key>
<array>
<string>8B0209A521B3215F00952287</string>
- <string>8B416D2921B5FD1F00DD5013</string>
+ <string>8B792C9021F41F9A006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -411,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {505, 67}}</string>
+ <string>{{0, 0}, {505, 50}}</string>
<key>RubberWindowFrame</key>
- <string>46 385 815 372 0 0 1440 878 </string>
+ <string>278 409 815 372 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>67pt</string>
+ <string>50pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>259pt</string>
+ <string>276pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -436,7 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {505, 232}}</string>
+ <string>{{10, 27}, {505, 249}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -490,9 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {505, 232}}</string>
+ <string>{{10, 27}, {505, 249}}</string>
<key>RubberWindowFrame</key>
- <string>46 385 815 372 0 0 1440 878 </string>
+ <string>278 409 815 372 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -520,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B416D2F21B5FD3000DD5013</string>
+ <string>8B792C9621F420BF006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B416D3021B5FD3000DD5013</string>
+ <string>8B792C9721F420BF006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B416D3121B5FD3000DD5013</string>
+ <string>8B792C9821F420BF006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -697,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>565574960.58745801</real>
+ <real>569647295.48975003</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -714,11 +673,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B416D3221B5FD3000DD5013</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Gatelope/Gatelope.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>46 385 815 372 0 0 1440 878 </string>
+ <string>278 409 815 372 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Golem/Golem.cpp b/plugins/MacAU/Golem/Golem.cpp
index 25ac011..e6f1566 100755
--- a/plugins/MacAU/Golem/Golem.cpp
+++ b/plugins/MacAU/Golem/Golem.cpp
@@ -210,11 +210,8 @@ ComponentResult Golem::Reset(AudioUnitScope inScope, AudioUnitElement inElement
{
for(count = 0; count < 4098; count++) {p[count] = 0.0;}
count = 0;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
- flip = false;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
return noErr;
}
@@ -233,9 +230,6 @@ OSStatus Golem::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags,
Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData);
Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData);
UInt32 nSampleFrames = inFramesToProcess;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int phase = (int) GetParameter( kParam_Three );
Float64 balance = GetParameter( kParam_One ) / 2.0;
Float64 gainL = 0.5 - balance;
@@ -333,32 +327,15 @@ OSStatus Golem::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags,
inputSampleR = inputSampleL;
//the output is totally mono
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
-
- *outputL = inputSampleL;
- *outputR = inputSampleR;
- //don't know why we're getting a volume boost, cursed thing
-
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+
*outputL = inputSampleL;
*outputR = inputSampleR;
//We have pointers to increment- every actual value reference has to be to a *value
diff --git a/plugins/MacAU/Golem/Golem.h b/plugins/MacAU/Golem/Golem.h
index ecaeea5..d66b91f 100755
--- a/plugins/MacAU/Golem/Golem.h
+++ b/plugins/MacAU/Golem/Golem.h
@@ -132,11 +132,8 @@ public:
private:
Float64 p[4099];
int count;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
- bool flip;
+ long double fpNShapeL;
+ long double fpNShapeR;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.pbxuser
index 9e13ec7..91361ce 100755
--- a/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.pbxuser
@@ -49,23 +49,43 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 546574392;
- PBXWorkspaceStateSaveDate = 546574392;
+ PBXPerProjectTemplateStateSaveDate = 569647319;
+ PBXWorkspaceStateSaveDate = 569647319;
};
perUserProjectItems = {
- 8BC5D0B6209410C50058B257 /* PBXTextBookmark */ = 8BC5D0B6209410C50058B257 /* PBXTextBookmark */;
- 8BC5D0B7209410C50058B257 /* PBXTextBookmark */ = 8BC5D0B7209410C50058B257 /* PBXTextBookmark */;
+ 8B792CA721F42166006E9731 /* PBXTextBookmark */ = 8B792CA721F42166006E9731 /* PBXTextBookmark */;
+ 8B792CAC21F42187006E9731 /* PBXTextBookmark */ = 8B792CAC21F42187006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B792CA721F42166006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Golem.cpp */;
+ name = "Golem.cpp: 296";
+ rLen = 831;
+ rLoc = 12420;
+ rType = 0;
+ vrLen = 126;
+ vrLoc = 12547;
+ };
+ 8B792CAC21F42187006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Golem.cpp */;
+ name = "Golem.cpp: 296";
+ rLen = 831;
+ rLoc = 12420;
+ rType = 0;
+ vrLen = 126;
+ vrLoc = 12547;
+ };
8BA05A660720730100365D66 /* Golem.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 4979}}";
- sepNavSelRange = "{12592, 831}";
- sepNavVisRange = "{12592, 178}";
- sepNavWindowFrame = "{{702, 65}, {714, 813}}";
+ sepNavIntBoundsRect = "{{0, 0}, {677, 4680}}";
+ sepNavSelRange = "{12420, 831}";
+ sepNavVisRange = "{12547, 126}";
+ sepNavWindowFrame = "{{548, 65}, {714, 813}}";
};
};
8BA05A670720730100365D66 /* Golem.exp */ = {
@@ -84,32 +104,12 @@
sepNavWindowFrame = "{{601, -12}, {877, 831}}";
};
};
- 8BC5D0B6209410C50058B257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Golem.cpp */;
- name = "Golem.cpp: 302";
- rLen = 831;
- rLoc = 12592;
- rType = 0;
- vrLen = 178;
- vrLoc = 12592;
- };
- 8BC5D0B7209410C50058B257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Golem.cpp */;
- name = "Golem.cpp: 302";
- rLen = 831;
- rLoc = 12592;
- rType = 0;
- vrLen = 178;
- vrLoc = 12592;
- };
8BC6025B073B072D006C4272 /* Golem.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {974, 1885}}";
- sepNavSelRange = "{5566, 30}";
- sepNavVisRange = "{1674, 2178}";
- sepNavWindowFrame = "{{655, 43}, {1021, 800}}";
+ sepNavIntBoundsRect = "{{0, 0}, {974, 1833}}";
+ sepNavSelRange = "{5596, 0}";
+ sepNavVisRange = "{4025, 1724}";
+ sepNavWindowFrame = "{{419, 43}, {1021, 800}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3
index c96e719..30ddbd9 100755
--- a/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>619 304 810 487 0 0 1440 878 </string>
+ <string>478 304 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BC5D0B7209410C50058B257</string>
+ <string>8B792CAC21F42187006E9731</string>
<key>history</key>
<array>
- <string>8BC5D0B6209410C50058B257</string>
+ <string>8B792CA721F42166006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>619 304 810 487 0 0 1440 878 </string>
+ <string>478 304 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>619 304 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 297}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>478 304 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC5D0B8209410C50058B257</string>
+ <string>8B792CAD21F42187006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC5D0B9209410C50058B257</string>
+ <string>8B792CAE21F42187006E9731</string>
<string>8B8D6996207ABA9A0029B7B0</string>
- <string>8BC5D0BA209410C50058B257</string>
+ <string>8B792CAF21F42187006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>546574533.255705</real>
+ <real>569647495.88627398</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +650,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BC5D0BB209410C50058B257</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Golem/Golem.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>619 304 810 487 0 0 1440 878 </string>
+ <string>478 304 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/GrooveWear/GrooveWear.cpp b/plugins/MacAU/GrooveWear/GrooveWear.cpp
index baf7ac4..62c9634 100644..100755
--- a/plugins/MacAU/GrooveWear/GrooveWear.cpp
+++ b/plugins/MacAU/GrooveWear/GrooveWear.cpp
@@ -177,9 +177,7 @@ void GrooveWear::GrooveWearKernel::Reset()
bMidPrev = 0.0;
cMidPrev = 0.0;
dMidPrev = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -194,9 +192,6 @@ void GrooveWear::GrooveWearKernel::Process( const Float32 *inSourceP,
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
Float64 overallscale = (pow(GetParameter( kParam_One ),2)*19.0)+1.0;
Float64 gain = overallscale;
@@ -449,19 +444,11 @@ void GrooveWear::GrooveWearKernel::Process( const Float32 *inSourceP,
inputSample = (inputSample * dWet) + (drySample * dDry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/GrooveWear/GrooveWear.h b/plugins/MacAU/GrooveWear/GrooveWear.h
index b9e7722..5f86da8 100644..100755
--- a/plugins/MacAU/GrooveWear/GrooveWear.h
+++ b/plugins/MacAU/GrooveWear/GrooveWear.h
@@ -138,9 +138,7 @@ public:
Float64 cMidPrev;
Float64 dMidPrev;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.mode1v3
index f301be9..f301be9 100644..100755
--- a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.mode1v3
+++ b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.mode1v3
diff --git a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser
index bdb3283..1980dfa 100644..100755
--- a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,15 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538681963;
- PBXWorkspaceStateSaveDate = 538681963;
+ PBXPerProjectTemplateStateSaveDate = 569647523;
+ PBXWorkspaceStateSaveDate = 569647523;
};
perUserProjectItems = {
8B0E2BD7201B927800943268 /* PlistBookmark */ = 8B0E2BD7201B927800943268 /* PlistBookmark */;
8B0E2BD8201B927800943268 /* PBXTextBookmark */ = 8B0E2BD8201B927800943268 /* PBXTextBookmark */;
- 8B4E5400201BA1BA00B5DC2A /* PBXTextBookmark */ = 8B4E5400201BA1BA00B5DC2A /* PBXTextBookmark */;
- 8B4E5435201BA7FC00B5DC2A /* PBXTextBookmark */ = 8B4E5435201BA7FC00B5DC2A /* PBXTextBookmark */;
+ 8B181B43204CA16500516BEE /* PBXTextBookmark */ = 8B181B43204CA16500516BEE /* PBXTextBookmark */;
+ 8B792CBD21F42257006E9731 /* PBXTextBookmark */ = 8B792CBD21F42257006E9731 /* PBXTextBookmark */;
+ 8B792CC221F422B5006E9731 /* PBXTextBookmark */ = 8B792CC221F422B5006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -84,47 +85,57 @@
vrLen = 297;
vrLoc = 2667;
};
- 8B4E5400201BA1BA00B5DC2A /* PBXTextBookmark */ = {
+ 8B181B43204CA16500516BEE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* GrooveWear.h */;
name = "GrooveWear.h: 135";
rLen = 0;
rLoc = 5282;
rType = 0;
- vrLen = 272;
- vrLoc = 2923;
+ vrLen = 217;
+ vrLoc = 2978;
};
- 8B4E5435201BA7FC00B5DC2A /* PBXTextBookmark */ = {
+ 8B792CBD21F42257006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* GrooveWear.h */;
- name = "GrooveWear.h: 135";
- rLen = 0;
- rLoc = 5282;
+ fRef = 8BA05A660720730100365D66 /* GrooveWear.cpp */;
+ name = "GrooveWear.cpp: 336";
+ rLen = 90;
+ rLoc = 15454;
+ rType = 0;
+ vrLen = 324;
+ vrLoc = 15544;
+ };
+ 8B792CC221F422B5006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* GrooveWear.cpp */;
+ name = "GrooveWear.cpp: 336";
+ rLen = 90;
+ rLoc = 15454;
rType = 0;
- vrLen = 271;
- vrLoc = 2924;
+ vrLen = 324;
+ vrLoc = 15544;
};
8BA05A660720730100365D66 /* GrooveWear.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 6123}}";
- sepNavSelRange = "{15606, 90}";
- sepNavVisRange = "{13375, 2804}";
- sepNavWindowFrame = "{{532, 39}, {895, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {677, 6058}}";
+ sepNavSelRange = "{15454, 90}";
+ sepNavVisRange = "{15544, 324}";
+ sepNavWindowFrame = "{{413, 39}, {895, 839}}";
};
};
8BA05A690720730100365D66 /* GrooveWearVersion.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 767}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 767}}";
sepNavSelRange = "{2897, 0}";
- sepNavVisRange = "{2667, 297}";
- sepNavWindowFrame = "{{15, 39}, {895, 839}}";
+ sepNavVisRange = "{50, 2915}";
+ sepNavWindowFrame = "{{593, 37}, {895, 839}}";
};
};
8BC6025B073B072D006C4272 /* GrooveWear.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {761, 2275}}";
- sepNavSelRange = "{5282, 0}";
- sepNavVisRange = "{2924, 271}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1898}}";
+ sepNavSelRange = "{5410, 0}";
+ sepNavVisRange = "{4014, 1506}";
sepNavWindowFrame = "{{542, 39}, {895, 839}}";
};
};
diff --git a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3
index a0182a0..3db790a 100644..100755
--- a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -302,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>603 113 841 654 0 0 1440 878 </string>
+ <string>442 219 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -342,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>GrooveWear.h</string>
+ <string>GrooveWear.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -350,16 +348,17 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>GrooveWear.h</string>
+ <string>GrooveWear.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4E5435201BA7FC00B5DC2A</string>
+ <string>8B792CC221F422B5006E9731</string>
<key>history</key>
<array>
<string>8B0E2BD7201B927800943268</string>
<string>8B0E2BD8201B927800943268</string>
- <string>8B4E5400201BA1BA00B5DC2A</string>
+ <string>8B181B43204CA16500516BEE</string>
+ <string>8B792CBD21F42257006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +372,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 142}}</string>
+ <string>{{0, 0}, {531, 109}}</string>
<key>RubberWindowFrame</key>
- <string>603 113 841 654 0 0 1440 878 </string>
+ <string>442 219 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>142pt</string>
+ <string>109pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>466pt</string>
+ <string>499pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +397,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 439}}</string>
- <key>RubberWindowFrame</key>
- <string>603 113 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 472}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +451,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 365}}</string>
+ <string>{{10, 27}, {531, 472}}</string>
+ <key>RubberWindowFrame</key>
+ <string>442 219 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -482,11 +481,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E540C201BA27000B5DC2A</string>
+ <string>8B792CC321F422B5006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E540D201BA27000B5DC2A</string>
+ <string>8B792CC421F422B5006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B4E540E201BA27000B5DC2A</string>
+ <string>8B792CC521F422B5006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +658,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538683388.29162097</real>
+ <real>569647797.66937697</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -679,7 +678,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/GrooveWear/GrooveWear.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>603 113 841 654 0 0 1440 878 </string>
+ <string>442 219 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/project.pbxproj b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/project.pbxproj
index 06d3db0..06d3db0 100644..100755
--- a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/project.pbxproj
+++ b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/project.pbxproj
diff --git a/plugins/MacAU/GuitarConditioner/GuitarConditioner.cpp b/plugins/MacAU/GuitarConditioner/GuitarConditioner.cpp
index 232fd21..d3d23e6 100755
--- a/plugins/MacAU/GuitarConditioner/GuitarConditioner.cpp
+++ b/plugins/MacAU/GuitarConditioner/GuitarConditioner.cpp
@@ -150,8 +150,7 @@ ComponentResult GuitarConditioner::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void GuitarConditioner::GuitarConditionerKernel::Reset()
{
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
+ fpNShape = 0.0;
fpFlip = true;
lastSampleT = 0.0;
lastSampleB = 0.0; //for Slews. T for treble, B for bass
@@ -176,9 +175,6 @@ void GuitarConditioner::GuitarConditionerKernel::Process( const Float32 *inSou
long double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSample;
long double treble;
long double bass;
@@ -264,21 +260,14 @@ void GuitarConditioner::GuitarConditionerKernel::Process( const Float32 *inSou
lastSampleB = bass; //bass slew
inputSample = treble + bass; //final merge
+ fpFlip = !fpFlip;
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
diff --git a/plugins/MacAU/GuitarConditioner/GuitarConditioner.h b/plugins/MacAU/GuitarConditioner/GuitarConditioner.h
index 834905f..4ad6669 100755
--- a/plugins/MacAU/GuitarConditioner/GuitarConditioner.h
+++ b/plugins/MacAU/GuitarConditioner/GuitarConditioner.h
@@ -121,8 +121,7 @@ public:
virtual void Reset();
private:
- long double fpNShapeA;
- long double fpNShapeB;
+ long double fpNShape;
bool fpFlip;
Float64 lastSampleT;
Float64 lastSampleB; //for Slews
diff --git a/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser
index 27ab557..34d863a 100755
--- a/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456379;
- PBXWorkspaceStateSaveDate = 528456379;
+ PBXPerProjectTemplateStateSaveDate = 569648041;
+ PBXWorkspaceStateSaveDate = 569648041;
};
perUserProjectItems = {
8B3BE93A1D667DD60098F86C /* PBXTextBookmark */ = 8B3BE93A1D667DD60098F86C /* PBXTextBookmark */;
8B3BE93B1D667DD60098F86C /* PBXTextBookmark */ = 8B3BE93B1D667DD60098F86C /* PBXTextBookmark */;
- 8B9D64EE1F7C8859007AB60F /* PBXTextBookmark */ = 8B9D64EE1F7C8859007AB60F /* PBXTextBookmark */;
- 8B9D74491F7F9ACF007AB60F /* PBXTextBookmark */ = 8B9D74491F7F9ACF007AB60F /* PBXTextBookmark */;
+ 8B792CD321F42407006E9731 /* PBXTextBookmark */ = 8B792CD321F42407006E9731 /* PBXTextBookmark */;
+ 8B792CD921F42423006E9731 /* PBXTextBookmark */ = 8B792CD921F42423006E9731 /* PBXTextBookmark */;
8BC032BB1D6667CB0039F36E /* PlistBookmark */ = 8BC032BB1D6667CB0039F36E /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
@@ -68,7 +68,7 @@
fRef = 8BC6025B073B072D006C4272 /* GuitarConditioner.h */;
name = "GuitarConditioner.h: 126";
rLen = 0;
- rLoc = 5114;
+ rLoc = 5088;
rType = 0;
vrLen = 474;
vrLoc = 4808;
@@ -83,32 +83,32 @@
vrLen = 405;
vrLoc = 2608;
};
- 8B9D64EE1F7C8859007AB60F /* PBXTextBookmark */ = {
+ 8B792CD321F42407006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* GuitarConditioner.cpp */;
- name = "GuitarConditioner.cpp: 281";
+ name = "GuitarConditioner.cpp: 274";
rLen = 0;
- rLoc = 11852;
+ rLoc = 11616;
rType = 0;
- vrLen = 523;
- vrLoc = 10536;
+ vrLen = 476;
+ vrLoc = 10604;
};
- 8B9D74491F7F9ACF007AB60F /* PBXTextBookmark */ = {
+ 8B792CD921F42423006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* GuitarConditioner.cpp */;
- name = "GuitarConditioner.cpp: 281";
+ name = "GuitarConditioner.cpp: 271";
rLen = 0;
- rLoc = 11852;
+ rLoc = 11616;
rType = 0;
- vrLen = 502;
- vrLoc = 10557;
+ vrLen = 485;
+ vrLoc = 10548;
};
8BA05A660720730100365D66 /* GuitarConditioner.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {733, 3913}}";
- sepNavSelRange = "{11852, 0}";
- sepNavVisRange = "{10557, 502}";
- sepNavWindowFrame = "{{639, 40}, {801, 838}}";
+ sepNavIntBoundsRect = "{{0, 0}, {733, 3744}}";
+ sepNavSelRange = "{11616, 0}";
+ sepNavVisRange = "{10548, 485}";
+ sepNavWindowFrame = "{{377, 40}, {801, 838}}";
};
};
8BA05A690720730100365D66 /* GuitarConditionerVersion.h */ = {
@@ -133,10 +133,10 @@
};
8BC6025B073B072D006C4272 /* GuitarConditioner.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1833}}";
- sepNavSelRange = "{5115, 167}";
- sepNavVisRange = "{3840, 1555}";
- sepNavWindowFrame = "{{684, 40}, {801, 838}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1820}}";
+ sepNavSelRange = "{5073, 0}";
+ sepNavVisRange = "{3804, 1565}";
+ sepNavWindowFrame = "{{458, 40}, {801, 838}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3
index 9e238ca..1f67dae 100755
--- a/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>810</integer>
- <integer>810</integer>
+ <integer>841</integer>
+ <integer>841</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -325,7 +323,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>598 208 841 654 0 0 1440 878 </string>
+ <string>455 207 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,13 +351,13 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D74491F7F9ACF007AB60F</string>
+ <string>8B792CD921F42423006E9731</string>
<key>history</key>
<array>
<string>8BC032BB1D6667CB0039F36E</string>
<string>8B3BE93A1D667DD60098F86C</string>
<string>8B3BE93B1D667DD60098F86C</string>
- <string>8B9D64EE1F7C8859007AB60F</string>
+ <string>8B792CD321F42407006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 216}}</string>
+ <string>{{0, 0}, {531, 202}}</string>
<key>RubberWindowFrame</key>
- <string>598 208 841 654 0 0 1440 878 </string>
+ <string>455 207 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>216pt</string>
+ <string>202pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>392pt</string>
+ <string>406pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 365}}</string>
- <key>RubberWindowFrame</key>
- <string>598 208 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 379}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {531, 379}}</string>
+ <key>RubberWindowFrame</key>
+ <string>455 207 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -482,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D744A1F7F9ACF007AB60F</string>
+ <string>8B792CDA21F42423006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D744B1F7F9ACF007AB60F</string>
+ <string>8B792CDB21F42423006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D744C1F7F9ACF007AB60F</string>
+ <string>8B792CDC21F42423006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456399.548949</real>
+ <real>569648163.99752402</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -676,11 +674,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D744D1F7F9ACF007AB60F</string>
+ <string>8B792CDD21F42424006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>598 208 841 654 0 0 1440 878 </string>
+ <string>455 207 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/HardVacuum/HardVacuum.cpp b/plugins/MacAU/HardVacuum/HardVacuum.cpp
index 15bb5ec..d652431 100755
--- a/plugins/MacAU/HardVacuum/HardVacuum.cpp
+++ b/plugins/MacAU/HardVacuum/HardVacuum.cpp
@@ -191,9 +191,7 @@ ComponentResult HardVacuum::Initialize()
void HardVacuum::HardVacuumKernel::Reset()
{
lastSample = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -226,9 +224,6 @@ void HardVacuum::HardVacuumKernel::Process( const Float32 *inSourceP,
Float64 skew;
long double inputSample;
Float64 drySample;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -319,19 +314,11 @@ void HardVacuum::HardVacuumKernel::Process( const Float32 *inSourceP,
inputSample = (inputSample * wet) + (drySample * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/HardVacuum/HardVacuum.h b/plugins/MacAU/HardVacuum/HardVacuum.h
index ad9518d..b5b4116 100755
--- a/plugins/MacAU/HardVacuum/HardVacuum.h
+++ b/plugins/MacAU/HardVacuum/HardVacuum.h
@@ -139,9 +139,7 @@ public:
private:
Float64 lastSample;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser
index a26a4bf..35ae242 100755
--- a/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser
@@ -49,43 +49,43 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541823423;
- PBXWorkspaceStateSaveDate = 541823423;
+ PBXPerProjectTemplateStateSaveDate = 569648475;
+ PBXWorkspaceStateSaveDate = 569648475;
};
perUserProjectItems = {
- 8B1819FB204B936300516BEE /* PBXTextBookmark */ = 8B1819FB204B936300516BEE /* PBXTextBookmark */;
- 8B181A0D204B961F00516BEE /* PBXTextBookmark */ = 8B181A0D204B961F00516BEE /* PBXTextBookmark */;
+ 8B792CEB21F425BC006E9731 /* PBXTextBookmark */ = 8B792CEB21F425BC006E9731 /* PBXTextBookmark */;
+ 8B792CF121F425DC006E9731 /* PBXTextBookmark */ = 8B792CF121F425DC006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B1819FB204B936300516BEE /* PBXTextBookmark */ = {
+ 8B792CEB21F425BC006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* HardVacuum.h */;
name = "HardVacuum.h: 61";
rLen = 0;
rLoc = 3064;
rType = 0;
- vrLen = 334;
+ vrLen = 296;
vrLoc = 4037;
};
- 8B181A0D204B961F00516BEE /* PBXTextBookmark */ = {
+ 8B792CF121F425DC006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* HardVacuum.h */;
name = "HardVacuum.h: 61";
rLen = 0;
rLoc = 3064;
rType = 0;
- vrLen = 334;
+ vrLen = 296;
vrLoc = 4037;
};
8BA05A660720730100365D66 /* HardVacuum.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1098, 4758}}";
- sepNavSelRange = "{13965, 0}";
- sepNavVisRange = "{12718, 1710}";
- sepNavWindowFrame = "{{639, 60}, {1145, 812}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1098, 4303}}";
+ sepNavSelRange = "{10378, 0}";
+ sepNavVisRange = "{9068, 2247}";
+ sepNavWindowFrame = "{{157, 66}, {1145, 812}}";
};
};
8BA05A670720730100365D66 /* HardVacuum.exp */ = {
@@ -106,10 +106,10 @@
};
8BC6025B073B072D006C4272 /* HardVacuum.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 2288}}";
+ sepNavIntBoundsRect = "{{0, 0}, {698, 1989}}";
sepNavSelRange = "{3064, 0}";
- sepNavVisRange = "{4037, 334}";
- sepNavWindowFrame = "{{798, 44}, {816, 832}}";
+ sepNavVisRange = "{4037, 296}";
+ sepNavWindowFrame = "{{624, 44}, {816, 832}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3
index ee4a326..447f391 100755
--- a/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>5</integer>
+ <integer>4</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>627 370 810 487 0 0 1440 878 </string>
+ <string>501 353 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +352,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B181A0D204B961F00516BEE</string>
+ <string>8B792CF121F425DC006E9731</string>
<key>history</key>
<array>
- <string>8B1819FB204B936300516BEE</string>
+ <string>8B792CEB21F425BC006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>627 370 810 487 0 0 1440 878 </string>
+ <string>501 353 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,7 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -448,9 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
<key>RubberWindowFrame</key>
- <string>627 370 810 487 0 0 1440 878 </string>
+ <string>501 353 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B181A0E204B961F00516BEE</string>
+ <string>8B792CF221F425DC006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B181A0F204B961F00516BEE</string>
+ <string>8B792CF321F425DC006E9731</string>
<string>8BCA6FBD2027E68400D92BAD</string>
- <string>8B181A10204B961F00516BEE</string>
+ <string>8B792CF421F425DC006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541824543.72034597</real>
+ <real>569648604.79217398</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +652,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B181A11204B961F00516BEE</string>
+ <string>8B792CF521F425DC006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/HardVacuum/HardVacuum.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>627 370 810 487 0 0 1440 878 </string>
+ <string>501 353 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/HermeTrim/HermeTrim.cpp b/plugins/MacAU/HermeTrim/HermeTrim.cpp
index 9964961..d66c78c 100755
--- a/plugins/MacAU/HermeTrim/HermeTrim.cpp
+++ b/plugins/MacAU/HermeTrim/HermeTrim.cpp
@@ -203,11 +203,8 @@ ComponentResult HermeTrim::Initialize()
// this is called the reset the DSP state (clear buffers, reset counters, etc.)
ComponentResult HermeTrim::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
return noErr;
}
@@ -226,11 +223,7 @@ OSStatus HermeTrim::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData);
Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData);
UInt32 nSampleFrames = inFramesToProcess;
-
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+
long double inputSampleL;
long double inputSampleR;
long double mid;
@@ -296,25 +289,14 @@ OSStatus HermeTrim::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacAU/HermeTrim/HermeTrim.h b/plugins/MacAU/HermeTrim/HermeTrim.h
index 15b9053..28ed599 100755
--- a/plugins/MacAU/HermeTrim/HermeTrim.h
+++ b/plugins/MacAU/HermeTrim/HermeTrim.h
@@ -121,11 +121,8 @@ public:
virtual ComponentResult Version() { return kHermeTrimVersion; }
private:
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
};
diff --git a/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser
index 7bf93ba..f32d1ce 100755
--- a/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser
@@ -49,23 +49,43 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 532472000;
- PBXWorkspaceStateSaveDate = 532472000;
+ PBXPerProjectTemplateStateSaveDate = 569648812;
+ PBXWorkspaceStateSaveDate = 569648812;
};
perUserProjectItems = {
- 8BB5DCFB1FBCDFA9008B4570 /* PBXTextBookmark */ = 8BB5DCFB1FBCDFA9008B4570 /* PBXTextBookmark */;
- 8BB5DD3E1FBCE0D8008B4570 /* PBXTextBookmark */ = 8BB5DD3E1FBCE0D8008B4570 /* PBXTextBookmark */;
+ 8B792D2821F42723006E9731 /* PBXTextBookmark */ = 8B792D2821F42723006E9731 /* PBXTextBookmark */;
+ 8B792D2D21F42744006E9731 /* PBXTextBookmark */ = 8B792D2D21F42744006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B792D2821F42723006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* HermeTrim.cpp */;
+ name = "HermeTrim.cpp: 207";
+ rLen = 0;
+ rLoc = 9408;
+ rType = 0;
+ vrLen = 66;
+ vrLoc = 68;
+ };
+ 8B792D2D21F42744006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* HermeTrim.cpp */;
+ name = "HermeTrim.cpp: 207";
+ rLen = 0;
+ rLoc = 9408;
+ rType = 0;
+ vrLen = 66;
+ vrLoc = 68;
+ };
8BA05A660720730100365D66 /* HermeTrim.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 4368}}";
- sepNavSelRange = "{9429, 0}";
- sepNavVisRange = "{65, 69}";
- sepNavWindowFrame = "{{370, 62}, {1070, 811}}";
+ sepNavIntBoundsRect = "{{0, 0}, {803, 4225}}";
+ sepNavSelRange = "{9408, 0}";
+ sepNavVisRange = "{68, 66}";
+ sepNavWindowFrame = "{{185, 67}, {1070, 811}}";
};
};
8BA05A670720730100365D66 /* HermeTrim.exp */ = {
@@ -84,31 +104,11 @@
sepNavWindowFrame = "{{419, 39}, {1024, 839}}";
};
};
- 8BB5DCFB1FBCDFA9008B4570 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* HermeTrim.cpp */;
- name = "HermeTrim.cpp: 208";
- rLen = 0;
- rLoc = 9429;
- rType = 0;
- vrLen = 90;
- vrLoc = 44;
- };
- 8BB5DD3E1FBCE0D8008B4570 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* HermeTrim.cpp */;
- name = "HermeTrim.cpp: 208";
- rLen = 0;
- rLoc = 9429;
- rType = 0;
- vrLen = 69;
- vrLoc = 65;
- };
8BC6025B073B072D006C4272 /* HermeTrim.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1023, 1768}}";
- sepNavSelRange = "{5173, 131}";
- sepNavVisRange = "{1538, 1957}";
+ sepNavIntBoundsRect = "{{0, 0}, {1023, 1729}}";
+ sepNavSelRange = "{5221, 0}";
+ sepNavVisRange = "{3560, 1785}";
sepNavWindowFrame = "{{370, 67}, {1070, 811}}";
};
};
diff --git a/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3
index c7490f3..a1c5be6 100755
--- a/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -301,7 +299,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>7</integer>
+ <integer>4</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -325,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>610 324 810 487 0 0 1440 878 </string>
+ <string>483 338 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BB5DD3E1FBCE0D8008B4570</string>
+ <string>8B792D2D21F42744006E9731</string>
<key>history</key>
<array>
- <string>8BB5DCFB1FBCDFA9008B4570</string>
+ <string>8B792D2821F42723006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {603, 51}}</string>
<key>RubberWindowFrame</key>
- <string>610 324 810 487 0 0 1440 878 </string>
+ <string>483 338 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>390pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
- <key>RubberWindowFrame</key>
- <string>610 324 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 363}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 363}}</string>
+ <key>RubberWindowFrame</key>
+ <string>483 338 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BB5DD3F1FBCE0D8008B4570</string>
+ <string>8B792D2E21F42744006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BB5DD401FBCE0D8008B4570</string>
+ <string>8B792D2F21F42744006E9731</string>
<string>8B753E6F1E40231800347157</string>
- <string>8BB5DD411FBCE0D8008B4570</string>
+ <string>8B792D3021F42744006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>532472024.21283603</real>
+ <real>569648964.14450204</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +651,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BB5DD421FBCE0D8008B4570</string>
<string>/Users/christopherjohnson/Desktop/MacAU/HermeTrim/HermeTrim.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>610 324 810 487 0 0 1440 878 </string>
+ <string>483 338 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Hermepass/Hermepass.cpp b/plugins/MacAU/Hermepass/Hermepass.cpp
index 8c8da5d..c969719 100755
--- a/plugins/MacAU/Hermepass/Hermepass.cpp
+++ b/plugins/MacAU/Hermepass/Hermepass.cpp
@@ -174,8 +174,7 @@ void Hermepass::HermepassKernel::Reset()
iirF = 0.0;
iirG = 0.0;
iirH = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
+ fpNShape = 0.0;
fpFlip = true;
}
@@ -194,10 +193,9 @@ void Hermepass::HermepassKernel::Process( const Float32 *inSourceP,
long double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
long double fpNew = 1.0 - fpOld;
-
+
Float64 rangescale = 0.1 / overallscale;
Float64 cutoff = pow(GetParameter( kParam_One ),3);
@@ -301,20 +299,13 @@ void Hermepass::HermepassKernel::Process( const Float32 *inSourceP,
//with everything an array value. However, this makes just as much sense for this few poles.
inputSample -= correction;
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Hermepass/Hermepass.h b/plugins/MacAU/Hermepass/Hermepass.h
index 24cfb07..3483edc 100755
--- a/plugins/MacAU/Hermepass/Hermepass.h
+++ b/plugins/MacAU/Hermepass/Hermepass.h
@@ -139,8 +139,7 @@ public:
Float64 iirH; //seven poles max, and the final pole is always at 20hz directly.
- long double fpNShapeA;
- long double fpNShapeB;
+ long double fpNShape;
bool fpFlip;
};
};
diff --git a/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser
index b85e0a0..7dff583 100755
--- a/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser
@@ -3,6 +3,8 @@
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* Hermepass */;
+ breakpoints = (
+ );
codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,18 +51,18 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456409;
- PBXWorkspaceStateSaveDate = 528456409;
+ PBXPerProjectTemplateStateSaveDate = 569648641;
+ PBXWorkspaceStateSaveDate = 569648641;
};
perUserProjectItems = {
- 8B9D64FF1F7C889C007AB60F /* PlistBookmark */ = 8B9D64FF1F7C889C007AB60F /* PlistBookmark */;
- 8B9D74581F7F9AF1007AB60F /* PlistBookmark */ = 8B9D74581F7F9AF1007AB60F /* PlistBookmark */;
+ 8B792D0521F4265D006E9731 /* PlistBookmark */ = 8B792D0521F4265D006E9731 /* PlistBookmark */;
+ 8B792D1021F42698006E9731 /* PlistBookmark */ = 8B792D1021F42698006E9731 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D64FF1F7C889C007AB60F /* PlistBookmark */ = {
+ 8B792D0521F4265D006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -70,9 +72,9 @@
);
name = /Users/christopherjohnson/Desktop/MacAU/Hermepass/Info.plist;
rLen = 0;
- rLoc = 9223372036854775808;
+ rLoc = 9223372036854775807;
};
- 8B9D74581F7F9AF1007AB60F /* PlistBookmark */ = {
+ 8B792D1021F42698006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -86,10 +88,10 @@
};
8BA05A660720730100365D66 /* Hermepass.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1006, 4407}}";
- sepNavSelRange = "{10576, 0}";
- sepNavVisRange = "{9818, 2810}";
- sepNavWindowFrame = "{{387, 39}, {1053, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1006, 4342}}";
+ sepNavSelRange = "{8578, 0}";
+ sepNavVisRange = "{7759, 2039}";
+ sepNavWindowFrame = "{{235, 39}, {1053, 839}}";
};
};
8BA05A690720730100365D66 /* HermepassVersion.h */ = {
@@ -102,9 +104,9 @@
};
8BC6025B073B072D006C4272 /* Hermepass.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1006, 1833}}";
- sepNavSelRange = "{1818, 0}";
- sepNavVisRange = "{651, 2568}";
+ sepNavIntBoundsRect = "{{0, 0}, {1006, 1937}}";
+ sepNavSelRange = "{5697, 0}";
+ sepNavVisRange = "{4041, 1775}";
sepNavWindowFrame = "{{387, 39}, {1053, 839}}";
};
};
diff --git a/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3
index a56662d..db59c0b 100755
--- a/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -325,7 +323,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 176 841 654 0 0 1440 878 </string>
+ <string>471 176 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D74581F7F9AF1007AB60F</string>
+ <string>8B792D1021F42698006E9731</string>
<key>history</key>
<array>
- <string>8B9D64FF1F7C889C007AB60F</string>
+ <string>8B792D0521F4265D006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 202}}</string>
+ <string>{{0, 0}, {531, 188}}</string>
<key>RubberWindowFrame</key>
- <string>599 176 841 654 0 0 1440 878 </string>
+ <string>471 176 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>202pt</string>
+ <string>188pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>406pt</string>
+ <string>420pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 379}}</string>
- <key>RubberWindowFrame</key>
- <string>599 176 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 393}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {531, 393}}</string>
+ <key>RubberWindowFrame</key>
+ <string>471 176 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D74591F7F9AF1007AB60F</string>
+ <string>8B792D1121F42698006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D745A1F7F9AF1007AB60F</string>
+ <string>8B792D1221F42698006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D745B1F7F9AF1007AB60F</string>
+ <string>8B792D1321F42698006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -534,12 +532,12 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {810, 0}}</string>
+ <string>{{0, 0}, {424, 270}}</string>
</dict>
<key>Module</key>
<string>PBXDebugCLIModule</string>
<key>Proportion</key>
- <string>0pt</string>
+ <string>270pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
@@ -632,14 +630,14 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BD727EC1D46ECF1000176F0</string>
+ <string>8B792D1421F42698006E9731</string>
<string>1CCC7628064C1048000F2A68</string>
<string>1CCC7629064C1048000F2A68</string>
- <string>8BD727ED1D46ECF1000176F0</string>
- <string>8BD727EE1D46ECF1000176F0</string>
- <string>8BD727EF1D46ECF1000176F0</string>
- <string>8BD727F01D46ECF1000176F0</string>
- <string>8BD727E71D46ECD9000176F0</string>
+ <string>8B792D1521F42698006E9731</string>
+ <string>8B792D1621F42698006E9731</string>
+ <string>8B792D1721F42698006E9731</string>
+ <string>8B792D1821F42698006E9731</string>
+ <string>8B792D1921F42698006E9731</string>
</array>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
@@ -656,7 +654,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456433.21989697</real>
+ <real>569648792.66830301</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -673,11 +671,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D745C1F7F9AF1007AB60F</string>
+ <string>8B792D1A21F42698006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Hermepass/Hermepass.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 176 841 654 0 0 1440 878 </string>
+ <string>471 176 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.pbxuser
index c23f043..1e583b1 100755
--- a/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456443;
- PBXWorkspaceStateSaveDate = 528456443;
+ PBXPerProjectTemplateStateSaveDate = 569648994;
+ PBXWorkspaceStateSaveDate = 569648994;
};
perUserProjectItems = {
- 8B9D65101F7C88C6007AB60F /* PBXTextBookmark */ = 8B9D65101F7C88C6007AB60F /* PBXTextBookmark */;
+ 8B792D3921F4276D006E9731 /* PBXTextBookmark */ = 8B792D3921F4276D006E9731 /* PBXTextBookmark */;
8B9D74691F7F9B39007AB60F /* PBXTextBookmark */ = 8B9D74691F7F9B39007AB60F /* PBXTextBookmark */;
8B9E7FA51DDE554B006035FA /* PlistBookmark */ = 8B9E7FA51DDE554B006035FA /* PlistBookmark */;
};
@@ -61,14 +61,14 @@
userBuildSettings = {
};
};
- 8B9D65101F7C88C6007AB60F /* PBXTextBookmark */ = {
+ 8B792D3921F4276D006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* HighGlossDither.h */;
name = "HighGlossDither.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 443;
+ vrLen = 243;
vrLoc = 0;
};
8B9D74691F7F9B39007AB60F /* PBXTextBookmark */ = {
@@ -95,9 +95,9 @@
};
8BA05A660720730100365D66 /* HighGlossDither.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {726, 3133}}";
+ sepNavIntBoundsRect = "{{0, 0}, {726, 3224}}";
sepNavSelRange = "{7750, 0}";
- sepNavVisRange = "{6612, 2521}";
+ sepNavVisRange = "{7830, 2063}";
sepNavWindowFrame = "{{728, 43}, {679, 835}}";
};
};
@@ -111,9 +111,9 @@
};
8BC6025B073B072D006C4272 /* HighGlossDither.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 1729}}";
+ sepNavIntBoundsRect = "{{0, 0}, {803, 1742}}";
sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 346}";
+ sepNavVisRange = "{0, 243}";
sepNavWindowFrame = "{{742, 43}, {679, 835}}";
};
};
diff --git a/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.perspectivev3
index 2c6537c..aaa67ee 100755
--- a/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/HighGlossDither/HighGlossDither.xcodeproj/christopherjohnson.perspectivev3
@@ -353,11 +353,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D74691F7F9B39007AB60F</string>
+ <string>8B792D3921F4276D006E9731</string>
<key>history</key>
<array>
<string>8B9E7FA51DDE554B006035FA</string>
- <string>8B9D65101F7C88C6007AB60F</string>
+ <string>8B9D74691F7F9B39007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 173}}</string>
+ <string>{{0, 0}, {531, 158}}</string>
<key>RubberWindowFrame</key>
<string>599 149 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>173pt</string>
+ <string>158pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>435pt</string>
+ <string>450pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,7 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 408}}</string>
+ <string>{{10, 27}, {531, 423}}</string>
<key>RubberWindowFrame</key>
<string>599 149 841 654 0 0 1440 878 </string>
</dict>
@@ -480,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D746A1F7F9B39007AB60F</string>
+ <string>8B792D3A21F4276D006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D746B1F7F9B39007AB60F</string>
+ <string>8B792D3B21F4276D006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D746C1F7F9B39007AB60F</string>
+ <string>8B792D3C21F4276D006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456505.919761</real>
+ <real>569649005.97733605</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,7 +674,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D746D1F7F9B39007AB60F</string>
+ <string>8B792D3D21F4276D006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/HighGlossDither/HighGlossDither.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacAU/HighImpact/HighImpact.cpp b/plugins/MacAU/HighImpact/HighImpact.cpp
index 91cbd6a..43ca1f5 100755
--- a/plugins/MacAU/HighImpact/HighImpact.cpp
+++ b/plugins/MacAU/HighImpact/HighImpact.cpp
@@ -175,9 +175,7 @@ ComponentResult HighImpact::Initialize()
void HighImpact::HighImpactKernel::Reset()
{
lastSample = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -201,11 +199,7 @@ void HighImpact::HighImpactKernel::Process( const Float32 *inSourceP,
Float64 drySample;
Float64 output = GetParameter( kParam_Two );
Float64 wet = GetParameter( kParam_Three );
- Float64 dry = 1.0-wet;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
-
+ Float64 dry = 1.0-wet;
Float64 clamp;
Float64 threshold = (1.25 - out);
@@ -279,19 +273,11 @@ void HighImpact::HighImpactKernel::Process( const Float32 *inSourceP,
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels;
diff --git a/plugins/MacAU/HighImpact/HighImpact.h b/plugins/MacAU/HighImpact/HighImpact.h
index 1778590..4315822 100755
--- a/plugins/MacAU/HighImpact/HighImpact.h
+++ b/plugins/MacAU/HighImpact/HighImpact.h
@@ -134,9 +134,7 @@ public:
private:
Float64 lastSample;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ Float64 fpNShape;
};
};
diff --git a/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser
index 95f75f7..a4ea24e 100755
--- a/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456515;
- PBXWorkspaceStateSaveDate = 528456515;
+ PBXPerProjectTemplateStateSaveDate = 569649013;
+ PBXWorkspaceStateSaveDate = 569649013;
};
perUserProjectItems = {
- 8B9D65211F7C8934007AB60F /* PBXTextBookmark */ = 8B9D65211F7C8934007AB60F /* PBXTextBookmark */;
- 8B9D74781F7F9B7D007AB60F /* PBXTextBookmark */ = 8B9D74781F7F9B7D007AB60F /* PBXTextBookmark */;
+ 8B792D4B21F427D4006E9731 /* PBXTextBookmark */ = 8B792D4B21F427D4006E9731 /* PBXTextBookmark */;
+ 8B792D5021F427E4006E9731 /* PBXTextBookmark */ = 8B792D5021F427E4006E9731 /* PBXTextBookmark */;
8BD4F5C21E6E137800288155 /* PBXTextBookmark */ = 8BD4F5C21E6E137800288155 /* PBXTextBookmark */;
8BD4F5C31E6E137800288155 /* PBXTextBookmark */ = 8BD4F5C31E6E137800288155 /* PBXTextBookmark */;
};
@@ -62,32 +62,32 @@
userBuildSettings = {
};
};
- 8B9D65211F7C8934007AB60F /* PBXTextBookmark */ = {
+ 8B792D4B21F427D4006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* HighImpact.cpp */;
- name = "HighImpact.cpp: 201";
+ name = "HighImpact.cpp: 199";
rLen = 0;
- rLoc = 9245;
+ rLoc = 9210;
rType = 0;
- vrLen = 504;
- vrLoc = 7848;
+ vrLen = 584;
+ vrLoc = 7867;
};
- 8B9D74781F7F9B7D007AB60F /* PBXTextBookmark */ = {
+ 8B792D5021F427E4006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* HighImpact.cpp */;
- name = "HighImpact.cpp: 201";
+ name = "HighImpact.cpp: 199";
rLen = 0;
- rLoc = 9245;
+ rLoc = 9210;
rType = 0;
- vrLen = 485;
+ vrLen = 584;
vrLoc = 7867;
};
8BA05A660720730100365D66 /* HighImpact.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {670, 3978}}";
- sepNavSelRange = "{9245, 0}";
- sepNavVisRange = "{7867, 485}";
- sepNavWindowFrame = "{{283, 58}, {1145, 812}}";
+ sepNavIntBoundsRect = "{{0, 0}, {670, 3887}}";
+ sepNavSelRange = "{9210, 0}";
+ sepNavVisRange = "{7867, 584}";
+ sepNavWindowFrame = "{{178, 66}, {1145, 812}}";
};
};
8BA05A670720730100365D66 /* HighImpact.exp */ = {
@@ -107,9 +107,9 @@
};
8BC6025B073B072D006C4272 /* HighImpact.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 1898}}";
- sepNavSelRange = "{5304, 0}";
- sepNavVisRange = "{2715, 570}";
+ sepNavIntBoundsRect = "{{0, 0}, {876, 1859}}";
+ sepNavSelRange = "{5347, 0}";
+ sepNavVisRange = "{3845, 1610}";
sepNavWindowFrame = "{{15, 39}, {923, 837}}";
};
};
diff --git a/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3
index 8773219..a53e030 100755
--- a/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>589 316 810 487 0 0 1440 878 </string>
+ <string>493 322 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,12 +350,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D74781F7F9B7D007AB60F</string>
+ <string>8B792D5021F427E4006E9731</string>
<key>history</key>
<array>
<string>8BD4F5C21E6E137800288155</string>
<string>8BD4F5C31E6E137800288155</string>
- <string>8B9D65211F7C8934007AB60F</string>
+ <string>8B792D4B21F427D4006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 253}}</string>
+ <string>{{0, 0}, {603, 244}}</string>
<key>RubberWindowFrame</key>
- <string>589 316 810 487 0 0 1440 878 </string>
+ <string>493 322 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>253pt</string>
+ <string>244pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>188pt</string>
+ <string>197pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 161}}</string>
- <key>RubberWindowFrame</key>
- <string>589 316 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 170}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 170}}</string>
+ <key>RubberWindowFrame</key>
+ <string>493 322 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D74791F7F9B7D007AB60F</string>
+ <string>8B792D5121F427E4006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D747A1F7F9B7D007AB60F</string>
+ <string>8B792D5221F427E4006E9731</string>
<string>8B753F071E4027BF00347157</string>
- <string>8B9D747B1F7F9B7D007AB60F</string>
+ <string>8B792D5321F427E4006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -637,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456573.47978503</real>
+ <real>569649124.25200295</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -654,11 +652,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D747C1F7F9B7D007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/HighImpact/HighImpact.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>589 316 810 487 0 0 1440 878 </string>
+ <string>493 322 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Highpass/Highpass.cpp b/plugins/MacAU/Highpass/Highpass.cpp
index 1f887f4..095a5fd 100755
--- a/plugins/MacAU/Highpass/Highpass.cpp
+++ b/plugins/MacAU/Highpass/Highpass.cpp
@@ -175,8 +175,7 @@ void Highpass::HighpassKernel::Reset()
{
iirSampleA = 0.0;
iirSampleB = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
+ fpNShape = 0.0;
fpFlip = true;
}
@@ -207,9 +206,6 @@ void Highpass::HighpassKernel::Process( const Float32 *inSourceP,
Float64 offset;
Float64 inputSample;
Float64 outputSample;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -264,20 +260,13 @@ void Highpass::HighpassKernel::Process( const Float32 *inSourceP,
}
if (wet < 1.0) outputSample = (outputSample * wet) + (inputSample * dry);
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = outputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((outputSample-fpTemp)*fpNew);
- outputSample += fpNShapeA;
- }
- else {
- fpTemp = outputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((outputSample-fpTemp)*fpNew);
- outputSample += fpNShapeB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = outputSample;
sourceP += inNumChannels;
diff --git a/plugins/MacAU/Highpass/Highpass.h b/plugins/MacAU/Highpass/Highpass.h
index 05f4b8c..d29dcf9 100755
--- a/plugins/MacAU/Highpass/Highpass.h
+++ b/plugins/MacAU/Highpass/Highpass.h
@@ -136,8 +136,7 @@ public:
private:
Float64 iirSampleA;
Float64 iirSampleB;
- long double fpNShapeA;
- long double fpNShapeB;
+ long double fpNShape;
bool fpFlip;
};
};
diff --git a/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser
index 11b4400..10f000e 100755
--- a/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser
@@ -49,15 +49,15 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456582;
- PBXWorkspaceStateSaveDate = 528456582;
+ PBXPerProjectTemplateStateSaveDate = 569649241;
+ PBXWorkspaceStateSaveDate = 569649241;
};
perUserProjectItems = {
8B22B1581DB190F20075D7AA /* PBXTextBookmark */ = 8B22B1581DB190F20075D7AA /* PBXTextBookmark */;
8B22B1591DB190F20075D7AA /* PBXTextBookmark */ = 8B22B1591DB190F20075D7AA /* PBXTextBookmark */;
8B22B15A1DB190F20075D7AA /* PBXTextBookmark */ = 8B22B15A1DB190F20075D7AA /* PBXTextBookmark */;
- 8B9D65321F7C8976007AB60F /* PBXTextBookmark */ = 8B9D65321F7C8976007AB60F /* PBXTextBookmark */;
- 8B9D74871F7F9B9C007AB60F /* PBXTextBookmark */ = 8B9D74871F7F9B9C007AB60F /* PBXTextBookmark */;
+ 8B792D6121F428B9006E9731 /* PBXTextBookmark */ = 8B792D6121F428B9006E9731 /* PBXTextBookmark */;
+ 8B792D6621F428CA006E9731 /* PBXTextBookmark */ = 8B792D6621F428CA006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -93,32 +93,32 @@
vrLen = 772;
vrLoc = 5298;
};
- 8B9D65321F7C8976007AB60F /* PBXTextBookmark */ = {
+ 8B792D6121F428B9006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Highpass.h */;
name = "Highpass.h: 125";
rLen = 0;
rLoc = 5113;
rType = 0;
- vrLen = 395;
+ vrLen = 369;
vrLoc = 5287;
};
- 8B9D74871F7F9B9C007AB60F /* PBXTextBookmark */ = {
+ 8B792D6621F428CA006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Highpass.h */;
name = "Highpass.h: 125";
rLen = 0;
rLoc = 5113;
rType = 0;
- vrLen = 394;
+ vrLen = 369;
vrLoc = 5287;
};
8BA05A660720730100365D66 /* Highpass.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {964, 3770}}";
- sepNavSelRange = "{9907, 0}";
- sepNavVisRange = "{9082, 2429}";
- sepNavWindowFrame = "{{584, 39}, {801, 838}}";
+ sepNavIntBoundsRect = "{{0, 0}, {964, 3757}}";
+ sepNavSelRange = "{12047, 0}";
+ sepNavVisRange = "{9888, 2247}";
+ sepNavWindowFrame = "{{463, 37}, {801, 838}}";
};
};
8BA05A670720730100365D66 /* Highpass.exp */ = {
@@ -138,10 +138,10 @@
};
8BC6025B073B072D006C4272 /* Highpass.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {698, 2080}}";
+ sepNavIntBoundsRect = "{{0, 0}, {670, 2106}}";
sepNavSelRange = "{5113, 0}";
- sepNavVisRange = "{5287, 394}";
- sepNavWindowFrame = "{{615, 40}, {801, 838}}";
+ sepNavVisRange = "{5287, 369}";
+ sepNavWindowFrame = "{{143, 40}, {801, 838}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3
index 49ba097..6210205 100755
--- a/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>626 387 810 487 0 0 1440 878 </string>
+ <string>369 385 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,13 +350,13 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D74871F7F9B9C007AB60F</string>
+ <string>8B792D6621F428CA006E9731</string>
<key>history</key>
<array>
<string>8B22B1581DB190F20075D7AA</string>
<string>8B22B1591DB190F20075D7AA</string>
<string>8B22B15A1DB190F20075D7AA</string>
- <string>8B9D65321F7C8976007AB60F</string>
+ <string>8B792D6121F428B9006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 264}}</string>
+ <string>{{0, 0}, {603, 256}}</string>
<key>RubberWindowFrame</key>
- <string>626 387 810 487 0 0 1440 878 </string>
+ <string>369 385 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>264pt</string>
+ <string>256pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>177pt</string>
+ <string>185pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 150}}</string>
- <key>RubberWindowFrame</key>
- <string>626 387 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 158}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
+ <string>{{10, 27}, {603, 158}}</string>
+ <key>RubberWindowFrame</key>
+ <string>369 385 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -481,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D74881F7F9B9C007AB60F</string>
+ <string>8B792D6721F428CA006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D74891F7F9B9C007AB60F</string>
+ <string>8B792D6821F428CA006E9731</string>
<string>8BC032A31D66648E0039F36E</string>
- <string>8B9D748A1F7F9B9C007AB60F</string>
+ <string>8B792D6921F428CA006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -638,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456604.44275099</real>
+ <real>569649354.665344</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -655,11 +653,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D748B1F7F9B9C007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Highpass/Highpass.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>626 387 810 487 0 0 1440 878 </string>
+ <string>369 385 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Hombre/Hombre.cpp b/plugins/MacAU/Hombre/Hombre.cpp
index d16d992..420afa5 100755
--- a/plugins/MacAU/Hombre/Hombre.cpp
+++ b/plugins/MacAU/Hombre/Hombre.cpp
@@ -169,9 +169,7 @@ void Hombre::HombreKernel::Reset()
for(int count = 0; count < 4000; count++) {p[count] = 0.0;}
gcount = 0;
slide = 0.421;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -196,15 +194,10 @@ void Hombre::HombreKernel::Process( const Float32 *inSourceP,
int widthB = (int)(7.0*overallscale); //max 364 at 44.1, 792 at 96K
Float64 wet = GetParameter( kParam_Two );
Float64 dry = 1.0 - wet;
-
long double inputSample;
Float64 drySample;
Float64 total;
- int count;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ int count;
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -273,23 +266,13 @@ void Hombre::HombreKernel::Process( const Float32 *inSourceP,
inputSample = (inputSample * wet) + (drySample * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
- //built in output trim and dry/wet if desired
- //*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
diff --git a/plugins/MacAU/Hombre/Hombre.h b/plugins/MacAU/Hombre/Hombre.h
index fd408c3..0f2225b 100755
--- a/plugins/MacAU/Hombre/Hombre.h
+++ b/plugins/MacAU/Hombre/Hombre.h
@@ -131,9 +131,7 @@ public:
Float64 p[4001];
Float64 slide;
int gcount;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser
index 5ff61b8..31f4928 100755
--- a/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser
@@ -49,18 +49,18 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456614;
- PBXWorkspaceStateSaveDate = 528456614;
+ PBXPerProjectTemplateStateSaveDate = 569649376;
+ PBXWorkspaceStateSaveDate = 569649376;
};
perUserProjectItems = {
- 8B9D65431F7C899F007AB60F /* PBXTextBookmark */ = 8B9D65431F7C899F007AB60F /* PBXTextBookmark */;
+ 8B792D7F21F4297F006E9731 /* PBXTextBookmark */ = 8B792D7F21F4297F006E9731 /* PBXTextBookmark */;
8B9D74961F7F9BB0007AB60F /* PBXTextBookmark */ = 8B9D74961F7F9BB0007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D65431F7C899F007AB60F /* PBXTextBookmark */ = {
+ 8B792D7F21F4297F006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A670720730100365D66 /* Hombre.exp */;
name = "Hombre.exp: 2";
@@ -82,10 +82,10 @@
};
8BA05A660720730100365D66 /* Hombre.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1098, 3900}}";
- sepNavSelRange = "{9060, 0}";
- sepNavVisRange = "{8861, 2038}";
- sepNavWindowFrame = "{{295, 66}, {1145, 812}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1098, 3913}}";
+ sepNavSelRange = "{11704, 0}";
+ sepNavVisRange = "{10307, 1458}";
+ sepNavWindowFrame = "{{165, 66}, {1145, 812}}";
};
};
8BA05A670720730100365D66 /* Hombre.exp */ = {
@@ -106,10 +106,10 @@
};
8BC6025B073B072D006C4272 /* Hombre.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {958, 1859}}";
- sepNavSelRange = "{5132, 0}";
- sepNavVisRange = "{3790, 1531}";
- sepNavWindowFrame = "{{809, 39}, {1005, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {958, 1833}}";
+ sepNavSelRange = "{5170, 0}";
+ sepNavVisRange = "{3685, 1595}";
+ sepNavWindowFrame = "{{111, 39}, {1005, 839}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3
index 6c54c7c..794a8fd 100755
--- a/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 297 810 487 0 0 1440 878 </string>
+ <string>455 313 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D74961F7F9BB0007AB60F</string>
+ <string>8B792D7F21F4297F006E9731</string>
<key>history</key>
<array>
- <string>8B9D65431F7C899F007AB60F</string>
+ <string>8B9D74961F7F9BB0007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,7 +369,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>630 297 810 487 0 0 1440 878 </string>
+ <string>455 313 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -395,8 +393,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>630 297 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>455 313 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D74971F7F9BB0007AB60F</string>
+ <string>8B792D7221F428E1006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D74981F7F9BB0007AB60F</string>
+ <string>8B792D7321F428E1006E9731</string>
<string>8BAC23231F1EA3AC009C635C</string>
- <string>8B9D74991F7F9BB0007AB60F</string>
+ <string>8B792D7421F428E1006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456624.78481799</real>
+ <real>569649535.57319403</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +650,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D749A1F7F9BB0007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Hombre/Hombre.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 297 810 487 0 0 1440 878 </string>
+ <string>455 313 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/IronOxide5/IronOxide5.cpp b/plugins/MacAU/IronOxide5/IronOxide5.cpp
index f0c27dd..c64d19a 100755
--- a/plugins/MacAU/IronOxide5/IronOxide5.cpp
+++ b/plugins/MacAU/IronOxide5/IronOxide5.cpp
@@ -224,9 +224,7 @@ void IronOxide5::IronOxide5Kernel::Reset()
sweep = 0.0;
rateof = 0.5;
nextmax = 0.5;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -288,11 +286,6 @@ void IronOxide5::IronOxide5Kernel::Process( const Float32 *inSourceP,
Float64 dry = 1.0;
if (invdrywet > 0.0) dry -= invdrywet;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
-
-
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
if (inputSample<1.2e-38 && -inputSample<1.2e-38) {
@@ -475,7 +468,7 @@ void IronOxide5::IronOxide5Kernel::Process( const Float32 *inSourceP,
inputSample += (prevInputSample*randy);
prevInputSample = drySample;
- flip = not flip;
+ flip = !flip;
//begin invdrywet block with outputgain
if (outputgain != 1.0) inputSample *= outputgain;
@@ -484,23 +477,14 @@ void IronOxide5::IronOxide5Kernel::Process( const Float32 *inSourceP,
if (fabs(drySample) > 0.0) inputSample += drySample;
//end invdrywet block with outputgain
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
-
sourceP += inNumChannels; destP += inNumChannels;
}
}
diff --git a/plugins/MacAU/IronOxide5/IronOxide5.h b/plugins/MacAU/IronOxide5/IronOxide5.h
index 2b0b16e..2b3c655 100755
--- a/plugins/MacAU/IronOxide5/IronOxide5.h
+++ b/plugins/MacAU/IronOxide5/IronOxide5.h
@@ -167,13 +167,8 @@ public:
Float64 rateof;
Float64 sweep;
Float64 nextmax;
-
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
-
+ long double fpNShape;
bool flip;
- int demotimer;
};
};
diff --git a/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser
index 0cb3aa0..8cbc973 100755
--- a/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser
@@ -49,18 +49,18 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456633;
- PBXWorkspaceStateSaveDate = 528456633;
+ PBXPerProjectTemplateStateSaveDate = 569649559;
+ PBXWorkspaceStateSaveDate = 569649559;
};
perUserProjectItems = {
- 8B9D65541F7C89D7007AB60F /* PlistBookmark */ = 8B9D65541F7C89D7007AB60F /* PlistBookmark */;
+ 8B792D9121F42A46006E9731 /* PlistBookmark */ = 8B792D9121F42A46006E9731 /* PlistBookmark */;
8B9D74A51F7F9BC2007AB60F /* PlistBookmark */ = 8B9D74A51F7F9BC2007AB60F /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D65541F7C89D7007AB60F /* PlistBookmark */ = {
+ 8B792D9121F42A46006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -70,7 +70,7 @@
);
name = /Users/christopherjohnson/Desktop/MacAU/IronOxide5/Info.plist;
rLen = 0;
- rLoc = 9223372036854775808;
+ rLoc = 9223372036854775807;
};
8B9D74A51F7F9BC2007AB60F /* PlistBookmark */ = {
isa = PlistBookmark;
@@ -82,14 +82,14 @@
);
name = /Users/christopherjohnson/Desktop/MacAU/IronOxide5/Info.plist;
rLen = 0;
- rLoc = 9223372036854775807;
+ rLoc = 9223372036854775808;
};
8BA05A660720730100365D66 /* IronOxide5.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1006, 6552}}";
- sepNavSelRange = "{13026, 0}";
- sepNavVisRange = "{12449, 2393}";
- sepNavWindowFrame = "{{387, 39}, {1053, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1006, 7072}}";
+ sepNavSelRange = "{19392, 0}";
+ sepNavVisRange = "{17695, 1759}";
+ sepNavWindowFrame = "{{237, 39}, {1053, 839}}";
};
};
8BA05A690720730100365D66 /* IronOxide5Version.h */ = {
@@ -102,10 +102,10 @@
};
8BC6025B073B072D006C4272 /* IronOxide5.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1006, 2327}}";
- sepNavSelRange = "{3959, 0}";
- sepNavVisRange = "{4993, 1457}";
- sepNavWindowFrame = "{{387, 39}, {1053, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1006, 2535}}";
+ sepNavSelRange = "{6418, 0}";
+ sepNavVisRange = "{5321, 1207}";
+ sepNavWindowFrame = "{{130, 39}, {1053, 839}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3
index e2992e0..fd0036a 100755
--- a/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>841</integer>
- <integer>841</integer>
+ <integer>826</integer>
+ <integer>826</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -325,7 +323,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>607 110 826 502 0 0 1440 878 </string>
+ <string>386 241 826 502 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D74A51F7F9BC2007AB60F</string>
+ <string>8B792D9121F42A46006E9731</string>
<key>history</key>
<array>
- <string>8B9D65541F7C89D7007AB60F</string>
+ <string>8B9D74A51F7F9BC2007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,7 +370,7 @@
<key>Frame</key>
<string>{{0, 0}, {516, 0}}</string>
<key>RubberWindowFrame</key>
- <string>607 110 826 502 0 0 1440 878 </string>
+ <string>386 241 826 502 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -396,8 +394,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {516, 429}}</string>
- <key>RubberWindowFrame</key>
- <string>607 110 826 502 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {516, 429}}</string>
+ <key>RubberWindowFrame</key>
+ <string>386 241 826 502 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D74A61F7F9BC2007AB60F</string>
+ <string>8B792D9221F42A46006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D74A71F7F9BC2007AB60F</string>
+ <string>8B792D9321F42A46006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D74A81F7F9BC2007AB60F</string>
+ <string>8B792D9421F42A46006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -656,7 +654,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456642.85610998</real>
+ <real>569649734.80982804</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -673,11 +671,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D74A91F7F9BC2007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/IronOxide5/IronOxide5.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>607 110 826 502 0 0 1440 878 </string>
+ <string>386 241 826 502 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/IronOxideClassic/IronOxideClassic.cpp b/plugins/MacAU/IronOxideClassic/IronOxideClassic.cpp
index 54c5821..4bd736f 100755
--- a/plugins/MacAU/IronOxideClassic/IronOxideClassic.cpp
+++ b/plugins/MacAU/IronOxideClassic/IronOxideClassic.cpp
@@ -180,8 +180,7 @@ void IronOxideClassic::IronOxideClassicKernel::Reset()
gcount = 0;
fastIIRA = fastIIRB = slowIIRA = slowIIRB = 0.0;
iirSampleA = iirSampleB = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
+ fpNShape = 0.0;
fpFlip = true;
}
@@ -223,11 +222,6 @@ void IronOxideClassic::IronOxideClassicKernel::Process( const Float32 *inSourc
fastTaper = 1.0 + (fastTaper / overallscale);
slowTaper = 1.0 + (slowTaper / overallscale);
}
-
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
-
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -385,20 +379,13 @@ void IronOxideClassic::IronOxideClassicKernel::Process( const Float32 *inSourc
//second stage of overdrive to prevent overs and allow bloody loud extremeness
if (outputgain != 1.0) inputSample *= outputgain;
+ fpFlip = !fpFlip;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/IronOxideClassic/IronOxideClassic.h b/plugins/MacAU/IronOxideClassic/IronOxideClassic.h
index 283ae2b..4dfe41b 100755
--- a/plugins/MacAU/IronOxideClassic/IronOxideClassic.h
+++ b/plugins/MacAU/IronOxideClassic/IronOxideClassic.h
@@ -142,8 +142,7 @@ public:
Float64 slowIIRB;
SInt32 gcount;
- long double fpNShapeA;
- long double fpNShapeB;
+ long double fpNShape;
bool fpFlip;
};
};
diff --git a/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser
index 4f2e20c..46ceb7d 100755
--- a/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser
@@ -49,44 +49,44 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456653;
- PBXWorkspaceStateSaveDate = 528456653;
+ PBXPerProjectTemplateStateSaveDate = 569649756;
+ PBXWorkspaceStateSaveDate = 569649756;
};
perUserProjectItems = {
- 8B9D65651F7C8A00007AB60F /* PBXTextBookmark */ = 8B9D65651F7C8A00007AB60F /* PBXTextBookmark */;
- 8B9D74B41F7F9BE8007AB60F /* PBXTextBookmark */ = 8B9D74B41F7F9BE8007AB60F /* PBXTextBookmark */;
+ 8B792DA221F42AC7006E9731 /* PBXTextBookmark */ = 8B792DA221F42AC7006E9731 /* PBXTextBookmark */;
+ 8B792DA721F42AD9006E9731 /* PBXTextBookmark */ = 8B792DA721F42AD9006E9731 /* PBXTextBookmark */;
8BCB78421ED90EBD001D6861 /* PlistBookmark */ = 8BCB78421ED90EBD001D6861 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D65651F7C8A00007AB60F /* PBXTextBookmark */ = {
+ 8B792DA221F42AC7006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* IronOxideClassic.cpp */;
- name = "IronOxideClassic.cpp: 271";
+ name = "IronOxideClassic.cpp: 265";
rLen = 50;
- rLoc = 11952;
+ rLoc = 11820;
rType = 0;
- vrLen = 342;
- vrLoc = 13099;
+ vrLen = 250;
+ vrLoc = 13063;
};
- 8B9D74B41F7F9BE8007AB60F /* PBXTextBookmark */ = {
+ 8B792DA721F42AD9006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* IronOxideClassic.cpp */;
- name = "IronOxideClassic.cpp: 271";
+ name = "IronOxideClassic.cpp: 265";
rLen = 50;
- rLoc = 11952;
+ rLoc = 11820;
rType = 0;
- vrLen = 263;
- vrLoc = 13099;
+ vrLen = 250;
+ vrLoc = 13063;
};
8BA05A660720730100365D66 /* IronOxideClassic.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {482, 5538}}";
- sepNavSelRange = "{11952, 50}";
- sepNavVisRange = "{13099, 263}";
- sepNavWindowFrame = "{{408, 39}, {952, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {482, 5421}}";
+ sepNavSelRange = "{11820, 50}";
+ sepNavVisRange = "{13063, 250}";
+ sepNavWindowFrame = "{{215, 32}, {952, 839}}";
};
};
8BA05A690720730100365D66 /* IronOxideClassicVersion.h */ = {
@@ -100,8 +100,8 @@
8BC6025B073B072D006C4272 /* IronOxideClassic.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {905, 2002}}";
- sepNavSelRange = "{5476, 159}";
- sepNavVisRange = "{955, 2468}";
+ sepNavSelRange = "{5661, 0}";
+ sepNavVisRange = "{4268, 1518}";
sepNavWindowFrame = "{{5, 39}, {952, 839}}";
};
};
diff --git a/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3
index 11ad553..4aa0a49 100755
--- a/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>810</integer>
- <integer>810</integer>
+ <integer>841</integer>
+ <integer>841</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -301,7 +299,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -353,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D74B41F7F9BE8007AB60F</string>
+ <string>8B792DA721F42AD9006E9731</string>
<key>history</key>
<array>
<string>8BCB78421ED90EBD001D6861</string>
- <string>8B9D65651F7C8A00007AB60F</string>
+ <string>8B792DA221F42AC7006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 188}}</string>
+ <string>{{0, 0}, {531, 173}}</string>
<key>RubberWindowFrame</key>
<string>396 187 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>188pt</string>
+ <string>173pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>420pt</string>
+ <string>435pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 393}}</string>
- <key>RubberWindowFrame</key>
- <string>396 187 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 408}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {531, 408}}</string>
+ <key>RubberWindowFrame</key>
+ <string>396 187 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D74B51F7F9BE8007AB60F</string>
+ <string>8B792DA821F42AD9006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D74B61F7F9BE8007AB60F</string>
+ <string>8B792DA921F42AD9006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D74B71F7F9BE8007AB60F</string>
+ <string>8B792DAA21F42AD9006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +655,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456680.36902398</real>
+ <real>569649881.95772898</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,7 +672,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D74B81F7F9BE8007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacAU/Logical4/Logical4.cpp b/plugins/MacAU/Logical4/Logical4.cpp
index 32e4312..af228c2 100755
--- a/plugins/MacAU/Logical4/Logical4.cpp
+++ b/plugins/MacAU/Logical4/Logical4.cpp
@@ -267,10 +267,9 @@ ComponentResult Logical4::Reset(AudioUnitScope inScope, AudioUnitElement inElem
gcount = 0;
//end Power Sags
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
return noErr;
}
@@ -293,16 +292,16 @@ OSStatus Logical4::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag
Float64 overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
UInt32 nSampleFrames = inFramesToProcess;
Float32 drySampleL;
Float32 drySampleR;
- Float64 inputSampleL;
- Float64 inputSampleR;
-
+ long double inputSampleL;
+ long double inputSampleR;
+
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
+ long double fpNew = 1.0 - fpOld;
+
//begin ButterComp
Float64 inputpos;
Float64 inputneg;
@@ -1145,26 +1144,16 @@ OSStatus Logical4::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = drySampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((drySampleL-fpTemp)*fpNew);
- drySampleL += fpNShapeAL;
- fpTemp = drySampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((drySampleR-fpTemp)*fpNew);
- drySampleR += fpNShapeAR;
- }
- else {
- fpTemp = drySampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((drySampleL-fpTemp)*fpNew);
- drySampleL += fpNShapeBL;
- fpTemp = drySampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((drySampleR-fpTemp)*fpNew);
- drySampleR += fpNShapeBR;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacAU/Logical4/Logical4.h b/plugins/MacAU/Logical4/Logical4.h
index 269fb08..31b3c1a 100755
--- a/plugins/MacAU/Logical4/Logical4.h
+++ b/plugins/MacAU/Logical4/Logical4.h
@@ -210,10 +210,8 @@ private:
int gcount;
- Float64 fpNShapeAL;
- Float64 fpNShapeAR;
- Float64 fpNShapeBL;
- Float64 fpNShapeBR;
+ long double fpNShapeR;
+ long double fpNShapeL;
bool fpFlip;
};
diff --git a/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser
index aeec156..7396e6c 100755
--- a/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser
@@ -49,43 +49,19 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456690;
- PBXWorkspaceStateSaveDate = 528456690;
- };
- perUserProjectItems = {
- 8B9D65761F7C8A4B007AB60F /* PBXTextBookmark */ = 8B9D65761F7C8A4B007AB60F /* PBXTextBookmark */;
- 8B9D74C31F7F9C65007AB60F /* PBXTextBookmark */ = 8B9D74C31F7F9C65007AB60F /* PBXTextBookmark */;
+ PBXPerProjectTemplateStateSaveDate = 569649914;
+ PBXWorkspaceStateSaveDate = 569649914;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D65761F7C8A4B007AB60F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Logical4.h */;
- name = "Logical4.h: 65";
- rLen = 0;
- rLoc = 3218;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
- 8B9D74C31F7F9C65007AB60F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Logical4.h */;
- name = "Logical4.h: 65";
- rLen = 0;
- rLoc = 3218;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
8BA05A660720730100365D66 /* Logical4.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1156, 15431}}";
- sepNavSelRange = "{14451, 0}";
- sepNavVisRange = "{14181, 2352}";
- sepNavWindowFrame = "{{237, 42}, {1203, 836}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1156, 15860}}";
+ sepNavSelRange = "{11365, 0}";
+ sepNavVisRange = "{10694, 1692}";
+ sepNavWindowFrame = "{{85, 42}, {1203, 836}}";
};
};
8BA05A690720730100365D66 /* Logical4Version.h */ = {
@@ -98,10 +74,10 @@
};
8BC6025B073B072D006C4272 /* Logical4.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 2925}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 2912}}";
sepNavSelRange = "{3218, 0}";
sepNavVisRange = "{0, 0}";
- sepNavWindowFrame = "{{767, -61}, {932, 815}}";
+ sepNavWindowFrame = "{{508, 39}, {932, 815}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3
index 2664542..65ca7eb 100755
--- a/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3
@@ -325,7 +325,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 344 810 487 0 0 1440 878 </string>
+ <string>489 322 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -341,23 +341,13 @@
<key>PBXProjectModuleGUID</key>
<string>8BAC22EC1F1EA26E009C635C</string>
<key>PBXProjectModuleLabel</key>
- <string>Logical4.h</string>
+ <string>&lt;No Editor&gt;</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>8BAC22ED1F1EA26E009C635C</string>
- <key>PBXProjectModuleLabel</key>
- <string>Logical4.h</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>8B9D74C31F7F9C65007AB60F</string>
- <key>history</key>
- <array>
- <string>8B9D65761F7C8A4B007AB60F</string>
- </array>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -372,7 +362,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>630 344 810 487 0 0 1440 878 </string>
+ <string>489 322 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -396,8 +386,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>630 344 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +439,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>489 322 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D74C41F7F9C65007AB60F</string>
+ <string>8B792DC121F42BF4006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D74C51F7F9C65007AB60F</string>
+ <string>8B792DC221F42BF4006E9731</string>
<string>8BAC22EC1F1EA26E009C635C</string>
- <string>8B9D74C61F7F9C65007AB60F</string>
+ <string>8B792DC321F42BF4006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456805.22078699</real>
+ <real>569650164.73212397</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +643,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D74C71F7F9C65007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Logical4/Logical4.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 344 810 487 0 0 1440 878 </string>
+ <string>489 322 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Loud/Loud.cpp b/plugins/MacAU/Loud/Loud.cpp
index 3d954d6..8be40d2 100755
--- a/plugins/MacAU/Loud/Loud.cpp
+++ b/plugins/MacAU/Loud/Loud.cpp
@@ -175,9 +175,7 @@ ComponentResult Loud::Initialize()
void Loud::LoudKernel::Reset()
{
lastSample = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -196,9 +194,6 @@ void Loud::LoudKernel::Process( const Float32 *inSourceP,
overallscale /= 44100.0;
overallscale *= GetSampleRate();
Float64 boost = pow(GetParameter( kParam_One )+1.0,5);
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
- Float32 fpTemp;
Float64 output = GetParameter( kParam_Two );
Float64 wet = GetParameter( kParam_Three );
@@ -267,19 +262,11 @@ void Loud::LoudKernel::Process( const Float32 *inSourceP,
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
-
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Loud/Loud.h b/plugins/MacAU/Loud/Loud.h
index 4f15994..289716f 100755
--- a/plugins/MacAU/Loud/Loud.h
+++ b/plugins/MacAU/Loud/Loud.h
@@ -134,9 +134,7 @@ public:
private:
Float64 lastSample;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ Float64 fpNShape;
};
};
diff --git a/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.pbxuser
index 987043f..77ce748 100755
--- a/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.pbxuser
@@ -49,37 +49,37 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 547640834;
- PBXWorkspaceStateSaveDate = 547640834;
+ PBXPerProjectTemplateStateSaveDate = 569650197;
+ PBXWorkspaceStateSaveDate = 569650197;
};
perUserProjectItems = {
- 8B904D5820A4584C008CBAD8 /* PBXTextBookmark */ = 8B904D5820A4584C008CBAD8 /* PBXTextBookmark */;
- 8B904D5920A4584C008CBAD8 /* PBXTextBookmark */ = 8B904D5920A4584C008CBAD8 /* PBXTextBookmark */;
+ 8B792DD221F42C71006E9731 /* PBXTextBookmark */ = 8B792DD221F42C71006E9731 /* PBXTextBookmark */;
+ 8B792DD721F42C90006E9731 /* PBXTextBookmark */ = 8B792DD721F42C90006E9731 /* PBXTextBookmark */;
8B9F0C141EB4035300D3B900 /* PBXTextBookmark */ = 8B9F0C141EB4035300D3B900 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B904D5820A4584C008CBAD8 /* PBXTextBookmark */ = {
+ 8B792DD221F42C71006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Loud.cpp */;
- name = "Loud.cpp: 237";
+ name = "Loud.cpp: 232";
rLen = 983;
- rLoc = 10671;
+ rLoc = 10520;
rType = 0;
- vrLen = 140;
- vrLoc = 9658;
+ vrLen = 0;
+ vrLoc = 0;
};
- 8B904D5920A4584C008CBAD8 /* PBXTextBookmark */ = {
+ 8B792DD721F42C90006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Loud.cpp */;
- name = "Loud.cpp: 237";
+ name = "Loud.cpp: 232";
rLen = 983;
- rLoc = 10671;
+ rLoc = 10520;
rType = 0;
- vrLen = 140;
- vrLoc = 9658;
+ vrLen = 0;
+ vrLoc = 0;
};
8B9F0C141EB4035300D3B900 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
@@ -93,10 +93,10 @@
};
8BA05A660720730100365D66 /* Loud.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 3809}}";
- sepNavSelRange = "{10671, 983}";
- sepNavVisRange = "{9658, 140}";
- sepNavWindowFrame = "{{477, 66}, {1145, 812}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 3718}}";
+ sepNavSelRange = "{10520, 983}";
+ sepNavVisRange = "{0, 0}";
+ sepNavWindowFrame = "{{92, 66}, {1145, 812}}";
};
};
8BA05A670720730100365D66 /* Loud.exp */ = {
@@ -117,10 +117,10 @@
};
8BC6025B073B072D006C4272 /* Loud.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1006, 1898}}";
- sepNavSelRange = "{2999, 121}";
- sepNavVisRange = "{3795, 1551}";
- sepNavWindowFrame = "{{89, -6}, {1053, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1006, 1846}}";
+ sepNavSelRange = "{5199, 0}";
+ sepNavVisRange = "{3721, 1588}";
+ sepNavWindowFrame = "{{89, 39}, {1053, 839}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3
index 2b8deb6..fc5744d 100755
--- a/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -352,11 +350,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B904D5920A4584C008CBAD8</string>
+ <string>8B792DD721F42C90006E9731</string>
<key>history</key>
<array>
<string>8B9F0C141EB4035300D3B900</string>
- <string>8B904D5820A4584C008CBAD8</string>
+ <string>8B792DD221F42C71006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 51}}</string>
+ <string>{{0, 0}, {603, 32}}</string>
<key>RubberWindowFrame</key>
<string>337 373 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>51pt</string>
+ <string>32pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>390pt</string>
+ <string>409pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
- <key>RubberWindowFrame</key>
- <string>337 373 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 382}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 382}}</string>
+ <key>RubberWindowFrame</key>
+ <string>337 373 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B904D5A20A4584C008CBAD8</string>
+ <string>8B792DD821F42C90006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B904D5B20A4584C008CBAD8</string>
+ <string>8B792DD921F42C90006E9731</string>
<string>8BDB26991EAA805E001F42B2</string>
- <string>8B904D5C20A4584C008CBAD8</string>
+ <string>8B792DDA21F42C90006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>547641420.42251396</real>
+ <real>569650320.319924</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B904D5D20A4584C008CBAD8</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Loud/Loud.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacAU/Lowpass/Lowpass.cpp b/plugins/MacAU/Lowpass/Lowpass.cpp
index 234b763..f727829 100755
--- a/plugins/MacAU/Lowpass/Lowpass.cpp
+++ b/plugins/MacAU/Lowpass/Lowpass.cpp
@@ -176,8 +176,7 @@ void Lowpass::LowpassKernel::Reset()
{
iirSampleA = 0.0;
iirSampleB = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
+ fpNShape = 0.0;
fpFlip = true;
}
@@ -205,9 +204,6 @@ void Lowpass::LowpassKernel::Process( const Float32 *inSourceP,
Float64 offset;
Float64 inputSample;
Float64 outputSample;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -262,20 +258,13 @@ void Lowpass::LowpassKernel::Process( const Float32 *inSourceP,
}
if (wet < 1.0) outputSample = (outputSample * wet) + (inputSample * dry);
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = outputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((outputSample-fpTemp)*fpNew);
- outputSample += fpNShapeA;
- }
- else {
- fpTemp = outputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((outputSample-fpTemp)*fpNew);
- outputSample += fpNShapeB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = outputSample;
sourceP += inNumChannels;
diff --git a/plugins/MacAU/Lowpass/Lowpass.h b/plugins/MacAU/Lowpass/Lowpass.h
index 695a116..cf12e75 100755
--- a/plugins/MacAU/Lowpass/Lowpass.h
+++ b/plugins/MacAU/Lowpass/Lowpass.h
@@ -133,8 +133,7 @@ public:
private:
Float64 iirSampleA;
Float64 iirSampleB;
- long double fpNShapeA;
- long double fpNShapeB;
+ long double fpNShape;
bool fpFlip;
};
};
diff --git a/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser
index f5f0bfd..badd1c8 100755
--- a/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456837;
- PBXWorkspaceStateSaveDate = 528456837;
+ PBXPerProjectTemplateStateSaveDate = 569650365;
+ PBXWorkspaceStateSaveDate = 569650365;
};
perUserProjectItems = {
8B22B12A1DB18F4E0075D7AA /* PBXTextBookmark */ = 8B22B12A1DB18F4E0075D7AA /* PBXTextBookmark */;
8B22B12B1DB18F4E0075D7AA /* PBXTextBookmark */ = 8B22B12B1DB18F4E0075D7AA /* PBXTextBookmark */;
- 8B9D65961F7C8AEB007AB60F /* PBXTextBookmark */ = 8B9D65961F7C8AEB007AB60F /* PBXTextBookmark */;
- 8B9D74E11F7F9CD5007AB60F /* PBXTextBookmark */ = 8B9D74E11F7F9CD5007AB60F /* PBXTextBookmark */;
+ 8B792DE821F42D38006E9731 /* PBXTextBookmark */ = 8B792DE821F42D38006E9731 /* PBXTextBookmark */;
+ 8B792DED21F42D64006E9731 /* PBXTextBookmark */ = 8B792DED21F42D64006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -82,7 +82,7 @@
vrLen = 672;
vrLoc = 7641;
};
- 8B9D65961F7C8AEB007AB60F /* PBXTextBookmark */ = {
+ 8B792DE821F42D38006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Lowpass.h */;
name = "Lowpass.h: 134";
@@ -92,21 +92,21 @@
vrLen = 647;
vrLoc = 2906;
};
- 8B9D74E11F7F9CD5007AB60F /* PBXTextBookmark */ = {
+ 8B792DED21F42D64006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Lowpass.h */;
name = "Lowpass.h: 134";
rLen = 44;
rLoc = 5247;
rType = 0;
- vrLen = 647;
+ vrLen = 379;
vrLoc = 2906;
};
8BA05A660720730100365D66 /* Lowpass.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {964, 3770}}";
- sepNavSelRange = "{9874, 0}";
- sepNavVisRange = "{9374, 2090}";
+ sepNavIntBoundsRect = "{{0, 0}, {964, 3796}}";
+ sepNavSelRange = "{11986, 0}";
+ sepNavVisRange = "{10557, 1517}";
sepNavWindowFrame = "{{418, 133}, {903, 692}}";
};
};
@@ -128,9 +128,9 @@
};
8BC6025B073B072D006C4272 /* Lowpass.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 2080}}";
+ sepNavIntBoundsRect = "{{0, 0}, {824, 1911}}";
sepNavSelRange = "{5247, 44}";
- sepNavVisRange = "{2906, 647}";
+ sepNavVisRange = "{2906, 379}";
sepNavWindowFrame = "{{15, 54}, {895, 819}}";
};
};
diff --git a/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3
index 77c2c6b..1791e2f 100755
--- a/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>548 245 810 487 0 0 1440 878 </string>
+ <string>445 250 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,12 +350,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D74E11F7F9CD5007AB60F</string>
+ <string>8B792DED21F42D64006E9731</string>
<key>history</key>
<array>
<string>8B22B12A1DB18F4E0075D7AA</string>
<string>8B22B12B1DB18F4E0075D7AA</string>
- <string>8B9D65961F7C8AEB007AB60F</string>
+ <string>8B792DE821F42D38006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 325}}</string>
+ <string>{{0, 0}, {603, 146}}</string>
<key>RubberWindowFrame</key>
- <string>548 245 810 487 0 0 1440 878 </string>
+ <string>445 250 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>325pt</string>
+ <string>146pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>116pt</string>
+ <string>295pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 89}}</string>
- <key>RubberWindowFrame</key>
- <string>548 245 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 95}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 268}}</string>
+ <key>RubberWindowFrame</key>
+ <string>445 250 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D74E21F7F9CD5007AB60F</string>
+ <string>8B792DEE21F42D64006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D74E31F7F9CD5007AB60F</string>
+ <string>8B792DEF21F42D64006E9731</string>
<string>8B48C3411DAAD496009A0ADD</string>
- <string>8B9D74E41F7F9CD5007AB60F</string>
+ <string>8B792DF021F42D64006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -637,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456917.709867</real>
+ <real>569650532.61439598</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -654,11 +652,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D74E51F7F9CD5007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Lowpass/Lowpass.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>548 245 810 487 0 0 1440 878 </string>
+ <string>445 250 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Melt/Melt.cpp b/plugins/MacAU/Melt/Melt.cpp
index 8da35b4..eaca93d 100755
--- a/plugins/MacAU/Melt/Melt.cpp
+++ b/plugins/MacAU/Melt/Melt.cpp
@@ -189,10 +189,7 @@ void Melt::MeltKernel::Reset()
stepCount = 0;
slowCount = 0;
gcount = 0;
-
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -245,10 +242,6 @@ void Melt::MeltKernel::Process( const Float32 *inSourceP,
minTap[28] = floor(109 * depthA); maxTap[28] = floor(109 * depthB);
minTap[29] = floor(113 * depthA); maxTap[29] = floor(113 * depthB);
minTap[30] = floor(117 * depthA); maxTap[30] = floor(117 * depthB);
-
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double drySample;
long double inputSample;
@@ -370,20 +363,11 @@ void Melt::MeltKernel::Process( const Float32 *inSourceP,
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Melt/Melt.h b/plugins/MacAU/Melt/Melt.h
index b8e7122..4473fb5 100755
--- a/plugins/MacAU/Melt/Melt.h
+++ b/plugins/MacAU/Melt/Melt.h
@@ -145,9 +145,7 @@ public:
Float32 scalefactor;
int gcount;
//we're using 32 bit because we want to build some truncation into the tails to noise them.
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.pbxuser
index 608567f..0973f73 100755
--- a/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528456926;
- PBXWorkspaceStateSaveDate = 528456926;
+ PBXPerProjectTemplateStateSaveDate = 569650600;
+ PBXWorkspaceStateSaveDate = 569650600;
};
perUserProjectItems = {
8B3483971E27D980007B1BF6 /* PlistBookmark */ = 8B3483971E27D980007B1BF6 /* PlistBookmark */;
8B4296221E6DCF55007D8787 /* PBXTextBookmark */ = 8B4296221E6DCF55007D8787 /* PBXTextBookmark */;
- 8B9D65A91F7C8B27007AB60F /* PBXTextBookmark */ = 8B9D65A91F7C8B27007AB60F /* PBXTextBookmark */;
- 8B9D74F01F7F9D02007AB60F /* PBXTextBookmark */ = 8B9D74F01F7F9D02007AB60F /* PBXTextBookmark */;
+ 8B792DFF21F42E3C006E9731 /* PBXTextBookmark */ = 8B792DFF21F42E3C006E9731 /* PBXTextBookmark */;
+ 8B792E0421F42E5D006E9731 /* PBXTextBookmark */ = 8B792E0421F42E5D006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -84,48 +84,48 @@
vrLen = 354;
vrLoc = 5375;
};
- 8B9D65A91F7C8B27007AB60F /* PBXTextBookmark */ = {
+ 8B792DFF21F42E3C006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* MeltVersion.h */;
name = "MeltVersion.h: 56";
rLen = 0;
rLoc = 2913;
rType = 0;
- vrLen = 326;
- vrLoc = 2595;
+ vrLen = 274;
+ vrLoc = 2647;
};
- 8B9D74F01F7F9D02007AB60F /* PBXTextBookmark */ = {
+ 8B792E0421F42E5D006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* MeltVersion.h */;
name = "MeltVersion.h: 56";
rLen = 0;
rLoc = 2913;
rType = 0;
- vrLen = 300;
- vrLoc = 2621;
+ vrLen = 274;
+ vrLoc = 2647;
};
8BA05A660720730100365D66 /* Melt.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {880, 4914}}";
- sepNavSelRange = "{12007, 0}";
- sepNavVisRange = "{11242, 2563}";
- sepNavWindowFrame = "{{516, 41}, {923, 837}}";
+ sepNavIntBoundsRect = "{{0, 0}, {876, 5252}}";
+ sepNavSelRange = "{16035, 0}";
+ sepNavVisRange = "{14613, 1510}";
+ sepNavWindowFrame = "{{351, 41}, {923, 837}}";
};
};
8BA05A690720730100365D66 /* MeltVersion.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 793}}";
+ sepNavIntBoundsRect = "{{0, 0}, {824, 832}}";
sepNavSelRange = "{2913, 0}";
- sepNavVisRange = "{2621, 300}";
+ sepNavVisRange = "{2647, 274}";
sepNavWindowFrame = "{{15, 39}, {923, 837}}";
};
};
8BC6025B073B072D006C4272 /* Melt.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 2041}}";
- sepNavSelRange = "{5375, 185}";
- sepNavVisRange = "{2703, 1607}";
- sepNavWindowFrame = "{{780, 30}, {923, 837}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2028}}";
+ sepNavSelRange = "{5681, 0}";
+ sepNavVisRange = "{4205, 1578}";
+ sepNavWindowFrame = "{{358, 41}, {923, 837}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3
index a3708e3..09058db 100755
--- a/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -325,7 +323,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 164 841 654 0 0 1440 878 </string>
+ <string>461 194 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,12 +351,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D74F01F7F9D02007AB60F</string>
+ <string>8B792E0421F42E5D006E9731</string>
<key>history</key>
<array>
<string>8B3483971E27D980007B1BF6</string>
<string>8B4296221E6DCF55007D8787</string>
- <string>8B9D65A91F7C8B27007AB60F</string>
+ <string>8B792DFF21F42E3C006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 216}}</string>
+ <string>{{0, 0}, {531, 202}}</string>
<key>RubberWindowFrame</key>
- <string>599 164 841 654 0 0 1440 878 </string>
+ <string>461 194 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>216pt</string>
+ <string>202pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>392pt</string>
+ <string>406pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 365}}</string>
- <key>RubberWindowFrame</key>
- <string>599 164 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 379}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {531, 379}}</string>
+ <key>RubberWindowFrame</key>
+ <string>461 194 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -481,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D74F11F7F9D02007AB60F</string>
+ <string>8B792E0521F42E5D006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D74F21F7F9D02007AB60F</string>
+ <string>8B792E0621F42E5D006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D74F31F7F9D02007AB60F</string>
+ <string>8B792E0721F42E5D006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528456962.27142799</real>
+ <real>569650781.22719395</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,11 +673,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D74F41F7F9D02007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Melt/Melt.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 164 841 654 0 0 1440 878 </string>
+ <string>461 194 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/MidSide/MidSide.cpp b/plugins/MacAU/MidSide/MidSide.cpp
index 32dfa00..8330aa1 100755
--- a/plugins/MacAU/MidSide/MidSide.cpp
+++ b/plugins/MacAU/MidSide/MidSide.cpp
@@ -171,11 +171,8 @@ ComponentResult MidSide::Initialize()
// this is called the reset the DSP state (clear buffers, reset counters, etc.)
ComponentResult MidSide::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
return noErr;
}
@@ -194,11 +191,7 @@ OSStatus MidSide::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags
Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData);
Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData);
UInt32 nSampleFrames = inFramesToProcess;
-
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+
long double inputSampleL;
long double inputSampleR;
long double mid;
@@ -256,25 +249,14 @@ OSStatus MidSide::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags
mid *= midgain;
side *= sidegain;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = mid;
*outputR = side;
diff --git a/plugins/MacAU/MidSide/MidSide.h b/plugins/MacAU/MidSide/MidSide.h
index 9d78006..643457a 100755
--- a/plugins/MacAU/MidSide/MidSide.h
+++ b/plugins/MacAU/MidSide/MidSide.h
@@ -111,11 +111,8 @@ public:
virtual ComponentResult Version() { return kMidSideVersion; }
private:
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
};
diff --git a/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser
index 4bb0c76..854d5ed 100755
--- a/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser
@@ -49,43 +49,43 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528457068;
- PBXWorkspaceStateSaveDate = 528457068;
+ PBXPerProjectTemplateStateSaveDate = 569650825;
+ PBXWorkspaceStateSaveDate = 569650825;
};
perUserProjectItems = {
- 8B9D65B91F7C8B49007AB60F /* PBXTextBookmark */ = 8B9D65B91F7C8B49007AB60F /* PBXTextBookmark */;
- 8B9D74FF1F7F9D7C007AB60F /* PBXTextBookmark */ = 8B9D74FF1F7F9D7C007AB60F /* PBXTextBookmark */;
+ 8B792E1621F42F27006E9731 /* PBXTextBookmark */ = 8B792E1621F42F27006E9731 /* PBXTextBookmark */;
+ 8B792E1B21F42F3C006E9731 /* PBXTextBookmark */ = 8B792E1B21F42F3C006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D65B91F7C8B49007AB60F /* PBXTextBookmark */ = {
+ 8B792E1621F42F27006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* MidSide.cpp */;
- name = "MidSide.cpp: 179";
+ name = "MidSide.cpp: 176";
rLen = 0;
- rLoc = 7698;
+ rLoc = 7642;
rType = 0;
- vrLen = 71;
- vrLoc = 7644;
+ vrLen = 4;
+ vrLoc = 7657;
};
- 8B9D74FF1F7F9D7C007AB60F /* PBXTextBookmark */ = {
+ 8B792E1B21F42F3C006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* MidSide.cpp */;
- name = "MidSide.cpp: 179";
+ name = "MidSide.cpp: 176";
rLen = 0;
- rLoc = 7698;
+ rLoc = 7642;
rType = 0;
- vrLen = 33;
- vrLoc = 7682;
+ vrLen = 3;
+ vrLoc = 7657;
};
8BA05A660720730100365D66 /* MidSide.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {656, 3848}}";
- sepNavSelRange = "{7698, 0}";
- sepNavVisRange = "{7682, 33}";
- sepNavWindowFrame = "{{370, 56}, {1070, 811}}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 3770}}";
+ sepNavSelRange = "{7642, 0}";
+ sepNavVisRange = "{7657, 3}";
+ sepNavWindowFrame = "{{199, 67}, {1070, 811}}";
};
};
8BA05A670720730100365D66 /* MidSide.exp */ = {
@@ -106,10 +106,10 @@
};
8BC6025B073B072D006C4272 /* MidSide.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1023, 1638}}";
- sepNavSelRange = "{4794, 131}";
- sepNavVisRange = "{3189, 1836}";
- sepNavWindowFrame = "{{612, 23}, {1070, 811}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1023, 1599}}";
+ sepNavSelRange = "{4842, 0}";
+ sepNavVisRange = "{3187, 1779}";
+ sepNavWindowFrame = "{{370, 39}, {1070, 811}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3
index 32ff114..3db9e85 100755
--- a/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>612 261 810 487 0 0 1440 878 </string>
+ <string>444 290 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D74FF1F7F9D7C007AB60F</string>
+ <string>8B792E1B21F42F3C006E9731</string>
<key>history</key>
<array>
- <string>8B9D65B91F7C8B49007AB60F</string>
+ <string>8B792E1621F42F27006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {603, 51}}</string>
<key>RubberWindowFrame</key>
- <string>612 261 810 487 0 0 1440 878 </string>
+ <string>444 290 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>390pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
- <key>RubberWindowFrame</key>
- <string>612 261 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 363}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 363}}</string>
+ <key>RubberWindowFrame</key>
+ <string>444 290 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D75001F7F9D7C007AB60F</string>
+ <string>8B792E1C21F42F3C006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D75011F7F9D7C007AB60F</string>
+ <string>8B792E1D21F42F3C006E9731</string>
<string>8B753E6F1E40231800347157</string>
- <string>8B9D75021F7F9D7C007AB60F</string>
+ <string>8B792E1E21F42F3C006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528457084.46547401</real>
+ <real>569651004.49607897</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +650,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D75031F7F9D7C007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/MidSide/MidSide.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>612 261 810 487 0 0 1440 878 </string>
+ <string>444 290 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/NCSeventeen/NCSeventeen.cpp b/plugins/MacAU/NCSeventeen/NCSeventeen.cpp
index cc27033..14f0cf2 100755
--- a/plugins/MacAU/NCSeventeen/NCSeventeen.cpp
+++ b/plugins/MacAU/NCSeventeen/NCSeventeen.cpp
@@ -173,9 +173,7 @@ void NCSeventeen::NCSeventeenKernel::Reset()
basslev = 0.0;
treblev = 0.0;
cheblev = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -189,12 +187,7 @@ void NCSeventeen::NCSeventeenKernel::Process( const Float32 *inSourceP,
{
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
- Float32 *destP = inDestP;
-
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ Float32 *destP = inDestP;
Float64 inP2;
Float64 chebyshev;
Float64 overallscale = 1.0;
@@ -389,19 +382,11 @@ void NCSeventeen::NCSeventeenKernel::Process( const Float32 *inSourceP,
if (inputSample < -0.95) inputSample = -0.95;
//iron bar
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
//built in output trim and dry/wet by default
diff --git a/plugins/MacAU/NCSeventeen/NCSeventeen.h b/plugins/MacAU/NCSeventeen/NCSeventeen.h
index 80575ef..571f64f 100755
--- a/plugins/MacAU/NCSeventeen/NCSeventeen.h
+++ b/plugins/MacAU/NCSeventeen/NCSeventeen.h
@@ -133,9 +133,7 @@ public:
Float64 basslev;
Float64 treblev;
Float64 cheblev;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
//default stuff
};
diff --git a/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser
index f9c1f79..6f69541 100755
--- a/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser
@@ -49,43 +49,43 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 531741948;
- PBXWorkspaceStateSaveDate = 531741948;
+ PBXPerProjectTemplateStateSaveDate = 569651037;
+ PBXWorkspaceStateSaveDate = 569651037;
};
perUserProjectItems = {
- 8B66929D1FA3B6DF007B3434 /* PBXTextBookmark */ = 8B66929D1FA3B6DF007B3434 /* PBXTextBookmark */;
- 8B6692BF1FB1BEBD007B3434 /* PBXTextBookmark */ = 8B6692BF1FB1BEBD007B3434 /* PBXTextBookmark */;
+ 8B792E2D21F42FE2006E9731 /* PBXTextBookmark */ = 8B792E2D21F42FE2006E9731 /* PBXTextBookmark */;
+ 8B792E3221F43005006E9731 /* PBXTextBookmark */ = 8B792E3221F43005006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B66929D1FA3B6DF007B3434 /* PBXTextBookmark */ = {
+ 8B792E2D21F42FE2006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* NCSeventeen.h */;
name = "NCSeventeen.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 47;
+ vrLen = 26;
vrLoc = 0;
};
- 8B6692BF1FB1BEBD007B3434 /* PBXTextBookmark */ = {
+ 8B792E3221F43005006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* NCSeventeen.h */;
name = "NCSeventeen.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 29;
+ vrLen = 26;
vrLoc = 0;
};
8BA05A660720730100365D66 /* NCSeventeen.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1098, 5460}}";
- sepNavSelRange = "{16304, 0}";
- sepNavVisRange = "{15087, 1879}";
- sepNavWindowFrame = "{{295, 66}, {1145, 812}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1098, 5317}}";
+ sepNavSelRange = "{16560, 0}";
+ sepNavVisRange = "{14728, 1968}";
+ sepNavWindowFrame = "{{152, 66}, {1145, 812}}";
};
};
8BA05A690720730100365D66 /* NCSeventeenVersion.h */ = {
@@ -98,10 +98,10 @@
};
8BC6025B073B072D006C4272 /* NCSeventeen.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 1963}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 1937}}";
sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 29}";
- sepNavWindowFrame = "{{413, 43}, {1027, 835}}";
+ sepNavVisRange = "{0, 26}";
+ sepNavWindowFrame = "{{244, 43}, {1027, 835}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3
index 8047d9f..b049979 100755
--- a/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -300,7 +298,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>613 385 810 487 0 0 1440 878 </string>
+ <string>460 371 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B6692BF1FB1BEBD007B3434</string>
+ <string>8B792E3221F43005006E9731</string>
<key>history</key>
<array>
- <string>8B66929D1FA3B6DF007B3434</string>
+ <string>8B792E2D21F42FE2006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {603, 51}}</string>
<key>RubberWindowFrame</key>
- <string>613 385 810 487 0 0 1440 878 </string>
+ <string>460 371 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>390pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
- <key>RubberWindowFrame</key>
- <string>613 385 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 363}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 363}}</string>
+ <key>RubberWindowFrame</key>
+ <string>460 371 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B6692C01FB1BEBD007B3434</string>
+ <string>8B792E3321F43005006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B6692C11FB1BEBD007B3434</string>
+ <string>8B792E3421F43005006E9731</string>
<string>8B67C76A1FA2B03A008C64D6</string>
- <string>8B6692C21FB1BEBD007B3434</string>
+ <string>8B792E3521F43005006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>531742397.05920899</real>
+ <real>569651205.03675902</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +650,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B6692C31FB1BEBD007B3434</string>
<string>/Users/christopherjohnson/Desktop/MacAU/NCSeventeen/NCSeventeen.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>613 385 810 487 0 0 1440 878 </string>
+ <string>460 371 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Noise/Noise.cpp b/plugins/MacAU/Noise/Noise.cpp
index b528b4b..15ca903 100755
--- a/plugins/MacAU/Noise/Noise.cpp
+++ b/plugins/MacAU/Noise/Noise.cpp
@@ -209,9 +209,7 @@ void Noise::NoiseKernel::Reset()
flip = false;
filterflip = false;
for(int count = 0; count < 11; count++) {b[count] = 0.0; f[count] = 0.0;}
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -311,10 +309,6 @@ void Noise::NoiseKernel::Process( const Float32 *inSourceP,
f[9] /= overallscale;
//and now it's neatly scaled, too
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
if (inputSample<1.2e-38 && -inputSample<1.2e-38) {
@@ -359,8 +353,8 @@ void Noise::NoiseKernel::Process( const Float32 *inSourceP,
invcutoff = 1.0 - cutoff;
//set up modified cutoff
- flip = not flip;
- filterflip = not filterflip;
+ flip = !flip;
+ filterflip = !filterflip;
quadratic -= 1;
if (quadratic < 0)
{
@@ -428,19 +422,11 @@ void Noise::NoiseKernel::Process( const Float32 *inSourceP,
inputSample -= correctionSample;
//applying the distance calculation to both the dry AND the noise output to blend them
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Noise/Noise.h b/plugins/MacAU/Noise/Noise.h
index 7d0a6d7..452a603 100755
--- a/plugins/MacAU/Noise/Noise.h
+++ b/plugins/MacAU/Noise/Noise.h
@@ -152,9 +152,7 @@ public:
bool filterflip;
Float64 b[11];
Float64 f[11];
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.pbxuser
index 5aa8db5..fd77959 100755
--- a/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538271590;
- PBXWorkspaceStateSaveDate = 538271590;
+ PBXPerProjectTemplateStateSaveDate = 569651243;
+ PBXWorkspaceStateSaveDate = 569651243;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -58,10 +58,10 @@
};
8BA05A660720730100365D66 /* Noise.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {934, 6162}}";
- sepNavSelRange = "{17598, 1}";
- sepNavVisRange = "{16371, 1511}";
- sepNavWindowFrame = "{{449, 62}, {981, 816}}";
+ sepNavIntBoundsRect = "{{0, 0}, {934, 5928}}";
+ sepNavSelRange = "{13301, 0}";
+ sepNavVisRange = "{10580, 1962}";
+ sepNavWindowFrame = "{{302, 62}, {981, 816}}";
};
};
8BA05A680720730100365D66 /* Noise.r */ = {
@@ -82,10 +82,10 @@
};
8BC6025B073B072D006C4272 /* Noise.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {934, 1911}}";
- sepNavSelRange = "{3042, 0}";
- sepNavVisRange = "{1672, 2009}";
- sepNavWindowFrame = "{{763, 62}, {981, 816}}";
+ sepNavIntBoundsRect = "{{0, 0}, {934, 2223}}";
+ sepNavSelRange = "{5824, 0}";
+ sepNavVisRange = "{4614, 1330}";
+ sepNavWindowFrame = "{{459, 62}, {981, 816}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3
index bc7c41e..3d7c6a5 100755
--- a/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>614 382 810 487 0 0 1440 878 </string>
+ <string>455 339 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -363,7 +361,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>614 382 810 487 0 0 1440 878 </string>
+ <string>455 339 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -387,8 +385,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>614 382 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -442,7 +438,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>455 339 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -470,11 +468,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BA11D6C20155F6900D31247</string>
+ <string>8B792E4721F430DD006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BA11D6D20155F6900D31247</string>
+ <string>8B792E4821F430DD006E9731</string>
<string>8B6FC0582010B87E003CA5F7</string>
- <string>8BA11D6E20155F6900D31247</string>
+ <string>8B792E4921F430DD006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -627,7 +625,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538274889.58884597</real>
+ <real>569651421.60977602</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -647,7 +645,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Noise/Noise.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>614 382 810 487 0 0 1440 878 </string>
+ <string>455 339 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.cpp b/plugins/MacAU/NonlinearSpace/NonlinearSpace.cpp
index 4c11ff3..d91e997 100755
--- a/plugins/MacAU/NonlinearSpace/NonlinearSpace.cpp
+++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.cpp
@@ -408,11 +408,8 @@ ComponentResult NonlinearSpace::Reset(AudioUnitScope inScope, AudioUnitElement
countdown = -1;
flip = true;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
return noErr;
}
@@ -430,9 +427,6 @@ OSStatus NonlinearSpace::ProcessBufferLists(AudioUnitRenderActionFlags & ioActi
Float32 * inputR = (Float32*)(inBuffer.mBuffers[1].mData);
Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData);
Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData);
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
UInt32 nSampleFrames = inFramesToProcess;
long double drySampleL;
long double drySampleR;
@@ -1161,25 +1155,14 @@ OSStatus NonlinearSpace::ProcessBufferLists(AudioUnitRenderActionFlags & ioActi
drySampleR += inputSampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = drySampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((drySampleL-fpTemp)*fpNew);
- drySampleL += fpNShapeAL;
- fpTemp = drySampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((drySampleR-fpTemp)*fpNew);
- drySampleR += fpNShapeAR;
- }
- else {
- fpTemp = drySampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((drySampleL-fpTemp)*fpNew);
- drySampleL += fpNShapeBL;
- fpTemp = drySampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((drySampleR-fpTemp)*fpNew);
- drySampleR += fpNShapeBR;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
flip = !flip;
*outputL = drySampleL;
diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.h b/plugins/MacAU/NonlinearSpace/NonlinearSpace.h
index 4e1fa8c..2c9b3d0 100755
--- a/plugins/MacAU/NonlinearSpace/NonlinearSpace.h
+++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.h
@@ -293,12 +293,8 @@ private:
Float64 nonlin;
-
- Float64 fpNShapeAL;
- Float64 fpNShapeAR;
- Float64 fpNShapeBL;
- Float64 fpNShapeBR;
- bool fpFlip;
+ Float64 fpNShapeR;
+ Float64 fpNShapeL;
};
diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser
index 3db0ed1..2fc6ea7 100755
--- a/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser
@@ -49,28 +49,28 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541885687;
- PBXWorkspaceStateSaveDate = 541885687;
+ PBXPerProjectTemplateStateSaveDate = 569651447;
+ PBXWorkspaceStateSaveDate = 569651447;
};
perUserProjectItems = {
- 8B18199D204B916F00516BEE /* PBXTextBookmark */ = 8B18199D204B916F00516BEE /* PBXTextBookmark */;
- 8B181A99204C8C0B00516BEE /* PBXTextBookmark */ = 8B181A99204C8C0B00516BEE /* PBXTextBookmark */;
+ 8B792E5721F4316F006E9731 /* PBXTextBookmark */ = 8B792E5721F4316F006E9731 /* PBXTextBookmark */;
+ 8B792E5D21F4318F006E9731 /* PBXTextBookmark */ = 8B792E5D21F4318F006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B18199D204B916F00516BEE /* PBXTextBookmark */ = {
+ 8B792E5721F4316F006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* NonlinearSpaceVersion.h */;
name = "NonlinearSpaceVersion.h: 54";
rLen = 0;
rLoc = 2930;
rType = 0;
- vrLen = 291;
- vrLoc = 2693;
+ vrLen = 242;
+ vrLoc = 2742;
};
- 8B181A99204C8C0B00516BEE /* PBXTextBookmark */ = {
+ 8B792E5D21F4318F006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* NonlinearSpaceVersion.h */;
name = "NonlinearSpaceVersion.h: 54";
@@ -82,10 +82,10 @@
};
8BA05A660720730100365D66 /* NonlinearSpace.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {950, 15535}}";
- sepNavSelRange = "{48346, 16}";
- sepNavVisRange = "{47066, 1488}";
- sepNavWindowFrame = "{{443, 40}, {997, 838}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1020, 15964}}";
+ sepNavSelRange = "{16757, 0}";
+ sepNavVisRange = "{15636, 1745}";
+ sepNavWindowFrame = "{{278, 40}, {997, 838}}";
};
};
8BA05A670720730100365D66 /* NonlinearSpace.exp */ = {
@@ -97,7 +97,7 @@
};
8BA05A690720730100365D66 /* NonlinearSpaceVersion.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 897}}";
+ sepNavIntBoundsRect = "{{0, 0}, {803, 910}}";
sepNavSelRange = "{2930, 0}";
sepNavVisRange = "{2742, 242}";
sepNavWindowFrame = "{{15, 40}, {997, 838}}";
@@ -105,9 +105,9 @@
};
8BC6025B073B072D006C4272 /* NonlinearSpace.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {950, 4004}}";
- sepNavSelRange = "{3309, 0}";
- sepNavVisRange = "{9015, 1297}";
+ sepNavIntBoundsRect = "{{0, 0}, {950, 4446}}";
+ sepNavSelRange = "{10101, 0}";
+ sepNavVisRange = "{8847, 1404}";
sepNavWindowFrame = "{{443, 40}, {997, 838}}";
};
};
diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3
index 71cc409..93eb68c 100755
--- a/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>605 353 810 487 0 0 1440 878 </string>
+ <string>474 350 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B181A99204C8C0B00516BEE</string>
+ <string>8B792E5D21F4318F006E9731</string>
<key>history</key>
<array>
- <string>8B18199D204B916F00516BEE</string>
+ <string>8B792E5721F4316F006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 102}}</string>
<key>RubberWindowFrame</key>
- <string>605 353 810 487 0 0 1440 878 </string>
+ <string>474 350 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>102pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>339pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
- <key>RubberWindowFrame</key>
- <string>605 353 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 312}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 312}}</string>
+ <key>RubberWindowFrame</key>
+ <string>474 350 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B181A9A204C8C0B00516BEE</string>
+ <string>8B792E5E21F4318F006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B181A9B204C8C0B00516BEE</string>
+ <string>8B792E5F21F4318F006E9731</string>
<string>8BCA70082027EAB800D92BAD</string>
- <string>8B181A9C204C8C0B00516BEE</string>
+ <string>8B792E6021F4318F006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541887499.900267</real>
+ <real>569651599.64848602</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,10 +650,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
+ <string>8B792E6121F4318F006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>605 353 810 487 0 0 1440 878 </string>
+ <string>474 350 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.pbxuser
index f4dc55f..f23ecda 100755
--- a/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528457201;
- PBXWorkspaceStateSaveDate = 528457201;
+ PBXPerProjectTemplateStateSaveDate = 568767039;
+ PBXWorkspaceStateSaveDate = 568767039;
};
perUserProjectItems = {
8B5B839E1E419C8A00ECA542 /* PlistBookmark */ = 8B5B839E1E419C8A00ECA542 /* PlistBookmark */;
- 8B9D65E71F7C8B79007AB60F /* PBXTextBookmark */ = 8B9D65E71F7C8B79007AB60F /* PBXTextBookmark */;
- 8B9D752B1F7F9E40007AB60F /* PBXTextBookmark */ = 8B9D752B1F7F9E40007AB60F /* PBXTextBookmark */;
+ 8BAF09C721E6BA6000C38394 /* PBXTextBookmark */ = 8BAF09C721E6BA6000C38394 /* PBXTextBookmark */;
+ 8BBB307421B7EF7400825986 /* PBXTextBookmark */ = 8BBB307421B7EF7400825986 /* PBXTextBookmark */;
+ 8BBB307621B7EF7400825986 /* PBXTextBookmark */ = 8BBB307621B7EF7400825986 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -73,41 +74,51 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B9D65E71F7C8B79007AB60F /* PBXTextBookmark */ = {
+ 8BA05A660720730100365D66 /* NotJustAnotherCD.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {691, 3991}}";
+ sepNavSelRange = "{9514, 0}";
+ sepNavVisRange = "{9386, 305}";
+ sepNavWindowFrame = "{{517, 41}, {923, 837}}";
+ };
+ };
+ 8BA05A690720730100365D66 /* NotJustAnotherCDVersion.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {803, 819}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRange = "{0, 561}";
+ sepNavWindowFrame = "{{15, 39}, {923, 837}}";
+ };
+ };
+ 8BAF09C721E6BA6000C38394 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A690720730100365D66 /* NotJustAnotherCDVersion.h */;
- name = "NotJustAnotherCDVersion.h: 1";
+ fRef = 8BA05A660720730100365D66 /* NotJustAnotherCD.cpp */;
+ name = "NotJustAnotherCD.cpp: 221";
rLen = 0;
- rLoc = 0;
+ rLoc = 9514;
rType = 0;
- vrLen = 756;
- vrLoc = 0;
+ vrLen = 305;
+ vrLoc = 9386;
};
- 8B9D752B1F7F9E40007AB60F /* PBXTextBookmark */ = {
+ 8BBB307421B7EF7400825986 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* NotJustAnotherCDVersion.h */;
name = "NotJustAnotherCDVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 665;
+ vrLen = 561;
vrLoc = 0;
};
- 8BA05A660720730100365D66 /* NotJustAnotherCD.cpp */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {876, 4082}}";
- sepNavSelRange = "{8015, 0}";
- sepNavVisRange = "{7112, 2405}";
- sepNavWindowFrame = "{{464, 41}, {923, 837}}";
- };
- };
- 8BA05A690720730100365D66 /* NotJustAnotherCDVersion.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 806}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 665}";
- sepNavWindowFrame = "{{15, 39}, {923, 837}}";
- };
+ 8BBB307621B7EF7400825986 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* NotJustAnotherCD.cpp */;
+ name = "NotJustAnotherCD.cpp: 221";
+ rLen = 0;
+ rLoc = 9514;
+ rType = 0;
+ vrLen = 393;
+ vrLoc = 9386;
};
8BC6025B073B072D006C4272 /* NotJustAnotherCD.h */ = {
uiCtxt = {
diff --git a/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.perspectivev3
index 2032d51..0ddef39 100755
--- a/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj/christopherjohnson.perspectivev3
@@ -341,7 +341,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>NotJustAnotherCDVersion.h</string>
+ <string>NotJustAnotherCD.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,15 +349,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>NotJustAnotherCDVersion.h</string>
+ <string>NotJustAnotherCD.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D752B1F7F9E40007AB60F</string>
+ <string>8BAF09C721E6BA6000C38394</string>
<key>history</key>
<array>
<string>8B5B839E1E419C8A00ECA542</string>
- <string>8B9D65E71F7C8B79007AB60F</string>
+ <string>8BBB307421B7EF7400825986</string>
+ <string>8BBB307621B7EF7400825986</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +372,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 229}}</string>
+ <string>{{0, 0}, {531, 188}}</string>
<key>RubberWindowFrame</key>
<string>405 167 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>229pt</string>
+ <string>188pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>379pt</string>
+ <string>420pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,7 +397,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 352}}</string>
+ <string>{{10, 27}, {531, 393}}</string>
<key>RubberWindowFrame</key>
<string>405 167 841 654 0 0 1440 878 </string>
</dict>
@@ -480,11 +481,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D752C1F7F9E40007AB60F</string>
+ <string>8BAF09C821E6BA6000C38394</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D752D1F7F9E40007AB60F</string>
+ <string>8BAF09C921E6BA6000C38394</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D752E1F7F9E40007AB60F</string>
+ <string>8BAF09CA21E6BA6000C38394</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +658,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528457280.83582401</real>
+ <real>568769120.05031896</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,7 +675,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D752F1F7F9E40007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser
index d3268bb..3aee3d6 100755
--- a/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser
@@ -49,38 +49,18 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 557543049;
- PBXWorkspaceStateSaveDate = 557543049;
+ PBXPerProjectTemplateStateSaveDate = 568766952;
+ PBXWorkspaceStateSaveDate = 568766952;
};
perUserProjectItems = {
- 8B39A172213B703300112CCA /* PBXTextBookmark */ = 8B39A172213B703300112CCA /* PBXTextBookmark */;
- 8B39A173213B703300112CCA /* PBXTextBookmark */ = 8B39A173213B703300112CCA /* PBXTextBookmark */;
8B8D6A12207ABF2E0029B7B0 /* PlistBookmark */ = 8B8D6A12207ABF2E0029B7B0 /* PlistBookmark */;
+ 8BAF09C221E6BA5C00C38394 /* PBXTextBookmark */ = 8BAF09C221E6BA5C00C38394 /* PBXTextBookmark */;
+ 8BBB2F6D21B620F100825986 /* PBXTextBookmark */ = 8BBB2F6D21B620F100825986 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B39A172213B703300112CCA /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* NotJustAnotherDither.cpp */;
- name = "NotJustAnotherDither.cpp: 190";
- rLen = 0;
- rLoc = 8123;
- rType = 0;
- vrLen = 447;
- vrLoc = 8049;
- };
- 8B39A173213B703300112CCA /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* NotJustAnotherDither.cpp */;
- name = "NotJustAnotherDither.cpp: 190";
- rLen = 0;
- rLoc = 8123;
- rType = 0;
- vrLen = 447;
- vrLoc = 8049;
- };
8B8D6A12207ABF2E0029B7B0 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
@@ -95,10 +75,10 @@
};
8BA05A660720730100365D66 /* NotJustAnotherDither.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {705, 4004}}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 4082}}";
sepNavSelRange = "{8123, 0}";
- sepNavVisRange = "{8049, 447}";
- sepNavWindowFrame = "{{818, 41}, {923, 837}}";
+ sepNavVisRange = "{8086, 233}";
+ sepNavWindowFrame = "{{517, 41}, {923, 837}}";
};
};
8BA05A680720730100365D66 /* NotJustAnotherDither.r */ = {
@@ -117,10 +97,30 @@
sepNavWindowFrame = "{{15, 39}, {923, 837}}";
};
};
+ 8BAF09C221E6BA5C00C38394 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* NotJustAnotherDither.cpp */;
+ name = "NotJustAnotherDither.cpp: 190";
+ rLen = 0;
+ rLoc = 8123;
+ rType = 0;
+ vrLen = 233;
+ vrLoc = 8086;
+ };
+ 8BBB2F6D21B620F100825986 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* NotJustAnotherDither.cpp */;
+ name = "NotJustAnotherDither.cpp: 190";
+ rLen = 0;
+ rLoc = 8123;
+ rType = 0;
+ vrLen = 253;
+ vrLoc = 8066;
+ };
8BC6025B073B072D006C4272 /* NotJustAnotherDither.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {894, 1716}}";
- sepNavSelRange = "{5108, 28}";
+ sepNavSelRange = "{4975, 0}";
sepNavVisRange = "{3502, 1743}";
sepNavWindowFrame = "{{517, 39}, {923, 837}}";
};
diff --git a/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3
index 7bc8b6d..faa330c 100755
--- a/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3
@@ -325,7 +325,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>572 175 841 654 0 0 1440 878 </string>
+ <string>780 134 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,11 +353,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B39A173213B703300112CCA</string>
+ <string>8BAF09C221E6BA5C00C38394</string>
<key>history</key>
<array>
<string>8B8D6A12207ABF2E0029B7B0</string>
- <string>8B39A172213B703300112CCA</string>
+ <string>8BBB2F6D21B620F100825986</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 158}}</string>
+ <string>{{0, 0}, {531, 109}}</string>
<key>RubberWindowFrame</key>
- <string>572 175 841 654 0 0 1440 878 </string>
+ <string>780 134 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>158pt</string>
+ <string>109pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>450pt</string>
+ <string>499pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +396,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 423}}</string>
+ <string>{{10, 27}, {531, 472}}</string>
<key>RubberWindowFrame</key>
- <string>572 175 841 654 0 0 1440 878 </string>
+ <string>780 134 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -480,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B39A174213B703300112CCA</string>
+ <string>8BAF09C321E6BA5C00C38394</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B39A175213B703300112CCA</string>
+ <string>8BAF09C421E6BA5C00C38394</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B39A176213B703300112CCA</string>
+ <string>8BAF09C521E6BA5C00C38394</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>557543475.44966102</real>
+ <real>568769116.18578196</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,11 +674,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B39A177213B703300112CCA</string>
+ <string>8BAF09C621E6BA5C00C38394</string>
<string>/Users/christopherjohnson/Desktop/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>572 175 841 654 0 0 1440 878 </string>
+ <string>780 134 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/OneCornerClip/OneCornerClip.cpp b/plugins/MacAU/OneCornerClip/OneCornerClip.cpp
index db4dcd0..9ddb8db 100755
--- a/plugins/MacAU/OneCornerClip/OneCornerClip.cpp
+++ b/plugins/MacAU/OneCornerClip/OneCornerClip.cpp
@@ -193,9 +193,7 @@ void OneCornerClip::OneCornerClipKernel::Reset()
lastSample = 0.0;
limitPos = 0.0;
limitNeg = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -213,9 +211,6 @@ void OneCornerClip::OneCornerClipKernel::Process( const Float32 *inSourceP,
long double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
Float64 inputGain = pow(10.0,(GetParameter( kParam_One ))/20.0);
Float64 posThreshold = pow(10.0,(GetParameter( kParam_Two ))/20.0);
@@ -309,21 +304,11 @@ void OneCornerClip::OneCornerClipKernel::Process( const Float32 *inSourceP,
inputSample = (inputSample * wet) + (drySample * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
- //we are making an 80 bit arbitrary curve, woot
- //at least we can say it's either 80 bit or pure bypass
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
if (clipEngage == false)
{
diff --git a/plugins/MacAU/OneCornerClip/OneCornerClip.h b/plugins/MacAU/OneCornerClip/OneCornerClip.h
index 0931824..013fc94 100755
--- a/plugins/MacAU/OneCornerClip/OneCornerClip.h
+++ b/plugins/MacAU/OneCornerClip/OneCornerClip.h
@@ -140,9 +140,7 @@ public:
Float64 lastSample;
Float64 limitPos;
Float64 limitNeg;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser
index 13fb85a..872b672 100755
--- a/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser
@@ -49,59 +49,59 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541882937;
- PBXWorkspaceStateSaveDate = 541882937;
+ PBXPerProjectTemplateStateSaveDate = 569651957;
+ PBXWorkspaceStateSaveDate = 569651957;
};
perUserProjectItems = {
- 8B181972204B914C00516BEE /* PBXTextBookmark */ = 8B181972204B914C00516BEE /* PBXTextBookmark */;
- 8B181A47204C83CC00516BEE /* PBXTextBookmark */ = 8B181A47204C83CC00516BEE /* PBXTextBookmark */;
+ 8B792E6F21F43380006E9731 /* PBXTextBookmark */ = 8B792E6F21F43380006E9731 /* PBXTextBookmark */;
+ 8B792E7421F43391006E9731 /* PBXTextBookmark */ = 8B792E7421F43391006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B181972204B914C00516BEE /* PBXTextBookmark */ = {
+ 8B792E6F21F43380006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* OneCornerClipVersion.h */;
name = "OneCornerClipVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 240;
+ vrLen = 187;
vrLoc = 2736;
};
- 8B181A47204C83CC00516BEE /* PBXTextBookmark */ = {
+ 8B792E7421F43391006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* OneCornerClipVersion.h */;
name = "OneCornerClipVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 239;
+ vrLen = 187;
vrLoc = 2736;
};
8BA05A660720730100365D66 /* OneCornerClip.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {885, 4251}}";
- sepNavSelRange = "{13850, 0}";
- sepNavVisRange = "{9777, 2480}";
- sepNavWindowFrame = "{{488, 63}, {932, 815}}";
+ sepNavIntBoundsRect = "{{0, 0}, {885, 4667}}";
+ sepNavSelRange = "{13380, 0}";
+ sepNavVisRange = "{12469, 1116}";
+ sepNavWindowFrame = "{{356, 63}, {932, 815}}";
};
};
8BA05A690720730100365D66 /* OneCornerClipVersion.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 949}}";
+ sepNavIntBoundsRect = "{{0, 0}, {803, 936}}";
sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{2736, 239}";
+ sepNavVisRange = "{2736, 187}";
sepNavWindowFrame = "{{15, 58}, {932, 815}}";
};
};
8BC6025B073B072D006C4272 /* OneCornerClip.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {894, 1976}}";
- sepNavSelRange = "{5638, 62}";
- sepNavVisRange = "{0, 2780}";
- sepNavWindowFrame = "{{837, 56}, {932, 815}}";
+ sepNavSelRange = "{5723, 0}";
+ sepNavVisRange = "{4252, 1581}";
+ sepNavWindowFrame = "{{508, 56}, {932, 815}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3
index 84e772a..73a7a50 100755
--- a/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -300,7 +298,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 365 810 487 0 0 1440 878 </string>
+ <string>428 370 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,10 +350,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B181A47204C83CC00516BEE</string>
+ <string>8B792E7421F43391006E9731</string>
<key>history</key>
<array>
- <string>8B181972204B914C00516BEE</string>
+ <string>8B792E6F21F43380006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 102}}</string>
<key>RubberWindowFrame</key>
- <string>630 365 810 487 0 0 1440 878 </string>
+ <string>428 370 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>102pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>339pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
- <key>RubberWindowFrame</key>
- <string>630 365 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 312}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 312}}</string>
+ <key>RubberWindowFrame</key>
+ <string>428 370 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B181A48204C83CC00516BEE</string>
+ <string>8B792E7521F43391006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B181A49204C83CC00516BEE</string>
+ <string>8B792E7621F43391006E9731</string>
<string>8BCA0F591D871CB100A4EFAF</string>
- <string>8B181A4A204C83CC00516BEE</string>
+ <string>8B792E7721F43391006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541885388.89707994</real>
+ <real>569652113.25814903</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +650,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B181A4B204C83CC00516BEE</string>
<string>/Users/christopherjohnson/Desktop/MacAU/OneCornerClip/OneCornerClip.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 365 810 487 0 0 1440 878 </string>
+ <string>428 370 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/PDBuss/PDBuss.cpp b/plugins/MacAU/PDBuss/PDBuss.cpp
index 5e27a7c..6f450c6 100755
--- a/plugins/MacAU/PDBuss/PDBuss.cpp
+++ b/plugins/MacAU/PDBuss/PDBuss.cpp
@@ -170,9 +170,7 @@ void PDBuss::PDBussKernel::Reset()
settingchase = -90.0;
chasespeed = 350.0;
previousSample = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -187,10 +185,6 @@ void PDBuss::PDBussKernel::Process( const Float32 *inSourceP,
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
Float64 inputgain = GetParameter( kParam_One );
Float64 intensity = GetParameter( kParam_Two );
Float64 apply;
@@ -265,19 +259,11 @@ void PDBuss::PDBussKernel::Process( const Float32 *inSourceP,
previousSample = sin(drySample);
//apply the sine while storing previous sample
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/PDBuss/PDBuss.h b/plugins/MacAU/PDBuss/PDBuss.h
index 906cb85..476b436 100755
--- a/plugins/MacAU/PDBuss/PDBuss.h
+++ b/plugins/MacAU/PDBuss/PDBuss.h
@@ -132,9 +132,7 @@ public:
Float64 settingchase;
Float64 chasespeed;
Float64 previousSample;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser
index f1228a5..40d8bcc 100755
--- a/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538696879;
- PBXWorkspaceStateSaveDate = 538696879;
+ PBXPerProjectTemplateStateSaveDate = 569652165;
+ PBXWorkspaceStateSaveDate = 569652165;
};
perUserProjectItems = {
8B4E5518201BB8EE00B5DC2A /* PlistBookmark */ = 8B4E5518201BB8EE00B5DC2A /* PlistBookmark */;
- 8B4E573F201BE1D700B5DC2A /* PBXTextBookmark */ = 8B4E573F201BE1D700B5DC2A /* PBXTextBookmark */;
- 8B4E5740201BE1D700B5DC2A /* PBXBookmark */ = 8B4E5740201BE1D700B5DC2A /* PBXBookmark */;
- 8B4E5741201BE1D700B5DC2A /* PBXTextBookmark */ = 8B4E5741201BE1D700B5DC2A /* PBXTextBookmark */;
+ 8B792E8621F43436006E9731 /* PBXTextBookmark */ = 8B792E8621F43436006E9731 /* PBXTextBookmark */;
+ 8B792E8721F43436006E9731 /* PBXTextBookmark */ = 8B792E8721F43436006E9731 /* PBXTextBookmark */;
+ 8B792E8C21F43451006E9731 /* PBXTextBookmark */ = 8B792E8C21F43451006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -74,36 +74,42 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B4E573F201BE1D700B5DC2A /* PBXTextBookmark */ = {
+ 8B792E8621F43436006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* PDBuss.cpp */;
+ name = "PDBuss.cpp: 165";
+ rLen = 0;
+ rLoc = 7437;
+ rType = 0;
+ vrLen = 1;
+ vrLoc = 7311;
+ };
+ 8B792E8721F43436006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* PDBuss.h */;
name = "PDBuss.h: 68";
rLen = 0;
rLoc = 3175;
rType = 0;
- vrLen = 29;
- vrLoc = 2587;
+ vrLen = 26;
+ vrLoc = 2590;
};
- 8B4E5740201BE1D700B5DC2A /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 8BA05A660720730100365D66 /* PDBuss.cpp */;
- };
- 8B4E5741201BE1D700B5DC2A /* PBXTextBookmark */ = {
+ 8B792E8C21F43451006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* PDBuss.cpp */;
- name = "PDBuss.cpp: 165";
+ fRef = 8BC6025B073B072D006C4272 /* PDBuss.h */;
+ name = "PDBuss.h: 68";
rLen = 0;
- rLoc = 7437;
+ rLoc = 3175;
rType = 0;
- vrLen = 95;
- vrLoc = 7310;
+ vrLen = 26;
+ vrLoc = 2590;
};
8BA05A660720730100365D66 /* PDBuss.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {656, 3887}}";
- sepNavSelRange = "{7437, 0}";
- sepNavVisRange = "{7310, 95}";
- sepNavWindowFrame = "{{489, 50}, {923, 828}}";
+ sepNavIntBoundsRect = "{{0, 0}, {876, 3822}}";
+ sepNavSelRange = "{11537, 0}";
+ sepNavVisRange = "{9680, 1945}";
+ sepNavWindowFrame = "{{352, 50}, {923, 828}}";
};
};
8BA05A690720730100365D66 /* PDBussVersion.h */ = {
@@ -116,9 +122,9 @@
};
8BC6025B073B072D006C4272 /* PDBuss.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1703}}";
+ sepNavIntBoundsRect = "{{0, 0}, {761, 1885}}";
sepNavSelRange = "{3175, 0}";
- sepNavVisRange = "{2035, 1751}";
+ sepNavVisRange = "{2590, 26}";
sepNavWindowFrame = "{{506, 50}, {923, 828}}";
};
};
diff --git a/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3
index c01d4ac..ba04652 100755
--- a/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>841</integer>
- <integer>841</integer>
+ <integer>775</integer>
+ <integer>775</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>656 383 775 495 0 0 1440 878 </string>
+ <string>528 353 775 495 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -342,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>PDBuss.cpp</string>
+ <string>PDBuss.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -350,16 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>PDBuss.cpp</string>
+ <string>PDBuss.h</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4E5741201BE1D700B5DC2A</string>
+ <string>8B792E8C21F43451006E9731</string>
<key>history</key>
<array>
<string>8B4E5518201BB8EE00B5DC2A</string>
- <string>8B4E573F201BE1D700B5DC2A</string>
- <string>8B4E5740201BE1D700B5DC2A</string>
+ <string>8B792E8621F43436006E9731</string>
+ <string>8B792E8721F43436006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {465, 52}}</string>
+ <string>{{0, 0}, {465, 33}}</string>
<key>RubberWindowFrame</key>
- <string>656 383 775 495 0 0 1440 878 </string>
+ <string>528 353 775 495 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>52pt</string>
+ <string>33pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>397pt</string>
+ <string>416pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {465, 370}}</string>
- <key>RubberWindowFrame</key>
- <string>656 383 775 495 0 0 1440 878 </string>
+ <string>{{10, 27}, {465, 389}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {465, 389}}</string>
+ <key>RubberWindowFrame</key>
+ <string>528 353 775 495 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -482,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E5742201BE1D700B5DC2A</string>
+ <string>8B792E8D21F43451006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E5743201BE1D700B5DC2A</string>
+ <string>8B792E8E21F43451006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B4E5744201BE1D700B5DC2A</string>
+ <string>8B792E8F21F43451006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538698199.879107</real>
+ <real>569652305.95869505</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -679,7 +677,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/PDBuss/PDBuss.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>656 383 775 495 0 0 1440 878 </string>
+ <string>528 353 775 495 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/PDChannel/PDChannel.cpp b/plugins/MacAU/PDChannel/PDChannel.cpp
index d0e684f..1571b15 100755
--- a/plugins/MacAU/PDChannel/PDChannel.cpp
+++ b/plugins/MacAU/PDChannel/PDChannel.cpp
@@ -170,9 +170,7 @@ void PDChannel::PDChannelKernel::Reset()
settingchase = -90.0;
chasespeed = 350.0;
previousSample = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -189,11 +187,7 @@ void PDChannel::PDChannelKernel::Process( const Float32 *inSourceP,
Float32 *destP = inDestP;
long double overallscale = 1.0;
overallscale /= 44100.0;
- overallscale *= GetSampleRate();
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ overallscale *= GetSampleRate();
Float64 inputgain = GetParameter( kParam_One );
Float64 intensity = GetParameter( kParam_Two );
Float64 apply;
@@ -271,19 +265,11 @@ void PDChannel::PDChannelKernel::Process( const Float32 *inSourceP,
previousSample = sin(drySample);
//apply the sine while storing previous sample
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/PDChannel/PDChannel.h b/plugins/MacAU/PDChannel/PDChannel.h
index 4a793af..523f789 100755
--- a/plugins/MacAU/PDChannel/PDChannel.h
+++ b/plugins/MacAU/PDChannel/PDChannel.h
@@ -132,9 +132,7 @@ public:
Float64 settingchase;
Float64 chasespeed;
Float64 previousSample;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser
index 6a15292..f328d19 100755
--- a/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538696889;
- PBXWorkspaceStateSaveDate = 538696889;
+ PBXPerProjectTemplateStateSaveDate = 569652339;
+ PBXWorkspaceStateSaveDate = 569652339;
};
perUserProjectItems = {
8B4E5745201BE1DA00B5DC2A /* PlistBookmark */ = 8B4E5745201BE1DA00B5DC2A /* PlistBookmark */;
- 8B4E5746201BE1DA00B5DC2A /* PBXBookmark */ = 8B4E5746201BE1DA00B5DC2A /* PBXBookmark */;
- 8B4E5747201BE1DA00B5DC2A /* PBXTextBookmark */ = 8B4E5747201BE1DA00B5DC2A /* PBXTextBookmark */;
+ 8B792E9E21F434CF006E9731 /* PBXTextBookmark */ = 8B792E9E21F434CF006E9731 /* PBXTextBookmark */;
+ 8B792EA321F434E3006E9731 /* PBXTextBookmark */ = 8B792EA321F434E3006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -71,28 +71,34 @@
);
name = /Users/christopherjohnson/Desktop/MacAU/PDChannel/Info.plist;
rLen = 0;
- rLoc = 9223372036854775807;
+ rLoc = 9223372036854775808;
};
- 8B4E5746201BE1DA00B5DC2A /* PBXBookmark */ = {
- isa = PBXBookmark;
+ 8B792E9E21F434CF006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* PDChannel.cpp */;
+ name = "PDChannel.cpp: 241";
+ rLen = 0;
+ rLoc = 10674;
+ rType = 0;
+ vrLen = 0;
+ vrLoc = 0;
};
- 8B4E5747201BE1DA00B5DC2A /* PBXTextBookmark */ = {
+ 8B792EA321F434E3006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* PDChannel.cpp */;
- name = "PDChannel.cpp: 247";
+ name = "PDChannel.cpp: 241";
rLen = 0;
- rLoc = 10826;
+ rLoc = 10674;
rType = 0;
vrLen = 0;
vrLoc = 0;
};
8BA05A660720730100365D66 /* PDChannel.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {670, 3952}}";
- sepNavSelRange = "{10826, 0}";
+ sepNavIntBoundsRect = "{{0, 0}, {328, 3796}}";
+ sepNavSelRange = "{10674, 0}";
sepNavVisRange = "{0, 0}";
- sepNavWindowFrame = "{{782, 50}, {923, 828}}";
+ sepNavWindowFrame = "{{342, 50}, {923, 828}}";
};
};
8BA05A690720730100365D66 /* PDChannelVersion.h */ = {
@@ -105,10 +111,10 @@
};
8BC6025B073B072D006C4272 /* PDChannel.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1872}}";
- sepNavSelRange = "{5191, 95}";
- sepNavVisRange = "{3760, 1692}";
- sepNavWindowFrame = "{{15, 45}, {923, 828}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1846}}";
+ sepNavSelRange = "{5309, 0}";
+ sepNavVisRange = "{3711, 1702}";
+ sepNavWindowFrame = "{{24, 47}, {923, 828}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3
index fd2188d..9a9368c 100755
--- a/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>841</integer>
- <integer>841</integer>
+ <integer>687</integer>
+ <integer>687</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -302,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>748 122 687 476 0 0 1440 878 </string>
+ <string>528 250 687 476 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -354,11 +352,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4E5747201BE1DA00B5DC2A</string>
+ <string>8B792EA321F434E3006E9731</string>
<key>history</key>
<array>
<string>8B4E5745201BE1DA00B5DC2A</string>
- <string>8B4E5746201BE1DA00B5DC2A</string>
+ <string>8B792E9E21F434CF006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {377, 32}}</string>
+ <string>{{0, 0}, {377, 13}}</string>
<key>RubberWindowFrame</key>
- <string>748 122 687 476 0 0 1440 878 </string>
+ <string>528 250 687 476 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>32pt</string>
+ <string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>398pt</string>
+ <string>417pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {377, 371}}</string>
- <key>RubberWindowFrame</key>
- <string>748 122 687 476 0 0 1440 878 </string>
+ <string>{{10, 27}, {377, 390}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {377, 390}}</string>
+ <key>RubberWindowFrame</key>
+ <string>528 250 687 476 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -481,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E5748201BE1DA00B5DC2A</string>
+ <string>8B792EA421F434E3006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E5749201BE1DA00B5DC2A</string>
+ <string>8B792EA521F434E3006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B4E574A201BE1DA00B5DC2A</string>
+ <string>8B792EA621F434E3006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538698202.06812799</real>
+ <real>569652451.32998204</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -678,7 +676,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/PDChannel/PDChannel.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>748 122 687 476 0 0 1440 878 </string>
+ <string>528 250 687 476 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.pbxuser
index c6caac2..89f6a9a 100755
--- a/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528457375;
- PBXWorkspaceStateSaveDate = 528457375;
+ PBXPerProjectTemplateStateSaveDate = 569456916;
+ PBXWorkspaceStateSaveDate = 569456916;
};
perUserProjectItems = {
8B4FD0361DF97CA300999740 /* PBXTextBookmark */ = 8B4FD0361DF97CA300999740 /* PBXTextBookmark */;
- 8B9D66051F7C8B97007AB60F /* PBXTextBookmark */ = 8B9D66051F7C8B97007AB60F /* PBXTextBookmark */;
- 8B9D75481F7F9EDB007AB60F /* PBXTextBookmark */ = 8B9D75481F7F9EDB007AB60F /* PBXTextBookmark */;
+ 8B79248021F14291006E9731 /* PBXTextBookmark */ = 8B79248021F14291006E9731 /* PBXTextBookmark */;
+ 8B79248121F14291006E9731 /* PBXTextBookmark */ = 8B79248121F14291006E9731 /* PBXTextBookmark */;
8BD8CADF1DF8EA3400CC3427 /* PlistBookmark */ = 8BD8CADF1DF8EA3400CC3427 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
@@ -72,32 +72,32 @@
vrLen = 418;
vrLoc = 4668;
};
- 8B9D66051F7C8B97007AB60F /* PBXTextBookmark */ = {
+ 8B79248021F14291006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* PaulDither.cpp */;
- name = "PaulDither.cpp: 165";
- rLen = 2403;
- rLoc = 7419;
+ name = "PaulDither.cpp: 199";
+ rLen = 0;
+ rLoc = 8989;
rType = 0;
- vrLen = 364;
- vrLoc = 7419;
+ vrLen = 310;
+ vrLoc = 7499;
};
- 8B9D75481F7F9EDB007AB60F /* PBXTextBookmark */ = {
+ 8B79248121F14291006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* PaulDither.cpp */;
name = "PaulDither.cpp: 199";
rLen = 0;
rLoc = 8989;
rType = 0;
- vrLen = 390;
- vrLoc = 7419;
+ vrLen = 310;
+ vrLoc = 7499;
};
8BA05A660720730100365D66 /* PaulDither.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 2990}}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 2938}}";
sepNavSelRange = "{8989, 0}";
- sepNavVisRange = "{7419, 390}";
- sepNavWindowFrame = "{{741, 43}, {679, 835}}";
+ sepNavVisRange = "{7499, 310}";
+ sepNavWindowFrame = "{{694, 43}, {679, 835}}";
};
};
8BA05A690720730100365D66 /* PaulDitherVersion.h */ = {
@@ -110,10 +110,10 @@
};
8BC6025B073B072D006C4272 /* PaulDither.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1859}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1703}}";
sepNavSelRange = "{4959, 26}";
- sepNavVisRange = "{4668, 418}";
- sepNavWindowFrame = "{{677, 43}, {679, 835}}";
+ sepNavVisRange = "{3360, 1734}";
+ sepNavWindowFrame = "{{26, 43}, {679, 835}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.perspectivev3
index cabf404..fb63b78 100755
--- a/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/PaulDither/PaulDither.xcodeproj/christopherjohnson.perspectivev3
@@ -325,7 +325,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 185 841 654 0 0 1440 878 </string>
+ <string>584 182 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,12 +353,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D75481F7F9EDB007AB60F</string>
+ <string>8B79248121F14291006E9731</string>
<key>history</key>
<array>
<string>8BD8CADF1DF8EA3400CC3427</string>
<string>8B4FD0361DF97CA300999740</string>
- <string>8B9D66051F7C8B97007AB60F</string>
+ <string>8B79248021F14291006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +372,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 188}}</string>
+ <string>{{0, 0}, {531, 158}}</string>
<key>RubberWindowFrame</key>
- <string>599 185 841 654 0 0 1440 878 </string>
+ <string>584 182 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>188pt</string>
+ <string>158pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>420pt</string>
+ <string>450pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +397,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 393}}</string>
+ <string>{{10, 27}, {531, 423}}</string>
<key>RubberWindowFrame</key>
- <string>599 185 841 654 0 0 1440 878 </string>
+ <string>584 182 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -481,11 +481,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D75491F7F9EDB007AB60F</string>
+ <string>8B79248221F14291006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D754A1F7F9EDB007AB60F</string>
+ <string>8B79248321F14291006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D754B1F7F9EDB007AB60F</string>
+ <string>8B79248421F14291006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +658,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528457435.53434801</real>
+ <real>569459345.52308798</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,11 +675,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D754C1F7F9EDB007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/PaulDither/PaulDither.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 185 841 654 0 0 1440 878 </string>
+ <string>584 182 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/PhaseNudge/PhaseNudge.cpp b/plugins/MacAU/PhaseNudge/PhaseNudge.cpp
index a60dc04..abb05e1 100755
--- a/plugins/MacAU/PhaseNudge/PhaseNudge.cpp
+++ b/plugins/MacAU/PhaseNudge/PhaseNudge.cpp
@@ -168,9 +168,7 @@ void PhaseNudge::PhaseNudgeKernel::Reset()
{
for(int count = 0; count < 1502; count++) {d[count] = 0.0;}
one = 1; maxdelay = 9001;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
//coded to snap directly to the value on instantiation if the disparity is great enough
}
@@ -186,9 +184,6 @@ void PhaseNudge::PhaseNudgeKernel::Process( const Float32 *inSourceP,
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
int allpasstemp;
Float64 outallpass = 0.618033988749894848204586; //golden ratio!
@@ -256,24 +251,13 @@ void PhaseNudge::PhaseNudgeKernel::Process( const Float32 *inSourceP,
if (inputSample > 0) inputSample -= bridgerectifier;
else inputSample += bridgerectifier;
inputSample *= 4.0;
-
-
if (wet < 1.0) inputSample = (drySample * dry)+(inputSample * wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
-
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/PhaseNudge/PhaseNudge.exp b/plugins/MacAU/PhaseNudge/PhaseNudge.exp
index 6c86d46..a53e4f6 100755
--- a/plugins/MacAU/PhaseNudge/PhaseNudge.exp
+++ b/plugins/MacAU/PhaseNudge/PhaseNudge.exp
@@ -1 +1 @@
-_PhaseNudgeEntry \ No newline at end of file
+_PhaseNudgeEntry
diff --git a/plugins/MacAU/PhaseNudge/PhaseNudge.h b/plugins/MacAU/PhaseNudge/PhaseNudge.h
index a82a450..fa655e8 100755
--- a/plugins/MacAU/PhaseNudge/PhaseNudge.h
+++ b/plugins/MacAU/PhaseNudge/PhaseNudge.h
@@ -130,9 +130,7 @@ public:
private:
Float64 d[1503];
int one, maxdelay;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser
index 31eaa35..90714a5 100755
--- a/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528457445;
- PBXWorkspaceStateSaveDate = 528457445;
+ PBXPerProjectTemplateStateSaveDate = 569674908;
+ PBXWorkspaceStateSaveDate = 569674908;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -58,10 +58,18 @@
};
8BA05A660720730100365D66 /* PhaseNudge.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {787, 3731}}";
- sepNavSelRange = "{9350, 0}";
- sepNavVisRange = "{9041, 2185}";
- sepNavWindowFrame = "{{594, 72}, {834, 801}}";
+ sepNavIntBoundsRect = "{{0, 0}, {787, 3562}}";
+ sepNavSelRange = "{8646, 0}";
+ sepNavVisRange = "{7424, 2420}";
+ sepNavWindowFrame = "{{467, 77}, {834, 801}}";
+ };
+ };
+ 8BA05A670720730100365D66 /* PhaseNudge.exp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}";
+ sepNavSelRange = "{17, 0}";
+ sepNavVisRange = "{0, 17}";
+ sepNavWindowFrame = "{{15, 51}, {1300, 822}}";
};
};
8BA05A690720730100365D66 /* PhaseNudgeVersion.h */ = {
@@ -74,10 +82,10 @@
};
8BC6025B073B072D006C4272 /* PhaseNudge.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 1794}}";
- sepNavSelRange = "{5126, 97}";
- sepNavVisRange = "{2715, 1561}";
- sepNavWindowFrame = "{{653, 65}, {787, 813}}";
+ sepNavIntBoundsRect = "{{0, 0}, {824, 1768}}";
+ sepNavSelRange = "{5179, 0}";
+ sepNavVisRange = "{3774, 1525}";
+ sepNavWindowFrame = "{{436, 61}, {787, 813}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3
index 72f64ac..14864b4 100755
--- a/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>5</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>614 298 810 487 0 0 1440 878 </string>
+ <string>500 313 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -363,7 +363,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>614 298 810 487 0 0 1440 878 </string>
+ <string>500 313 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -387,8 +387,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>614 298 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -442,7 +440,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>500 313 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -470,11 +470,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D75591F7F9F0E007AB60F</string>
+ <string>8B792EBE21F48D58006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D755A1F7F9F0E007AB60F</string>
+ <string>8B792EBF21F48D58006E9731</string>
<string>8B45D5A31DB6A0F4001A01DF</string>
- <string>8B9D755B1F7F9F0E007AB60F</string>
+ <string>8B792EC021F48D58006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -627,7 +627,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528457486.34265399</real>
+ <real>569675096.38173199</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -644,11 +644,12 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D755C1F7F9F0E007AB60F</string>
+ <string>8B792EC121F48D58006E9731</string>
+ <string>8B792EC221F48D58006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/PhaseNudge/PhaseNudge.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>614 298 810 487 0 0 1440 878 </string>
+ <string>500 313 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Point/Poynt.cpp b/plugins/MacAU/Point/Poynt.cpp
index fb51374..b8b7030 100755
--- a/plugins/MacAU/Point/Poynt.cpp
+++ b/plugins/MacAU/Point/Poynt.cpp
@@ -178,8 +178,7 @@ void Poynt::PoyntKernel::Reset()
nobA = 0.0;
nibB = 0.0;
nobB = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
+ fpNShape = 0.0;
fpFlip = true;
}
@@ -216,11 +215,6 @@ void Poynt::PoyntKernel::Process( const Float32 *inSourceP,
Float64 nibnobFactor = 0.0; //start with the fallthrough value, why not
long double inputSample;
Float64 absolute;
-
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
-
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -278,20 +272,13 @@ void Poynt::PoyntKernel::Process( const Float32 *inSourceP,
}
inputSample *= nibnobFactor;
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
destP += inNumChannels;
diff --git a/plugins/MacAU/Point/Poynt.h b/plugins/MacAU/Point/Poynt.h
index 90960cc..7d084e6 100755
--- a/plugins/MacAU/Point/Poynt.h
+++ b/plugins/MacAU/Point/Poynt.h
@@ -135,8 +135,7 @@ public:
Float64 nobA;
Float64 nibB;
Float64 nobB;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
+ Float64 fpNShape;
bool fpFlip;
};
};
diff --git a/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.pbxuser
index 97764af..641426b 100755
--- a/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528457500;
- PBXWorkspaceStateSaveDate = 528457500;
+ PBXPerProjectTemplateStateSaveDate = 569675140;
+ PBXWorkspaceStateSaveDate = 569675140;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -58,10 +58,10 @@
};
8BA05A660720730100365D66 /* Poynt.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {964, 4030}}";
- sepNavSelRange = "{9867, 0}";
- sepNavVisRange = "{9697, 1988}";
- sepNavWindowFrame = "{{690, 43}, {731, 835}}";
+ sepNavIntBoundsRect = "{{0, 0}, {964, 3835}}";
+ sepNavSelRange = "{11923, 0}";
+ sepNavVisRange = "{6811, 2218}";
+ sepNavWindowFrame = "{{510, 43}, {731, 835}}";
};
};
8BA05A670720730100365D66 /* Poynt.exp */ = {
@@ -82,10 +82,10 @@
};
8BC6025B073B072D006C4272 /* Poynt.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {901, 1911}}";
- sepNavSelRange = "{5143, 64}";
- sepNavVisRange = "{2585, 1500}";
- sepNavWindowFrame = "{{804, -16}, {948, 825}}";
+ sepNavIntBoundsRect = "{{0, 0}, {901, 1885}}";
+ sepNavSelRange = "{5225, 0}";
+ sepNavVisRange = "{3973, 1378}";
+ sepNavWindowFrame = "{{492, 39}, {948, 825}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.perspectivev3
index 35ec906..354b0d9 100755
--- a/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Point/Poynt.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 350 810 487 0 0 1440 878 </string>
+ <string>475 347 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -363,7 +361,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>630 350 810 487 0 0 1440 878 </string>
+ <string>475 347 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -387,8 +385,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>630 350 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -443,6 +439,8 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>475 347 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -470,11 +468,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D75671F7F9F29007AB60F</string>
+ <string>8B792ED421F48E58006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D75681F7F9F29007AB60F</string>
+ <string>8B792ED521F48E58006E9731</string>
<string>8BC521841DB3E58C00E72CD6</string>
- <string>8B9D75691F7F9F29007AB60F</string>
+ <string>8B792ED621F48E58006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -627,7 +625,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528457513.38457698</real>
+ <real>569675352.26750898</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -644,11 +642,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D756A1F7F9F29007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Point/Poynt.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 350 810 487 0 0 1440 878 </string>
+ <string>475 347 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Pop/Pop.cpp b/plugins/MacAU/Pop/Pop.cpp
index 62acd34..d1e96e1 100755
--- a/plugins/MacAU/Pop/Pop.cpp
+++ b/plugins/MacAU/Pop/Pop.cpp
@@ -341,23 +341,16 @@ void Pop::PopKernel::Process( const Float32 *inSourceP,
flip = !flip;
if (output < 1.0) inputSample *= output;
- if (wet<1.0) inputSample = (drySample*(1.0-wet))+(inputSample*wet);
+ if (wet < 1.0) inputSample = (drySample*(1.0-wet))+(inputSample*wet);
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
+
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.pbxuser
index b860d50..482d742 100755
--- a/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 557537811;
- PBXWorkspaceStateSaveDate = 557537811;
+ PBXPerProjectTemplateStateSaveDate = 569675407;
+ PBXWorkspaceStateSaveDate = 569675407;
};
perUserProjectItems = {
8B6DBAB1213B5E6A00E44739 /* PBXTextBookmark */ = 8B6DBAB1213B5E6A00E44739 /* PBXTextBookmark */;
8B6DBAB2213B5E6A00E44739 /* PBXTextBookmark */ = 8B6DBAB2213B5E6A00E44739 /* PBXTextBookmark */;
- 8B6DBAB3213B5E6A00E44739 /* PBXTextBookmark */ = 8B6DBAB3213B5E6A00E44739 /* PBXTextBookmark */;
- 8B6DBAB5213B5E6A00E44739 /* PBXTextBookmark */ = 8B6DBAB5213B5E6A00E44739 /* PBXTextBookmark */;
+ 8B792EE421F48F26006E9731 /* PBXTextBookmark */ = 8B792EE421F48F26006E9731 /* PBXTextBookmark */;
+ 8B792EE921F48F73006E9731 /* PBXTextBookmark */ = 8B792EE921F48F73006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -82,34 +82,39 @@
vrLen = 133;
vrLoc = 5301;
};
- 8B6DBAB3213B5E6A00E44739 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8B6DBAB4213B5E6A00E44739 /* VariMuProc.cpp */;
- name = "VariMuProc.cpp: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 188;
- vrLoc = 0;
- };
- 8B6DBAB4213B5E6A00E44739 /* VariMuProc.cpp */ = {
+ 8B6DBAB6213B5E6A00E44739 /* VariMuProc.cpp */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.cpp.cpp;
name = VariMuProc.cpp;
path = /Users/christopherjohnson/Desktop/MacVST/VariMu/source/VariMuProc.cpp;
sourceTree = "<absolute>";
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {554, 6708}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRange = "{0, 169}";
+ };
};
- 8B6DBAB5213B5E6A00E44739 /* PBXTextBookmark */ = {
+ 8B792EE421F48F26006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8B6DBAB6213B5E6A00E44739 /* VariMuProc.cpp */;
name = "VariMuProc.cpp: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 188;
+ vrLen = 169;
vrLoc = 0;
};
- 8B6DBAB6213B5E6A00E44739 /* VariMuProc.cpp */ = {
+ 8B792EE921F48F73006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8B792EEA21F48F73006E9731 /* VariMuProc.cpp */;
+ name = "VariMuProc.cpp: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 169;
+ vrLoc = 0;
+ };
+ 8B792EEA21F48F73006E9731 /* VariMuProc.cpp */ = {
isa = PBXFileReference;
name = VariMuProc.cpp;
path = /Users/christopherjohnson/Desktop/MacVST/VariMu/source/VariMuProc.cpp;
@@ -117,15 +122,15 @@
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {554, 6708}}";
sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 188}";
+ sepNavVisRange = "{0, 169}";
};
};
8BA05A660720730100365D66 /* Pop.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1098, 4953}}";
- sepNavSelRange = "{10564, 3718}";
- sepNavVisRange = "{12637, 2394}";
- sepNavWindowFrame = "{{570, 66}, {1145, 812}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1098, 4758}}";
+ sepNavSelRange = "{14221, 0}";
+ sepNavVisRange = "{12566, 2051}";
+ sepNavWindowFrame = "{{205, 66}, {1145, 812}}";
};
};
8BA05A670720730100365D66 /* Pop.exp */ = {
@@ -146,10 +151,10 @@
};
8BC6025B073B072D006C4272 /* Pop.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {810, 2288}}";
+ sepNavIntBoundsRect = "{{0, 0}, {824, 2028}}";
sepNavSelRange = "{5470, 0}";
- sepNavVisRange = "{5301, 133}";
- sepNavWindowFrame = "{{691, 65}, {787, 813}}";
+ sepNavVisRange = "{4265, 1315}";
+ sepNavWindowFrame = "{{444, 65}, {787, 813}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3
index 117e75b..3f71234 100755
--- a/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3
@@ -298,7 +298,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -322,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>584 391 810 487 0 0 1440 878 </string>
+ <string>490 387 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -333,8 +333,6 @@
<key>Dock</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -352,12 +350,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B6DBAB5213B5E6A00E44739</string>
+ <string>8B792EE921F48F73006E9731</string>
<key>history</key>
<array>
<string>8B6DBAB1213B5E6A00E44739</string>
<string>8B6DBAB2213B5E6A00E44739</string>
- <string>8B6DBAB3213B5E6A00E44739</string>
+ <string>8B792EE421F48F26006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 102}}</string>
+ <string>{{0, 0}, {603, 86}}</string>
<key>RubberWindowFrame</key>
- <string>584 391 810 487 0 0 1440 878 </string>
+ <string>490 387 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>102pt</string>
+ <string>86pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>355pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 312}}</string>
- <key>RubberWindowFrame</key>
- <string>584 391 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 328}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 328}}</string>
+ <key>RubberWindowFrame</key>
+ <string>490 387 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B6DBAB7213B5E6A00E44739</string>
+ <string>8B792EEB21F48F73006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B6DBAB8213B5E6A00E44739</string>
+ <string>8B792EEC21F48F73006E9731</string>
<string>8BFDB0BC213A19540079F90D</string>
- <string>8B6DBAB9213B5E6A00E44739</string>
+ <string>8B792EED21F48F73006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -637,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>557538922.04973304</real>
+ <real>569675635.69867206</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -657,7 +655,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Pop/Pop.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>584 391 810 487 0 0 1440 878 </string>
+ <string>490 387 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/PowerSag/PowerSag.cpp b/plugins/MacAU/PowerSag/PowerSag.cpp
index 8bd8b1e..95f70d2 100755
--- a/plugins/MacAU/PowerSag/PowerSag.cpp
+++ b/plugins/MacAU/PowerSag/PowerSag.cpp
@@ -169,9 +169,7 @@ void PowerSag::PowerSagKernel::Reset()
for(int count = 0; count < 8999; count++) {d[count] = 0;}
control = 0;
gcount = 0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -193,11 +191,6 @@ void PowerSag::PowerSagKernel::Process( const Float32 *inSourceP,
Float64 thickness;
Float64 out;
Float64 bridgerectifier;
-
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
long double inputSample;
while (nSampleFrames-- > 0) {
@@ -256,20 +249,11 @@ void PowerSag::PowerSagKernel::Process( const Float32 *inSourceP,
inputSample *= clamp;
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/PowerSag/PowerSag.h b/plugins/MacAU/PowerSag/PowerSag.h
index c55bc36..ef594dc 100755
--- a/plugins/MacAU/PowerSag/PowerSag.h
+++ b/plugins/MacAU/PowerSag/PowerSag.h
@@ -131,10 +131,7 @@ public:
Float64 d[9000];
Float64 control;
int gcount;
-
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser
index 604cc41..e6e7e63 100755
--- a/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser
@@ -49,44 +49,44 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528457549;
- PBXWorkspaceStateSaveDate = 528457549;
+ PBXPerProjectTemplateStateSaveDate = 569675661;
+ PBXWorkspaceStateSaveDate = 569675661;
};
perUserProjectItems = {
- 8B9D66491F7C8C32007AB60F /* PBXTextBookmark */ = 8B9D66491F7C8C32007AB60F /* PBXTextBookmark */;
- 8B9D75751F7F9F5D007AB60F /* PBXTextBookmark */ = 8B9D75751F7F9F5D007AB60F /* PBXTextBookmark */;
+ 8B792EFB21F4905E006E9731 /* PBXTextBookmark */ = 8B792EFB21F4905E006E9731 /* PBXTextBookmark */;
+ 8B792F0021F49091006E9731 /* PBXTextBookmark */ = 8B792F0021F49091006E9731 /* PBXTextBookmark */;
8BB300131EE206710016C2D8 /* PlistBookmark */ = 8BB300131EE206710016C2D8 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D66491F7C8C32007AB60F /* PBXTextBookmark */ = {
+ 8B792EFB21F4905E006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* PowerSag.cpp */;
- name = "PowerSag.cpp: 188";
+ name = "PowerSag.cpp: 186";
rLen = 0;
- rLoc = 8459;
+ rLoc = 8424;
rType = 0;
- vrLen = 573;
- vrLoc = 8121;
+ vrLen = 439;
+ vrLoc = 8244;
};
- 8B9D75751F7F9F5D007AB60F /* PBXTextBookmark */ = {
+ 8B792F0021F49091006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* PowerSag.cpp */;
- name = "PowerSag.cpp: 188";
+ name = "PowerSag.cpp: 186";
rLen = 0;
- rLoc = 8459;
+ rLoc = 8424;
rType = 0;
- vrLen = 571;
- vrLoc = 8121;
+ vrLen = 439;
+ vrLoc = 8244;
};
8BA05A660720730100365D66 /* PowerSag.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {656, 3744}}";
- sepNavSelRange = "{8459, 0}";
- sepNavVisRange = "{8121, 571}";
- sepNavWindowFrame = "{{746, 43}, {679, 835}}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 3562}}";
+ sepNavSelRange = "{8424, 0}";
+ sepNavVisRange = "{8244, 439}";
+ sepNavWindowFrame = "{{625, 43}, {679, 835}}";
};
};
8BA05A690720730100365D66 /* PowerSagVersion.h */ = {
@@ -111,10 +111,10 @@
};
8BC6025B073B072D006C4272 /* PowerSag.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1872}}";
- sepNavSelRange = "{5175, 52}";
- sepNavVisRange = "{3808, 1596}";
- sepNavWindowFrame = "{{761, 43}, {679, 835}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1833}}";
+ sepNavSelRange = "{5226, 0}";
+ sepNavVisRange = "{3698, 1662}";
+ sepNavWindowFrame = "{{126, 32}, {679, 835}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3
index b64b182..c90dcdd 100755
--- a/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -325,7 +323,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 187 841 654 0 0 1440 878 </string>
+ <string>422 210 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D75751F7F9F5D007AB60F</string>
+ <string>8B792F0021F49091006E9731</string>
<key>history</key>
<array>
<string>8BB300131EE206710016C2D8</string>
- <string>8B9D66491F7C8C32007AB60F</string>
+ <string>8B792EFB21F4905E006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 202}}</string>
+ <string>{{0, 0}, {531, 188}}</string>
<key>RubberWindowFrame</key>
- <string>599 187 841 654 0 0 1440 878 </string>
+ <string>422 210 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>202pt</string>
+ <string>188pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>406pt</string>
+ <string>420pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 379}}</string>
- <key>RubberWindowFrame</key>
- <string>599 187 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 393}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {531, 393}}</string>
+ <key>RubberWindowFrame</key>
+ <string>422 210 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D75761F7F9F5D007AB60F</string>
+ <string>8B792F0121F49091006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D75771F7F9F5D007AB60F</string>
+ <string>8B792F0221F49091006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D75781F7F9F5D007AB60F</string>
+ <string>8B792F0321F49091006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +655,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528457565.97925901</real>
+ <real>569675921.48933697</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,11 +672,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D75791F7F9F5D007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/PowerSag/PowerSag.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 187 841 654 0 0 1440 878 </string>
+ <string>422 210 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Pressure4/Pressure4.cpp b/plugins/MacAU/Pressure4/Pressure4.cpp
index 4780f45..9fbbe85 100755
--- a/plugins/MacAU/Pressure4/Pressure4.cpp
+++ b/plugins/MacAU/Pressure4/Pressure4.cpp
@@ -198,10 +198,8 @@ ComponentResult Pressure4::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Pressure4::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
muSpeedA = 10000;
muSpeedB = 10000;
muCoefficientA = 1;
@@ -257,9 +255,6 @@ OSStatus Pressure4::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
unmewiness = 1.0-mewiness;
}
// µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -407,27 +402,16 @@ OSStatus Pressure4::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
else {inputSampleR = -bridgerectifier;}
//second stage of overdrive to prevent overs and allow bloody loud extremeness
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
flip = !flip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacAU/Pressure4/Pressure4.h b/plugins/MacAU/Pressure4/Pressure4.h
index a6926ee..6534c46 100755
--- a/plugins/MacAU/Pressure4/Pressure4.h
+++ b/plugins/MacAU/Pressure4/Pressure4.h
@@ -125,10 +125,8 @@ public:
Float64 muSpeedB;
Float64 muCoefficientA;
Float64 muCoefficientB;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
};
diff --git a/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser
index 99a6c24..3758f60 100755
--- a/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553809064;
- PBXWorkspaceStateSaveDate = 553809064;
+ PBXPerProjectTemplateStateSaveDate = 569677045;
+ PBXWorkspaceStateSaveDate = 569677045;
};
perUserProjectItems = {
- 8B050BBA2064897B00700365 /* PBXTextBookmark */ = 8B050BBA2064897B00700365 /* PBXTextBookmark */;
- 8B8D6983207ABA4C0029B7B0 /* PBXTextBookmark */ = 8B8D6983207ABA4C0029B7B0 /* PBXTextBookmark */;
- 8BB8B6702102844E00751000 /* PBXTextBookmark */ = 8BB8B6702102844E00751000 /* PBXTextBookmark */;
+ 8B792F5421F495A9006E9731 /* PBXTextBookmark */ = 8B792F5421F495A9006E9731 /* PBXTextBookmark */;
+ 8B792F5521F495A9006E9731 /* PBXTextBookmark */ = 8B792F5521F495A9006E9731 /* PBXTextBookmark */;
+ 8B792F5621F495A9006E9731 /* PBXTextBookmark */ = 8B792F5621F495A9006E9731 /* PBXTextBookmark */;
8BEF33C81D81F6D7008B0B7F /* PlistBookmark */ = 8BEF33C81D81F6D7008B0B7F /* PlistBookmark */;
8BEF33C91D81F6D7008B0B7F /* PBXTextBookmark */ = 8BEF33C91D81F6D7008B0B7F /* PBXTextBookmark */;
};
@@ -63,31 +63,41 @@
userBuildSettings = {
};
};
- 8B050BBA2064897B00700365 /* PBXTextBookmark */ = {
+ 8B792F5421F495A9006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Pressure4.h */;
- name = "Pressure4.h: 128";
- rLen = 117;
- rLoc = 5265;
+ name = "Pressure4.h: 129";
+ rLen = 0;
+ rLoc = 5292;
+ rType = 0;
+ vrLen = 1148;
+ vrLoc = 4280;
+ };
+ 8B792F5521F495A9006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Pressure4.cpp */;
+ name = "Pressure4.cpp: 201";
+ rLen = 0;
+ rLoc = 8945;
rType = 0;
- vrLen = 1019;
- vrLoc = 4469;
+ vrLen = 1378;
+ vrLoc = 15227;
};
- 8B8D6983207ABA4C0029B7B0 /* PBXTextBookmark */ = {
+ 8B792F5621F495A9006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Pressure4.cpp */;
- name = "Pressure4.cpp: 210";
+ name = "Pressure4.cpp: 202";
rLen = 0;
- rLoc = 9108;
+ rLoc = 8956;
rType = 0;
- vrLen = 1508;
- vrLoc = 8385;
+ vrLen = 1347;
+ vrLoc = 15277;
};
8BA05A660720730100365D66 /* Pressure4.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {693, 6006}}";
- sepNavSelRange = "{9108, 0}";
- sepNavVisRange = "{12471, 1500}";
+ sepNavIntBoundsRect = "{{0, 0}, {754, 5876}}";
+ sepNavSelRange = "{8956, 0}";
+ sepNavVisRange = "{15277, 1347}";
sepNavWindowFrame = "{{479, 48}, {895, 819}}";
};
};
@@ -99,21 +109,11 @@
sepNavWindowFrame = "{{15, 54}, {895, 819}}";
};
};
- 8BB8B6702102844E00751000 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Pressure4.cpp */;
- name = "Pressure4.cpp: 210";
- rLen = 0;
- rLoc = 9108;
- rType = 0;
- vrLen = 1500;
- vrLoc = 12471;
- };
8BC6025B073B072D006C4272 /* Pressure4.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1807}}";
- sepNavSelRange = "{5265, 117}";
- sepNavVisRange = "{3662, 1826}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1976}}";
+ sepNavSelRange = "{5292, 0}";
+ sepNavVisRange = "{4280, 1148}";
sepNavWindowFrame = "{{28, 51}, {895, 819}}";
};
};
diff --git a/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3
index 6e47c82..e9da12e 100755
--- a/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>841</integer>
- <integer>841</integer>
+ <integer>1052</integer>
+ <integer>1052</integer>
</array>
<key>Perspectives</key>
<array>
@@ -299,7 +299,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>3</integer>
+ <integer>4</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -323,7 +323,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>526 89 1052 789 0 0 1440 878 </string>
+ <string>259 89 1052 789 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,13 +353,13 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BB8B6702102844E00751000</string>
+ <string>8B792F5621F495A9006E9731</string>
<key>history</key>
<array>
<string>8BEF33C81D81F6D7008B0B7F</string>
<string>8BEF33C91D81F6D7008B0B7F</string>
- <string>8B050BBA2064897B00700365</string>
- <string>8B8D6983207ABA4C0029B7B0</string>
+ <string>8B792F5421F495A9006E9731</string>
+ <string>8B792F5521F495A9006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +373,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {742, 617}}</string>
+ <string>{{0, 0}, {742, 515}}</string>
<key>RubberWindowFrame</key>
- <string>526 89 1052 789 0 0 1440 878 </string>
+ <string>259 89 1052 789 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>617pt</string>
+ <string>515pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>126pt</string>
+ <string>228pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +398,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {742, 99}}</string>
- <key>RubberWindowFrame</key>
- <string>526 89 1052 789 0 0 1440 878 </string>
+ <string>{{10, 27}, {742, 201}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +452,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 327}}</string>
+ <string>{{10, 27}, {742, 201}}</string>
+ <key>RubberWindowFrame</key>
+ <string>259 89 1052 789 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -482,11 +482,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BB8B6712102844E00751000</string>
+ <string>8B792F5721F495A9006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BB8B6722102844E00751000</string>
+ <string>8B792F5821F495A9006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BB8B6732102844E00751000</string>
+ <string>8B792F5921F495A9006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +659,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553813070.00637698</real>
+ <real>569677225.40901196</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -679,7 +679,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Pressure4/Pressure4.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>526 89 1052 789 0 0 1440 878 </string>
+ <string>259 89 1052 789 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Pressure4Mono/Pressure4Mono.cpp b/plugins/MacAU/Pressure4Mono/Pressure4Mono.cpp
index c46cdcb..90991bc 100755
--- a/plugins/MacAU/Pressure4Mono/Pressure4Mono.cpp
+++ b/plugins/MacAU/Pressure4Mono/Pressure4Mono.cpp
@@ -182,8 +182,7 @@ ComponentResult Pressure4Mono::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Pressure4Mono::Pressure4MonoKernel::Reset()
{
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
+ fpNShape = 0.0;
muSpeedA = 10000;
muSpeedB = 10000;
muCoefficientA = 1;
@@ -232,9 +231,6 @@ void Pressure4Mono::Pressure4MonoKernel::Process( const Float32 *inSourceP,
unmewiness = 1.0-mewiness;
}
// µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
long double inputSample;
while (nSampleFrames-- > 0) {
@@ -351,20 +347,14 @@ void Pressure4Mono::Pressure4MonoKernel::Process( const Float32 *inSourceP,
if (inputSample > 0){inputSample = bridgerectifier;}
else {inputSample = -bridgerectifier;}
//second stage of overdrive to prevent overs and allow bloody loud extremeness
-
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
flip = !flip;
- //end noise shaping on 32 bit output
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
+
*destP = inputSample;
destP += inNumChannels;
}
diff --git a/plugins/MacAU/Pressure4Mono/Pressure4Mono.h b/plugins/MacAU/Pressure4Mono/Pressure4Mono.h
index e88dbac..6c4b3df 100755
--- a/plugins/MacAU/Pressure4Mono/Pressure4Mono.h
+++ b/plugins/MacAU/Pressure4Mono/Pressure4Mono.h
@@ -141,8 +141,7 @@ public:
Float64 muSpeedB;
Float64 muCoefficientA;
Float64 muCoefficientB;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
+ long double fpNShape;
bool flip;
};
diff --git a/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.pbxuser
index db6a4e5..28eee56 100755
--- a/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 389,
20,
48,
43,
@@ -49,44 +49,54 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553813081;
- PBXWorkspaceStateSaveDate = 553813081;
+ PBXPerProjectTemplateStateSaveDate = 569677251;
+ PBXWorkspaceStateSaveDate = 569677251;
};
perUserProjectItems = {
- 8B2E03F31D837F81001B9E01 /* PBXTextBookmark */ = 8B2E03F31D837F81001B9E01 /* PBXTextBookmark */;
- 8B9D75931F7F9FAE007AB60F /* PBXTextBookmark */ = 8B9D75931F7F9FAE007AB60F /* PBXTextBookmark */;
- 8BB8B69021028B4200751000 /* PBXTextBookmark */ = 8BB8B69021028B4200751000 /* PBXTextBookmark */;
+ 8B792F6521F495EA006E9731 /* PBXTextBookmark */ = 8B792F6521F495EA006E9731 /* PBXTextBookmark */;
+ 8B792F6621F495EA006E9731 /* PBXTextBookmark */ = 8B792F6621F495EA006E9731 /* PBXTextBookmark */;
+ 8B792F6721F495EA006E9731 /* PBXTextBookmark */ = 8B792F6721F495EA006E9731 /* PBXTextBookmark */;
8BEF332D1D81E168008B0B7F /* PlistBookmark */ = 8BEF332D1D81E168008B0B7F /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B2E03F31D837F81001B9E01 /* PBXTextBookmark */ = {
+ 8B792F6521F495EA006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Pressure4Mono.h */;
- name = "Pressure4Mono.h: 67";
+ name = "Pressure4Mono.h: 144";
rLen = 0;
- rLoc = 3269;
+ rLoc = 5594;
rType = 0;
- vrLen = 563;
- vrLoc = 2781;
+ vrLen = 452;
+ vrLoc = 5278;
};
- 8B9D75931F7F9FAE007AB60F /* PBXTextBookmark */ = {
+ 8B792F6621F495EA006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Pressure4Mono.cpp */;
- name = "Pressure4Mono.cpp: 201";
+ name = "Pressure4Mono.cpp: 358";
rLen = 0;
- rLoc = 9254;
+ rLoc = 14617;
rType = 0;
- vrLen = 662;
- vrLoc = 8746;
+ vrLen = 887;
+ vrLoc = 13781;
+ };
+ 8B792F6721F495EA006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Pressure4Mono.cpp */;
+ name = "Pressure4Mono.cpp: 358";
+ rLen = 0;
+ rLoc = 14617;
+ rType = 0;
+ vrLen = 814;
+ vrLoc = 13855;
};
8BA05A660720730100365D66 /* Pressure4Mono.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {656, 4914}}";
- sepNavSelRange = "{9254, 0}";
- sepNavVisRange = "{8748, 660}";
+ sepNavIntBoundsRect = "{{0, 0}, {817, 4940}}";
+ sepNavSelRange = "{14617, 0}";
+ sepNavVisRange = "{13855, 814}";
sepNavWindowFrame = "{{687, 59}, {895, 819}}";
};
};
@@ -98,21 +108,11 @@
sepNavWindowFrame = "{{528, 59}, {895, 819}}";
};
};
- 8BB8B69021028B4200751000 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Pressure4Mono.cpp */;
- name = "Pressure4Mono.cpp: 201";
- rLen = 0;
- rLoc = 9254;
- rType = 0;
- vrLen = 660;
- vrLoc = 8748;
- };
8BC6025B073B072D006C4272 /* Pressure4Mono.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 2002}}";
- sepNavSelRange = "{2979, 0}";
- sepNavVisRange = "{4196, 1545}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2041}}";
+ sepNavSelRange = "{5594, 0}";
+ sepNavVisRange = "{5278, 452}";
sepNavWindowFrame = "{{545, 52}, {895, 819}}";
};
};
diff --git a/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.perspectivev3
index 8a308b1..72322fc 100755
--- a/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>191</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -308,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {191, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -318,19 +316,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {208, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>191</real>
</array>
<key>RubberWindowFrame</key>
- <string>651 172 841 654 0 0 1440 878 </string>
+ <string>471 181 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>208pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -353,12 +351,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BB8B69021028B4200751000</string>
+ <string>8B792F6721F495EA006E9731</string>
<key>history</key>
<array>
<string>8BEF332D1D81E168008B0B7F</string>
- <string>8B2E03F31D837F81001B9E01</string>
- <string>8B9D75931F7F9FAE007AB60F</string>
+ <string>8B792F6521F495EA006E9731</string>
+ <string>8B792F6621F495EA006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 173}}</string>
+ <string>{{0, 0}, {628, 336}}</string>
<key>RubberWindowFrame</key>
- <string>651 172 841 654 0 0 1440 878 </string>
+ <string>471 181 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>173pt</string>
+ <string>336pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>435pt</string>
+ <string>272pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 408}}</string>
- <key>RubberWindowFrame</key>
- <string>651 172 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {628, 245}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {628, 245}}</string>
+ <key>RubberWindowFrame</key>
+ <string>471 181 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -462,7 +460,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>628pt</string>
</dict>
</array>
<key>Name</key>
@@ -481,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BB8B69121028B4200751000</string>
+ <string>8B792F6821F495EA006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BB8B69221028B4200751000</string>
+ <string>8B792F6921F495EA006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BB8B69321028B4200751000</string>
+ <string>8B792F6A21F495EA006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553814850.34887004</real>
+ <real>569677290.01837504</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,11 +673,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BB8B69421028B4200751000</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>651 172 841 654 0 0 1440 878 </string>
+ <string>471 181 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.cpp b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.cpp
index 48f223b..d0b8cf9 100644..100755
--- a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.cpp
+++ b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.cpp
@@ -150,9 +150,7 @@ ComponentResult PurestConsoleBuss::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void PurestConsoleBuss::PurestConsoleBussKernel::Reset()
{
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -168,10 +166,6 @@ void PurestConsoleBuss::PurestConsoleBussKernel::Process( const Float32 *inSou
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
long double inputSample;
while (nSampleFrames-- > 0) {
@@ -208,20 +202,12 @@ void PurestConsoleBuss::PurestConsoleBussKernel::Process( const Float32 *inSou
inputSample = asin(inputSample);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
-
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
+
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.h b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.h
index a3df04f..590e797 100644..100755
--- a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.h
+++ b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.h
@@ -118,9 +118,7 @@ public:
virtual void Reset();
private:
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.mode1v3
index f301be9..f301be9 100644..100755
--- a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.mode1v3
+++ b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.mode1v3
diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser
index 3851c37..5e3513c 100644..100755
--- a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser
@@ -49,18 +49,21 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538687633;
- PBXWorkspaceStateSaveDate = 538687633;
+ PBXPerProjectTemplateStateSaveDate = 569585234;
+ PBXWorkspaceStateSaveDate = 569585234;
};
perUserProjectItems = {
- 8B4E550F201BB8BF00B5DC2A /* PlistBookmark */ = 8B4E550F201BB8BF00B5DC2A /* PlistBookmark */;
- 8BBE45541FE5F3CA0022E6F7 /* PlistBookmark */ = 8BBE45541FE5F3CA0022E6F7 /* PlistBookmark */;
+ 8B34923F2054559600C0EF7D /* PlistBookmark */ = 8B34923F2054559600C0EF7D /* PlistBookmark */;
+ 8B79265921F32EAB006E9731 /* PBXBookmark */ = 8B79265921F32EAB006E9731 /* PBXBookmark */;
+ 8B79265F21F32F13006E9731 /* PBXTextBookmark */ = 8B79265F21F32F13006E9731 /* PBXTextBookmark */;
+ 8B79266421F32F25006E9731 /* PBXTextBookmark */ = 8B79266421F32F25006E9731 /* PBXTextBookmark */;
+ 8B79266721F32F25006E9731 /* PBXTextBookmark */ = 8B79266721F32F25006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B4E550F201BB8BF00B5DC2A /* PlistBookmark */ = {
+ 8B34923F2054559600C0EF7D /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -68,16 +71,50 @@
kPath = (
CFBundleName,
);
- name = /Users/christopherjohnson/Desktop/github/plugins/MacAU/PurestConsoleBuss/Info.plist;
+ name = /Users/christopherjohnson/Desktop/MacAU/PurestConsoleBuss/Info.plist;
+ rLen = 0;
+ rLoc = 9223372036854775808;
+ };
+ 8B79265921F32EAB006E9731 /* PBXBookmark */ = {
+ isa = PBXBookmark;
+ fRef = 8BA05A660720730100365D66 /* PurestConsoleBuss.cpp */;
+ };
+ 8B79265F21F32F13006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* PurestConsoleBuss.cpp */;
+ name = "PurestConsoleBuss.cpp: 210";
rLen = 0;
- rLoc = 9223372036854775807;
+ rLoc = 9637;
+ rType = 0;
+ vrLen = 493;
+ vrLoc = 9142;
+ };
+ 8B79266421F32F25006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* PurestConsoleBuss.cpp */;
+ name = "PurestConsoleBuss.cpp: 210";
+ rLen = 0;
+ rLoc = 9637;
+ rType = 0;
+ vrLen = 493;
+ vrLoc = 9142;
+ };
+ 8B79266721F32F25006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* PurestConsoleBuss.cpp */;
+ name = "PurestConsoleBuss.cpp: 168";
+ rLen = 0;
+ rLoc = 7709;
+ rType = 0;
+ vrLen = 2197;
+ vrLoc = 7528;
};
8BA05A660720730100365D66 /* PurestConsoleBuss.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3198}}";
- sepNavSelRange = "{9296, 242}";
- sepNavVisRange = "{7889, 2106}";
- sepNavWindowFrame = "{{545, 39}, {895, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {677, 2990}}";
+ sepNavSelRange = "{9637, 0}";
+ sepNavVisRange = "{9142, 493}";
+ sepNavWindowFrame = "{{301, 26}, {895, 839}}";
};
};
8BA05A690720730100365D66 /* PurestConsoleBussVersion.h */ = {
@@ -88,23 +125,11 @@
sepNavWindowFrame = "{{461, 39}, {895, 839}}";
};
};
- 8BBE45541FE5F3CA0022E6F7 /* PlistBookmark */ = {
- isa = PlistBookmark;
- fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
- fallbackIsa = PBXBookmark;
- isK = 0;
- kPath = (
- CFBundleName,
- );
- name = /Users/christopherjohnson/Desktop/MacAU/PurestConsoleBuss/Info.plist;
- rLen = 0;
- rLoc = 9223372036854775808;
- };
8BC6025B073B072D006C4272 /* PurestConsoleBuss.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1690}}";
- sepNavSelRange = "{2904, 0}";
- sepNavVisRange = "{2002, 1900}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1664}}";
+ sepNavSelRange = "{4995, 0}";
+ sepNavVisRange = "{3220, 1877}";
sepNavWindowFrame = "{{539, 39}, {895, 839}}";
};
};
diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3
index f555b58..699b00b 100644..100755
--- a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3
@@ -222,11 +222,52 @@
</dict>
</array>
<key>OpenEditors</key>
- <array/>
+ <array>
+ <dict>
+ <key>Content</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8B79266521F32F25006E9731</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>PurestConsoleBuss.cpp</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8B79266621F32F25006E9731</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>PurestConsoleBuss.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B79266721F32F25006E9731</string>
+ <key>history</key>
+ <array>
+ <string>8B79265921F32EAB006E9731</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>Geometry</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 20}, {895, 742}}</string>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <false/>
+ <key>RubberWindowFrame</key>
+ <string>301 82 895 783 0 0 1440 878 </string>
+ </dict>
+ </dict>
+ </array>
<key>PerspectiveWidths</key>
<array>
- <integer>810</integer>
- <integer>810</integer>
+ <integer>841</integer>
+ <integer>841</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +297,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -301,7 +340,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -325,7 +364,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 222 841 654 0 0 1440 878 </string>
+ <string>492 170 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -341,7 +380,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Info.plist</string>
+ <string>PurestConsoleBuss.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,14 +388,15 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Info.plist</string>
+ <string>PurestConsoleBuss.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4E550F201BB8BF00B5DC2A</string>
+ <string>8B79266421F32F25006E9731</string>
<key>history</key>
<array>
- <string>8BBE45541FE5F3CA0022E6F7</string>
+ <string>8B34923F2054559600C0EF7D</string>
+ <string>8B79265F21F32F13006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +410,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 229}}</string>
+ <string>{{0, 0}, {531, 188}}</string>
<key>RubberWindowFrame</key>
- <string>599 222 841 654 0 0 1440 878 </string>
+ <string>492 170 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>229pt</string>
+ <string>188pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>379pt</string>
+ <string>420pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +435,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 352}}</string>
- <key>RubberWindowFrame</key>
- <string>599 222 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 393}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +489,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {531, 393}}</string>
+ <key>RubberWindowFrame</key>
+ <string>492 170 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +519,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E5510201BB8BF00B5DC2A</string>
+ <string>8B79265421F32E69006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E5511201BB8BF00B5DC2A</string>
+ <string>8B79265521F32E69006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B4E5512201BB8BF00B5DC2A</string>
+ <string>8B79265621F32E69006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -656,7 +696,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538687679.06755602</real>
+ <real>569585445.78409505</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -673,11 +713,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B4E5513201BB8BF00B5DC2A</string>
- <string>/Users/christopherjohnson/Desktop/github/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj</string>
+ <string>8B79266521F32F25006E9731</string>
+ <string>/Users/christopherjohnson/Desktop/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 222 841 654 0 0 1440 878 </string>
+ <string>492 170 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.pbxproj b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.pbxproj
index c25ead8..c25ead8 100644..100755
--- a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.pbxproj
+++ b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.pbxproj
diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.cpp b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.cpp
index 7f47b65..b418640 100644..100755
--- a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.cpp
+++ b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.cpp
@@ -150,9 +150,7 @@ ComponentResult PurestConsoleChannel::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void PurestConsoleChannel::PurestConsoleChannelKernel::Reset()
{
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -168,10 +166,6 @@ void PurestConsoleChannel::PurestConsoleChannelKernel::Process( const Float32
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
long double inputSample;
while (nSampleFrames-- > 0) {
@@ -203,20 +197,12 @@ void PurestConsoleChannel::PurestConsoleChannelKernel::Process( const Float32
inputSample = sin(inputSample);
//amplitude aspect
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.h b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.h
index 5cf13da..0beecd1 100644..100755
--- a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.h
+++ b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.h
@@ -119,9 +119,7 @@ public:
virtual void Reset();
private:
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.mode1v3
index f301be9..f301be9 100644..100755
--- a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.mode1v3
+++ b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.mode1v3
diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser
index dcf6a55..44838c0 100644..100755
--- a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser
@@ -49,18 +49,19 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538686827;
- PBXWorkspaceStateSaveDate = 538686827;
+ PBXPerProjectTemplateStateSaveDate = 569585667;
+ PBXWorkspaceStateSaveDate = 569585667;
};
perUserProjectItems = {
- 8B4E54B5201BB4AE00B5DC2A /* PlistBookmark */ = 8B4E54B5201BB4AE00B5DC2A /* PlistBookmark */;
- 8B4E54C3201BB57400B5DC2A /* PlistBookmark */ = 8B4E54C3201BB57400B5DC2A /* PlistBookmark */;
+ 8B34922E2054553C00C0EF7D /* PlistBookmark */ = 8B34922E2054553C00C0EF7D /* PlistBookmark */;
+ 8B79267521F33079006E9731 /* PBXTextBookmark */ = 8B79267521F33079006E9731 /* PBXTextBookmark */;
+ 8B79267A21F3308F006E9731 /* PBXTextBookmark */ = 8B79267A21F3308F006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B4E54B5201BB4AE00B5DC2A /* PlistBookmark */ = {
+ 8B34922E2054553C00C0EF7D /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -68,28 +69,36 @@
kPath = (
CFBundleName,
);
- name = /Users/christopherjohnson/Desktop/github/plugins/MacAU/PurestConsoleChannel/Info.plist;
+ name = /Users/christopherjohnson/Desktop/MacAU/PurestConsoleChannel/Info.plist;
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B4E54C3201BB57400B5DC2A /* PlistBookmark */ = {
- isa = PlistBookmark;
- fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
- fallbackIsa = PBXBookmark;
- isK = 0;
- kPath = (
- CFBundleName,
- );
- name = /Users/christopherjohnson/Desktop/github/plugins/MacAU/PurestConsoleChannel/Info.plist;
+ 8B79267521F33079006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* PurestConsoleChannel.cpp */;
+ name = "PurestConsoleChannel.cpp: 206";
+ rLen = 0;
+ rLoc = 9532;
+ rType = 0;
+ vrLen = 213;
+ vrLoc = 9160;
+ };
+ 8B79267A21F3308F006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* PurestConsoleChannel.cpp */;
+ name = "PurestConsoleChannel.cpp: 206";
rLen = 0;
- rLoc = 9223372036854775807;
+ rLoc = 9532;
+ rType = 0;
+ vrLen = 213;
+ vrLoc = 9160;
};
8BA05A660720730100365D66 /* PurestConsoleChannel.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3094}}";
- sepNavSelRange = "{9377, 56}";
- sepNavVisRange = "{7017, 2416}";
- sepNavWindowFrame = "{{545, 39}, {895, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {677, 2873}}";
+ sepNavSelRange = "{9532, 0}";
+ sepNavVisRange = "{9160, 213}";
+ sepNavWindowFrame = "{{352, 39}, {895, 839}}";
};
};
8BA05A690720730100365D66 /* PurestConsoleChannelVersion.h */ = {
@@ -102,10 +111,10 @@
};
8BC6025B073B072D006C4272 /* PurestConsoleChannel.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1703}}";
- sepNavSelRange = "{2920, 0}";
- sepNavVisRange = "{1797, 2033}";
- sepNavWindowFrame = "{{705, 39}, {895, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1677}}";
+ sepNavSelRange = "{5033, 0}";
+ sepNavVisRange = "{3380, 1763}";
+ sepNavWindowFrame = "{{307, 39}, {895, 839}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3
index f3c675f..18c4f2b 100644..100755
--- a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -325,7 +323,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>584 203 841 654 0 0 1440 878 </string>
+ <string>388 183 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -341,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Info.plist</string>
+ <string>PurestConsoleChannel.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,14 +347,15 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Info.plist</string>
+ <string>PurestConsoleChannel.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4E54C3201BB57400B5DC2A</string>
+ <string>8B79267A21F3308F006E9731</string>
<key>history</key>
<array>
- <string>8B4E54B5201BB4AE00B5DC2A</string>
+ <string>8B34922E2054553C00C0EF7D</string>
+ <string>8B79267521F33079006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 229}}</string>
+ <string>{{0, 0}, {531, 126}}</string>
<key>RubberWindowFrame</key>
- <string>584 203 841 654 0 0 1440 878 </string>
+ <string>388 183 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>229pt</string>
+ <string>126pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>379pt</string>
+ <string>482pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 352}}</string>
- <key>RubberWindowFrame</key>
- <string>584 203 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 455}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {531, 455}}</string>
+ <key>RubberWindowFrame</key>
+ <string>388 183 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E54C4201BB57400B5DC2A</string>
+ <string>8B79267B21F3308F006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E54C5201BB57400B5DC2A</string>
+ <string>8B79267C21F3308F006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B4E54C6201BB57400B5DC2A</string>
+ <string>8B79267D21F3308F006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -656,7 +655,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538686836.144647</real>
+ <real>569585807.50112402</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -673,11 +672,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B4E54C7201BB57400B5DC2A</string>
- <string>/Users/christopherjohnson/Desktop/github/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>584 203 841 654 0 0 1440 878 </string>
+ <string>388 183 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.pbxproj b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.pbxproj
index a832a58..a832a58 100644..100755
--- a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.pbxproj
+++ b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.pbxproj
diff --git a/plugins/MacAU/PurestDrive/PurestDrive.cpp b/plugins/MacAU/PurestDrive/PurestDrive.cpp
index fe73631..7f6d0a0 100644..100755
--- a/plugins/MacAU/PurestDrive/PurestDrive.cpp
+++ b/plugins/MacAU/PurestDrive/PurestDrive.cpp
@@ -159,9 +159,7 @@ ComponentResult PurestDrive::Initialize()
void PurestDrive::PurestDriveKernel::Reset()
{
previousSample = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
@@ -182,9 +180,6 @@ void PurestDrive::PurestDriveKernel::Process( const Float32 *inSourceP,
long double inputSample;
long double drySample;
Float64 apply;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -227,19 +222,11 @@ void PurestDrive::PurestDriveKernel::Process( const Float32 *inSourceP,
previousSample = sin(drySample);
//apply the sine while storing previous sample
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/PurestDrive/PurestDrive.h b/plugins/MacAU/PurestDrive/PurestDrive.h
index 5f5aaa0..54809d8 100755
--- a/plugins/MacAU/PurestDrive/PurestDrive.h
+++ b/plugins/MacAU/PurestDrive/PurestDrive.h
@@ -126,9 +126,7 @@ public:
private:
double previousSample;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).mode1v3 b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).mode1v3
index 75a6c26..75a6c26 100644..100755
--- a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).mode1v3
+++ b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).mode1v3
diff --git a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).pbxuser b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).pbxuser
index a5bba60..a5bba60 100644..100755
--- a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).pbxuser
+++ b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).pbxuser
diff --git a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser
index 197baf6..f2badd1 100755
--- a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,15 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538686890;
- PBXWorkspaceStateSaveDate = 538686890;
+ PBXPerProjectTemplateStateSaveDate = 569585875;
+ PBXWorkspaceStateSaveDate = 569585875;
};
perUserProjectItems = {
8B4E546B201BAC8800B5DC2A /* PBXTextBookmark */ = 8B4E546B201BAC8800B5DC2A /* PBXTextBookmark */;
- 8B4E54A2201BB36200B5DC2A /* PBXTextBookmark */ = 8B4E54A2201BB36200B5DC2A /* PBXTextBookmark */;
8B4E54E4201BB69000B5DC2A /* PBXTextBookmark */ = 8B4E54E4201BB69000B5DC2A /* PBXTextBookmark */;
+ 8B79268621F330ED006E9731 /* PBXBookmark */ = 8B79268621F330ED006E9731 /* PBXBookmark */;
+ 8B79268F21F33157006E9731 /* PBXTextBookmark */ = 8B79268F21F33157006E9731 /* PBXTextBookmark */;
+ 8B79269521F33157006E9731 /* PBXTextBookmark */ = 8B79269521F33157006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -66,12 +68,12 @@
fRef = 8BA05A660720730100365D66 /* PurestDrive.cpp */;
name = "PurestDrive.cpp: 243";
rLen = 0;
- rLoc = 10597;
+ rLoc = 10326;
rType = 0;
vrLen = 174;
vrLoc = 8595;
};
- 8B4E54A2201BB36200B5DC2A /* PBXTextBookmark */ = {
+ 8B4E54E4201BB69000B5DC2A /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* PurestDriveVersion.h */;
name = "PurestDriveVersion.h: 55";
@@ -81,7 +83,11 @@
vrLen = 0;
vrLoc = 0;
};
- 8B4E54E4201BB69000B5DC2A /* PBXTextBookmark */ = {
+ 8B79268621F330ED006E9731 /* PBXBookmark */ = {
+ isa = PBXBookmark;
+ fRef = 8BA05A660720730100365D66 /* PurestDrive.cpp */;
+ };
+ 8B79268F21F33157006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* PurestDriveVersion.h */;
name = "PurestDriveVersion.h: 55";
@@ -91,12 +97,22 @@
vrLen = 0;
vrLoc = 0;
};
+ 8B79269521F33157006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* PurestDrive.cpp */;
+ name = "PurestDrive.cpp: 230";
+ rLen = 0;
+ rLoc = 10324;
+ rType = 0;
+ vrLen = 2327;
+ vrLoc = 8156;
+ };
8BA05A660720730100365D66 /* PurestDrive.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {934, 3419}}";
- sepNavSelRange = "{9713, 510}";
- sepNavVisRange = "{7324, 2454}";
- sepNavWindowFrame = "{{459, 58}, {981, 816}}";
+ sepNavIntBoundsRect = "{{0, 0}, {934, 3263}}";
+ sepNavSelRange = "{10324, 0}";
+ sepNavVisRange = "{8156, 2327}";
+ sepNavWindowFrame = "{{255, 47}, {981, 816}}";
};
};
8BA05A670720730100365D66 /* PurestDrive.exp */ = {
@@ -124,9 +140,9 @@
};
8BC6025B073B072D006C4272 /* PurestDrive.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {934, 1794}}";
- sepNavSelRange = "{5101, 0}";
- sepNavVisRange = "{438, 2642}";
+ sepNavIntBoundsRect = "{{0, 0}, {934, 1768}}";
+ sepNavSelRange = "{5140, 0}";
+ sepNavVisRange = "{3607, 1646}";
sepNavWindowFrame = "{{459, 62}, {981, 816}}";
};
};
diff --git a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3
index dea99d5..c9284f3 100644..100755
--- a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3
@@ -222,7 +222,48 @@
</dict>
</array>
<key>OpenEditors</key>
- <array/>
+ <array>
+ <dict>
+ <key>Content</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8B79269321F33157006E9731</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>PurestDrive.cpp</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8B79269421F33157006E9731</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>PurestDrive.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B79269521F33157006E9731</string>
+ <key>history</key>
+ <array>
+ <string>8B79268621F330ED006E9731</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>Geometry</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 20}, {981, 719}}</string>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <false/>
+ <key>RubberWindowFrame</key>
+ <string>255 103 981 760 0 0 1440 878 </string>
+ </dict>
+ </dict>
+ </array>
<key>PerspectiveWidths</key>
<array>
<integer>810</integer>
@@ -323,7 +364,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 344 810 487 0 0 1440 878 </string>
+ <string>466 344 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,11 +392,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4E54E4201BB69000B5DC2A</string>
+ <string>8B79268F21F33157006E9731</string>
<key>history</key>
<array>
<string>8B4E546B201BAC8800B5DC2A</string>
- <string>8B4E54A2201BB36200B5DC2A</string>
+ <string>8B4E54E4201BB69000B5DC2A</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,23 +410,21 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>630 344 810 487 0 0 1440 878 </string>
+ <string>466 344 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -396,9 +435,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
- <key>RubberWindowFrame</key>
- <string>630 344 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 414}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +489,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>466 344 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +519,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E54E5201BB69000B5DC2A</string>
+ <string>8B79269021F33157006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E54E6201BB69000B5DC2A</string>
+ <string>8B79269121F33157006E9731</string>
<string>8B08D48D1C9DE5FB007CAA65</string>
- <string>8B4E54E7201BB69000B5DC2A</string>
+ <string>8B79269221F33157006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -637,7 +676,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538687120.62552202</real>
+ <real>569586007.10360599</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -654,11 +693,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B4E54E8201BB69000B5DC2A</string>
+ <string>8B79269321F33157006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/PurestDrive/PurestDrive.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 344 810 487 0 0 1440 878 </string>
+ <string>466 344 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/project.pbxproj b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/project.pbxproj
index 0d9763c..0d9763c 100644..100755
--- a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/project.pbxproj
+++ b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/project.pbxproj
diff --git a/plugins/MacAU/PurestEcho/PurestEcho.cpp b/plugins/MacAU/PurestEcho/PurestEcho.cpp
index 86ef0f6..cfbb9fd 100755
--- a/plugins/MacAU/PurestEcho/PurestEcho.cpp
+++ b/plugins/MacAU/PurestEcho/PurestEcho.cpp
@@ -197,9 +197,7 @@ void PurestEcho::PurestEchoKernel::Reset()
for(int count = 0; count < totalsamples-1; count++) {d[count] = 0;}
gcount = 0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -275,11 +273,7 @@ void PurestEcho::PurestEchoKernel::Process( const Float32 *inSourceP,
//you zero attenuation at 22 kilohertz: forget this at your peril ;)
Float64 delaysBuffer;
-
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+
long double inputSample;
while (nSampleFrames-- > 0) {
@@ -344,19 +338,11 @@ void PurestEcho::PurestEchoKernel::Process( const Float32 *inSourceP,
gcount--;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/PurestEcho/PurestEcho.h b/plugins/MacAU/PurestEcho/PurestEcho.h
index 7ec5461..7ed818b 100755
--- a/plugins/MacAU/PurestEcho/PurestEcho.h
+++ b/plugins/MacAU/PurestEcho/PurestEcho.h
@@ -140,9 +140,7 @@ public:
const static int totalsamples = 65535;
Float32 d[totalsamples];
int gcount;
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser
index bd4e607..4a50060 100755
--- a/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528457655;
- PBXWorkspaceStateSaveDate = 528457655;
+ PBXPerProjectTemplateStateSaveDate = 569586044;
+ PBXWorkspaceStateSaveDate = 569586044;
};
perUserProjectItems = {
8B18E4181EE3577D005C6C5A /* PlistBookmark */ = 8B18E4181EE3577D005C6C5A /* PlistBookmark */;
- 8B9D66831F7C8CE1007AB60F /* PBXTextBookmark */ = 8B9D66831F7C8CE1007AB60F /* PBXTextBookmark */;
- 8B9D75A21F7F9FC4007AB60F /* PBXTextBookmark */ = 8B9D75A21F7F9FC4007AB60F /* PBXTextBookmark */;
+ 8B7926A321F33202006E9731 /* PBXTextBookmark */ = 8B7926A321F33202006E9731 /* PBXTextBookmark */;
+ 8B7926A821F3322B006E9731 /* PBXTextBookmark */ = 8B7926A821F3322B006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -73,32 +73,32 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B9D66831F7C8CE1007AB60F /* PBXTextBookmark */ = {
+ 8B7926A321F33202006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* PurestEcho.cpp */;
- name = "PurestEcho.cpp: 325";
+ name = "PurestEcho.cpp: 323";
rLen = 0;
- rLoc = 15603;
+ rLoc = 15450;
rType = 0;
- vrLen = 282;
- vrLoc = 13171;
+ vrLen = 271;
+ vrLoc = 13178;
};
- 8B9D75A21F7F9FC4007AB60F /* PBXTextBookmark */ = {
+ 8B7926A821F3322B006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* PurestEcho.cpp */;
- name = "PurestEcho.cpp: 325";
+ name = "PurestEcho.cpp: 319";
rLen = 0;
- rLoc = 15603;
+ rLoc = 15450;
rType = 0;
- vrLen = 259;
- vrLoc = 13194;
+ vrLen = 494;
+ vrLoc = 13188;
};
8BA05A660720730100365D66 /* PurestEcho.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {845, 4758}}";
- sepNavSelRange = "{15603, 0}";
- sepNavVisRange = "{13194, 259}";
- sepNavWindowFrame = "{{488, 39}, {952, 839}}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 4745}}";
+ sepNavSelRange = "{15450, 0}";
+ sepNavVisRange = "{13188, 494}";
+ sepNavWindowFrame = "{{351, 39}, {952, 839}}";
};
};
8BA05A690720730100365D66 /* PurestEchoVersion.h */ = {
@@ -111,9 +111,9 @@
};
8BC6025B073B072D006C4272 /* PurestEcho.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {905, 1963}}";
- sepNavSelRange = "{5651, 65}";
- sepNavVisRange = "{4192, 1633}";
+ sepNavIntBoundsRect = "{{0, 0}, {905, 1937}}";
+ sepNavSelRange = "{5673, 0}";
+ sepNavVisRange = "{4087, 1697}";
sepNavWindowFrame = "{{488, 39}, {952, 839}}";
};
};
diff --git a/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3
index 07a9d55..7fbebe1 100755
--- a/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>810</integer>
- <integer>810</integer>
+ <integer>841</integer>
+ <integer>841</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -325,7 +323,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>591 207 841 654 0 0 1440 878 </string>
+ <string>484 210 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D75A21F7F9FC4007AB60F</string>
+ <string>8B7926A821F3322B006E9731</string>
<key>history</key>
<array>
<string>8B18E4181EE3577D005C6C5A</string>
- <string>8B9D66831F7C8CE1007AB60F</string>
+ <string>8B7926A321F33202006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 158}}</string>
+ <string>{{0, 0}, {531, 142}}</string>
<key>RubberWindowFrame</key>
- <string>591 207 841 654 0 0 1440 878 </string>
+ <string>484 210 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>158pt</string>
+ <string>142pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>450pt</string>
+ <string>466pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 423}}</string>
- <key>RubberWindowFrame</key>
- <string>591 207 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 439}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {531, 439}}</string>
+ <key>RubberWindowFrame</key>
+ <string>484 210 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D75A31F7F9FC4007AB60F</string>
+ <string>8B7926A921F3322B006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D75A41F7F9FC4007AB60F</string>
+ <string>8B7926AA21F3322B006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D75A51F7F9FC4007AB60F</string>
+ <string>8B7926AB21F3322B006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +655,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528457668.15951699</real>
+ <real>569586219.97907698</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,11 +672,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D75A61F7F9FC4007AB60F</string>
+ <string>8B7926AC21F3322B006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/PurestEcho/PurestEcho.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>591 207 841 654 0 0 1440 878 </string>
+ <string>484 210 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/PurestGain/PurestGain.cpp b/plugins/MacAU/PurestGain/PurestGain.cpp
index fe5477c..6bc46d5 100644..100755
--- a/plugins/MacAU/PurestGain/PurestGain.cpp
+++ b/plugins/MacAU/PurestGain/PurestGain.cpp
@@ -170,9 +170,7 @@ void PurestGain::PurestGainKernel::Reset()
settingchase = -90.0;
gainBchase = -90.0;
chasespeed = 350.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -187,7 +185,6 @@ void PurestGain::PurestGainKernel::Process( const Float32 *inSourceP,
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
- Float32 fpTemp;
Float64 inputgain = GetParameter( kParam_One );
if (settingchase != inputgain) {
@@ -216,8 +213,6 @@ void PurestGain::PurestGainKernel::Process( const Float32 *inSourceP,
Float64 outputgain;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
long double inputSample;
while (nSampleFrames-- > 0) {
@@ -266,38 +261,17 @@ void PurestGain::PurestGainKernel::Process( const Float32 *inSourceP,
}
- if (1.0 == outputgain)
- {
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- }
- fpFlip = not fpFlip;
- //continue noise shaping when bypassing
- *destP = *sourceP;
- }
+ if (1.0 == outputgain) *destP = *sourceP;
else
{
inputSample *= outputgain;
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
- }
-
+ }
sourceP += inNumChannels; destP += inNumChannels;
}
}
diff --git a/plugins/MacAU/PurestGain/PurestGain.h b/plugins/MacAU/PurestGain/PurestGain.h
index 33521dd..ebdac1a 100755
--- a/plugins/MacAU/PurestGain/PurestGain.h
+++ b/plugins/MacAU/PurestGain/PurestGain.h
@@ -132,10 +132,7 @@ public:
Float64 settingchase;
Float64 gainBchase;
Float64 chasespeed;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
-
+ Float64 fpNShape;
};
};
diff --git a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.mode1v3
index 75ac472..75ac472 100644..100755
--- a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.mode1v3
+++ b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.mode1v3
diff --git a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser
index 2071f3a..3035ecc 100644..100755
--- a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser
@@ -49,19 +49,43 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 532472865;
- PBXWorkspaceStateSaveDate = 532472865;
+ PBXPerProjectTemplateStateSaveDate = 569586279;
+ PBXWorkspaceStateSaveDate = 569586279;
+ };
+ perUserProjectItems = {
+ 8B7926BA21F332FC006E9731 /* PBXTextBookmark */ = 8B7926BA21F332FC006E9731 /* PBXTextBookmark */;
+ 8B7926C421F3331E006E9731 /* PBXTextBookmark */ = 8B7926C421F3331E006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B7926BA21F332FC006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* PurestGain.cpp */;
+ name = "PurestGain.cpp: 239";
+ rLen = 1347;
+ rLoc = 10034;
+ rType = 0;
+ vrLen = 189;
+ vrLoc = 10740;
+ };
+ 8B7926C421F3331E006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* PurestGain.cpp */;
+ name = "PurestGain.cpp: 238";
+ rLen = 1347;
+ rLoc = 10034;
+ rType = 0;
+ vrLen = 171;
+ vrLoc = 10772;
+ };
8BA05A660720730100365D66 /* PurestGain.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {862, 3965}}";
- sepNavSelRange = "{10177, 1347}";
- sepNavVisRange = "{10721, 1649}";
- sepNavWindowFrame = "{{556, 40}, {909, 838}}";
+ sepNavIntBoundsRect = "{{0, 0}, {684, 3744}}";
+ sepNavSelRange = "{10034, 1347}";
+ sepNavVisRange = "{10772, 171}";
+ sepNavWindowFrame = "{{390, 40}, {909, 838}}";
};
};
8BA05A690720730100365D66 /* PurestGainVersion.h */ = {
@@ -74,9 +98,9 @@
};
8BC6025B073B072D006C4272 /* PurestGain.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1885}}";
- sepNavSelRange = "{5290, 58}";
- sepNavVisRange = "{3646, 1707}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1846}}";
+ sepNavSelRange = "{5310, 0}";
+ sepNavVisRange = "{3646, 1766}";
sepNavWindowFrame = "{{531, 39}, {909, 838}}";
};
};
diff --git a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3
index 11f6e1d..7e92ba1 100644..100755
--- a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>810</integer>
+ <integer>810</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 375 810 487 0 0 1440 878 </string>
+ <string>510 325 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -340,7 +338,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BC521591DB3E3F700E72CD6</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>PurestGain.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -348,7 +346,15 @@
<key>PBXProjectModuleGUID</key>
<string>8BC5215A1DB3E3F700E72CD6</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>PurestGain.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B7926C421F3331E006E9731</string>
+ <key>history</key>
+ <array>
+ <string>8B7926BA21F332FC006E9731</string>
+ </array>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -361,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 0}}</string>
+ <string>{{0, 0}, {603, 86}}</string>
<key>RubberWindowFrame</key>
- <string>630 375 810 487 0 0 1440 878 </string>
+ <string>510 325 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>0pt</string>
+ <string>86pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>441pt</string>
+ <string>355pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -386,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>630 375 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 328}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -442,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 328}}</string>
+ <key>RubberWindowFrame</key>
+ <string>510 325 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -470,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BB5DD741FBCE50A008B4570</string>
+ <string>8B7926C521F3331E006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BB5DD751FBCE50A008B4570</string>
+ <string>8B7926C621F3331E006E9731</string>
<string>8BC521591DB3E3F700E72CD6</string>
- <string>8BB5DD761FBCE50A008B4570</string>
+ <string>8B7926C721F3331E006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -627,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>532473098.399234</real>
+ <real>569586462.880615</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -644,11 +650,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BB5DD771FBCE50A008B4570</string>
+ <string>8B7926C821F3331E006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/PurestGain/PurestGain.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 375 810 487 0 0 1440 878 </string>
+ <string>510 325 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/project.pbxproj b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/project.pbxproj
index 7426519..7426519 100644..100755
--- a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/project.pbxproj
+++ b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/project.pbxproj
diff --git a/plugins/MacAU/PurestWarm/PurestWarm.cpp b/plugins/MacAU/PurestWarm/PurestWarm.cpp
index f72cf4b..0763f84 100755
--- a/plugins/MacAU/PurestWarm/PurestWarm.cpp
+++ b/plugins/MacAU/PurestWarm/PurestWarm.cpp
@@ -173,9 +173,7 @@ ComponentResult PurestWarm::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void PurestWarm::PurestWarmKernel::Reset()
{
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -190,9 +188,6 @@ void PurestWarm::PurestWarmKernel::Process( const Float32 *inSourceP,
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
int polarity = (int) GetParameter( kParam_One );
long double inputSample;
@@ -229,55 +224,25 @@ void PurestWarm::PurestWarmKernel::Process( const Float32 *inSourceP,
if (inputSample < 0)
{
inputSample = -(sin(-inputSample*1.57079634)/1.57079634);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- } else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- //end noise shaping on 32 bit output
- } else {
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- } else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- }
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
}
} else {
-
if (inputSample > 0)
{
inputSample = sin(inputSample*1.57079634)/1.57079634;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- } else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- //end noise shaping on 32 bit output
- } else {
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- } else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- }
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
}
}
//that's it. Only applies on one half of the waveform, other half is passthrough untouched.
- //even the floating point noise shaping to the 32 bit buss is only applied as needed.
- fpFlip = not fpFlip;
+ //even the dither to the 32 bit buss is only applied as needed.
*destP = inputSample;
diff --git a/plugins/MacAU/PurestWarm/PurestWarm.h b/plugins/MacAU/PurestWarm/PurestWarm.h
index 200035d..1cf3eef 100755
--- a/plugins/MacAU/PurestWarm/PurestWarm.h
+++ b/plugins/MacAU/PurestWarm/PurestWarm.h
@@ -129,9 +129,7 @@ public:
virtual void Reset();
private:
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ Float64 fpNShape;
};
};
diff --git a/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser
index cc141a4..2b7b35c 100755
--- a/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser
@@ -3,6 +3,8 @@
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* PurestWarm */;
+ breakpoints = (
+ );
codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,25 +51,54 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 532477098;
- PBXWorkspaceStateSaveDate = 532477098;
+ PBXPerProjectTemplateStateSaveDate = 569586628;
+ PBXWorkspaceStateSaveDate = 569586628;
};
perUserProjectItems = {
+ 8B7926F621F336C4006E9731 /* PBXTextBookmark */ = 8B7926F621F336C4006E9731 /* PBXTextBookmark */;
+ 8B7926F721F336C4006E9731 /* XCBuildMessageTextBookmark */ = 8B7926F721F336C4006E9731 /* XCBuildMessageTextBookmark */;
+ 8B7926F821F336C4006E9731 /* PBXTextBookmark */ = 8B7926F821F336C4006E9731 /* PBXTextBookmark */;
8BB5DDAD1FBCF48A008B4570 /* PBXTextBookmark */ = 8BB5DDAD1FBCF48A008B4570 /* PBXTextBookmark */;
- 8BB5DDAE1FBCF48A008B4570 /* PBXTextBookmark */ = 8BB5DDAE1FBCF48A008B4570 /* PBXTextBookmark */;
- 8BB5DDB01FBCF48A008B4570 /* PBXTextBookmark */ = 8BB5DDB01FBCF48A008B4570 /* PBXTextBookmark */;
- 8BB5DDC21FBCF5C0008B4570 /* PBXTextBookmark */ = 8BB5DDC21FBCF5C0008B4570 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B7926F621F336C4006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* PurestWarm.h */;
+ name = "PurestWarm.h: 132";
+ rLen = 0;
+ rLoc = 5200;
+ rType = 0;
+ vrLen = 227;
+ vrLoc = 2866;
+ };
+ 8B7926F721F336C4006E9731 /* XCBuildMessageTextBookmark */ = {
+ isa = PBXTextBookmark;
+ comments = "Unused variable 'fpTemp'";
+ fRef = 8BA05A660720730100365D66 /* PurestWarm.cpp */;
+ fallbackIsa = XCBuildMessageTextBookmark;
+ rLen = 1;
+ rLoc = 190;
+ rType = 1;
+ };
+ 8B7926F821F336C4006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* PurestWarm.cpp */;
+ name = "PurestWarm.cpp: 191";
+ rLen = 0;
+ rLoc = 8370;
+ rType = 0;
+ vrLen = 216;
+ vrLoc = 8263;
+ };
8BA05A660720730100365D66 /* PurestWarm.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {885, 3887}}";
- sepNavSelRange = "{10000, 1649}";
- sepNavVisRange = "{10272, 1465}";
- sepNavWindowFrame = "{{534, 57}, {932, 815}}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 3263}}";
+ sepNavSelRange = "{8370, 0}";
+ sepNavVisRange = "{8263, 216}";
+ sepNavWindowFrame = "{{316, 63}, {932, 815}}";
};
};
8BA05A670720730100365D66 /* PurestWarm.exp */ = {
@@ -95,41 +126,11 @@
vrLen = 429;
vrLoc = 2236;
};
- 8BB5DDAE1FBCF48A008B4570 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* PurestWarm.cpp */;
- name = "PurestWarm.cpp: 226";
- rLen = 0;
- rLoc = 9997;
- rType = 0;
- vrLen = 229;
- vrLoc = 10272;
- };
- 8BB5DDB01FBCF48A008B4570 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* PurestWarm.h */;
- name = "PurestWarm.h: 134";
- rLen = 0;
- rLoc = 5237;
- rType = 0;
- vrLen = 286;
- vrLoc = 2808;
- };
- 8BB5DDC21FBCF5C0008B4570 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* PurestWarm.h */;
- name = "PurestWarm.h: 134";
- rLen = 0;
- rLoc = 5237;
- rType = 0;
- vrLen = 285;
- vrLoc = 2808;
- };
8BC6025B073B072D006C4272 /* PurestWarm.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {761, 2119}}";
- sepNavSelRange = "{5237, 0}";
- sepNavVisRange = "{2808, 285}";
+ sepNavIntBoundsRect = "{{0, 0}, {628, 2080}}";
+ sepNavSelRange = "{5200, 0}";
+ sepNavVisRange = "{2866, 227}";
sepNavWindowFrame = "{{15, 58}, {932, 815}}";
};
};
diff --git a/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3
index cfd223b..83128df 100755
--- a/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -300,7 +298,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>3</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
@@ -324,7 +322,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>616 391 810 487 0 0 1440 878 </string>
+ <string>361 361 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -340,7 +338,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BB5DD7C1FBCE73D008B4570</string>
<key>PBXProjectModuleLabel</key>
- <string>PurestWarm.h</string>
+ <string>PurestWarm.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -348,16 +346,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BB5DD7D1FBCE73D008B4570</string>
<key>PBXProjectModuleLabel</key>
- <string>PurestWarm.h</string>
+ <string>PurestWarm.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BB5DDC21FBCF5C0008B4570</string>
+ <string>8B7926F821F336C4006E9731</string>
<key>history</key>
<array>
<string>8BB5DDAD1FBCF48A008B4570</string>
- <string>8BB5DDAE1FBCF48A008B4570</string>
- <string>8BB5DDB01FBCF48A008B4570</string>
+ <string>8B7926F621F336C4006E9731</string>
+ <string>8B7926F721F336C4006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 102}}</string>
<key>RubberWindowFrame</key>
- <string>616 391 810 487 0 0 1440 878 </string>
+ <string>361 361 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>102pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>339pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
- <key>RubberWindowFrame</key>
- <string>616 391 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 312}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 312}}</string>
+ <key>RubberWindowFrame</key>
+ <string>361 361 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BB5DDBD1FBCF4AB008B4570</string>
+ <string>8B7926F921F336C4006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BB5DDBE1FBCF4AB008B4570</string>
+ <string>8B7926FA21F336C4006E9731</string>
<string>8BB5DD7C1FBCE73D008B4570</string>
- <string>8BB5DDBF1FBCF4AB008B4570</string>
+ <string>8B7926FB21F336C4006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -521,7 +519,7 @@
<key>Identifier</key>
<string>perspective.debug</string>
<key>IsVertical</key>
- <integer>1</integer>
+ <true/>
<key>Layout</key>
<array>
<dict>
@@ -535,12 +533,12 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {810, 0}}</string>
+ <string>{{0, 0}, {424, 270}}</string>
</dict>
<key>Module</key>
<string>PBXDebugCLIModule</string>
<key>Proportion</key>
- <string>0%</string>
+ <string>270pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
@@ -589,8 +587,6 @@
</dict>
<key>GeometryConfiguration</key>
<dict>
- <key>DebugConsoleDrawerSize</key>
- <string>{100, 120}</string>
<key>DebugConsoleVisible</key>
<string>None</string>
<key>DebugConsoleWindowFrame</key>
@@ -599,11 +595,25 @@
<string>{{200, 200}, {500, 300}}</string>
<key>Frame</key>
<string>{{0, 7}, {810, 438}}</string>
+ <key>PBXDebugSessionStackFrameViewKey</key>
+ <dict>
+ <key>DebugVariablesTableConfiguration</key>
+ <array>
+ <string>Name</string>
+ <real>120</real>
+ <string>Value</string>
+ <real>85</real>
+ <string>Summary</string>
+ <real>185</real>
+ </array>
+ <key>Frame</key>
+ <string>{{395, 0}, {415, 213}}</string>
+ </dict>
</dict>
<key>Module</key>
<string>PBXDebugSessionModule</string>
<key>Proportion</key>
- <string>443pt</string>
+ <string>438pt</string>
</dict>
</array>
<key>Name</key>
@@ -611,19 +621,27 @@
<key>ServiceClasses</key>
<array>
<string>XCModuleDock</string>
- <string>XCModuleDock</string>
<string>PBXDebugCLIModule</string>
<string>PBXDebugSessionModule</string>
- <string>XCConsole</string>
+ <string>PBXDebugProcessAndThreadModule</string>
+ <string>PBXDebugProcessViewModule</string>
+ <string>PBXDebugThreadViewModule</string>
+ <string>PBXDebugStackFrameViewModule</string>
+ <string>PBXNavigatorGroup</string>
</array>
<key>TableOfContents</key>
<array>
- <string>1CC8E6A5069209BD00BB180A</string>
- <string>1CC8E6A6069209BD00BB180A</string>
+ <string>8B7926FC21F336C4006E9731</string>
<string>1CCC7628064C1048000F2A68</string>
<string>1CCC7629064C1048000F2A68</string>
- <string>1CC8E6A7069209BD00BB180A</string>
+ <string>8B7926FD21F336C4006E9731</string>
+ <string>8B7926FE21F336C4006E9731</string>
+ <string>8B7926FF21F336C4006E9731</string>
+ <string>8B79270021F336C4006E9731</string>
+ <string>8B79270121F336C4006E9731</string>
</array>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugV3</string>
</dict>
@@ -637,7 +655,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>532477376.88819098</real>
+ <real>569587396.45455897</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -654,11 +672,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BB5DDC31FBCF5C0008B4570</string>
+ <string>8B79270221F336C4006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/PurestWarm/PurestWarm.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>616 391 810 487 0 0 1440 878 </string>
+ <string>361 361 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Pyewacket/Pyewacket.cpp b/plugins/MacAU/Pyewacket/Pyewacket.cpp
index f80a48b..bb8583b 100755
--- a/plugins/MacAU/Pyewacket/Pyewacket.cpp
+++ b/plugins/MacAU/Pyewacket/Pyewacket.cpp
@@ -189,11 +189,8 @@ ComponentResult Pyewacket::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Pyewacket::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
chase = 1.0;
lastrectifierL = 0.0;
lastrectifierR = 0.0;
@@ -218,7 +215,6 @@ OSStatus Pyewacket::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
overallscale *= GetSampleRate();
if (overallscale < 0.1) overallscale = 1.0;
//insanity check
- Float32 fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
long double fpNew = 1.0 - fpOld;
long double inputSampleL;
@@ -336,27 +332,14 @@ OSStatus Pyewacket::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
inputSampleR *= outputGain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacAU/Pyewacket/Pyewacket.h b/plugins/MacAU/Pyewacket/Pyewacket.h
index af1110c..f456046 100755
--- a/plugins/MacAU/Pyewacket/Pyewacket.h
+++ b/plugins/MacAU/Pyewacket/Pyewacket.h
@@ -116,11 +116,8 @@ public:
private:
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
Float64 chase;
Float64 lastrectifierL;
Float64 lastrectifierR;
diff --git a/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser
index ee55037..54c2d4e 100755
--- a/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser
@@ -51,13 +51,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528457728;
- PBXWorkspaceStateSaveDate = 528457728;
+ PBXPerProjectTemplateStateSaveDate = 569677333;
+ PBXWorkspaceStateSaveDate = 569677333;
};
perUserProjectItems = {
8B3839B91DB9420B00AB1616 /* PlistBookmark */ = 8B3839B91DB9420B00AB1616 /* PlistBookmark */;
- 8B9D724D1F7EFF2C007AB60F /* PBXTextBookmark */ = 8B9D724D1F7EFF2C007AB60F /* PBXTextBookmark */;
- 8B9D75BE1F7FA023007AB60F /* PBXTextBookmark */ = 8B9D75BE1F7FA023007AB60F /* PBXTextBookmark */;
+ 8B792F7621F4989B006E9731 /* PBXTextBookmark */ = 8B792F7621F4989B006E9731 /* PBXTextBookmark */;
+ 8B792F7821F4989B006E9731 /* PBXTextBookmark */ = 8B792F7821F4989B006E9731 /* PBXTextBookmark */;
+ 8B792F7D21F498CC006E9731 /* PBXTextBookmark */ = 8B792F7D21F498CC006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -75,31 +76,41 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B9D724D1F7EFF2C007AB60F /* PBXTextBookmark */ = {
+ 8B792F7621F4989B006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Pyewacket.h */;
- name = "Pyewacket.h: 115";
+ name = "Pyewacket.h: 121";
rLen = 0;
- rLoc = 4914;
+ rLoc = 5041;
rType = 0;
- vrLen = 292;
- vrLoc = 4980;
+ vrLen = 760;
+ vrLoc = 4454;
};
- 8B9D75BE1F7FA023007AB60F /* PBXTextBookmark */ = {
+ 8B792F7821F4989B006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Pyewacket.h */;
- name = "Pyewacket.h: 115";
+ fRef = 8BA05A660720730100365D66 /* Pyewacket.cpp */;
+ name = "Pyewacket.cpp: 344";
+ rLen = 0;
+ rLoc = 14633;
+ rType = 0;
+ vrLen = 600;
+ vrLoc = 13667;
+ };
+ 8B792F7D21F498CC006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Pyewacket.cpp */;
+ name = "Pyewacket.cpp: 218";
rLen = 0;
- rLoc = 4914;
+ rLoc = 9498;
rType = 0;
- vrLen = 199;
- vrLoc = 4980;
+ vrLen = 573;
+ vrLoc = 9179;
};
8BA05A660720730100365D66 /* Pyewacket.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 4966}}";
- sepNavSelRange = "{10242, 0}";
- sepNavVisRange = "{10210, 2358}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 4745}}";
+ sepNavSelRange = "{9498, 0}";
+ sepNavVisRange = "{9179, 573}";
sepNavWindowFrame = "{{694, 43}, {731, 835}}";
};
};
@@ -113,9 +124,9 @@
};
8BC6025B073B072D006C4272 /* Pyewacket.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1833}}";
- sepNavSelRange = "{4914, 0}";
- sepNavVisRange = "{4980, 199}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2028}}";
+ sepNavSelRange = "{5041, 0}";
+ sepNavVisRange = "{4454, 760}";
sepNavWindowFrame = "{{681, 43}, {731, 835}}";
};
};
diff --git a/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3
index 65d2b4b..ecead33 100755
--- a/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>188</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -308,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {188, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -318,30 +316,32 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {205, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>188</real>
</array>
<key>RubberWindowFrame</key>
- <string>585 189 841 654 0 0 1440 878 </string>
+ <string>447 195 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>205pt</string>
</dict>
<dict>
<key>Dock</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Pyewacket.h</string>
+ <string>Pyewacket.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,15 +349,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Pyewacket.h</string>
+ <string>Pyewacket.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D75BE1F7FA023007AB60F</string>
+ <string>8B792F7D21F498CC006E9731</string>
<key>history</key>
<array>
<string>8B3839B91DB9420B00AB1616</string>
- <string>8B9D724D1F7EFF2C007AB60F</string>
+ <string>8B792F7621F4989B006E9731</string>
+ <string>8B792F7821F4989B006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +372,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 202}}</string>
+ <string>{{0, 0}, {631, 226}}</string>
<key>RubberWindowFrame</key>
- <string>585 189 841 654 0 0 1440 878 </string>
+ <string>447 195 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>202pt</string>
+ <string>226pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>406pt</string>
+ <string>382pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +397,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 379}}</string>
- <key>RubberWindowFrame</key>
- <string>585 189 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 198}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +451,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {631, 355}}</string>
+ <key>RubberWindowFrame</key>
+ <string>447 195 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -461,7 +462,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>631pt</string>
</dict>
</array>
<key>Name</key>
@@ -480,11 +481,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D75BF1F7FA023007AB60F</string>
+ <string>8B792F7E21F498CC006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D75C01F7FA023007AB60F</string>
+ <string>8B792F7F21F498CC006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D75C11F7FA023007AB60F</string>
+ <string>8B792F8021F498CC006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +658,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528457763.81351399</real>
+ <real>569678028.908059</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,11 +675,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D75C21F7FA023007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Pyewacket/Pyewacket.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>585 189 841 654 0 0 1440 878 </string>
+ <string>447 195 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/PyewacketMono/PyewacketMono.cpp b/plugins/MacAU/PyewacketMono/PyewacketMono.cpp
index 0bc0096..8ea6ab2 100755
--- a/plugins/MacAU/PyewacketMono/PyewacketMono.cpp
+++ b/plugins/MacAU/PyewacketMono/PyewacketMono.cpp
@@ -174,9 +174,7 @@ ComponentResult PyewacketMono::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void PyewacketMono::PyewacketMonoKernel::Reset()
{
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
chase = 1.0;
lastrectifier = 0.0;
}
@@ -198,7 +196,6 @@ void PyewacketMono::PyewacketMonoKernel::Process( const Float32 *inSourceP,
overallscale *= GetSampleRate();
if (overallscale < 0.1) overallscale = 1.0;
//insanity check
- Float32 fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
long double fpNew = 1.0 - fpOld;
long double inputSample;
@@ -283,19 +280,11 @@ void PyewacketMono::PyewacketMonoKernel::Process( const Float32 *inSourceP,
inputSample *= outputGain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/PyewacketMono/PyewacketMono.h b/plugins/MacAU/PyewacketMono/PyewacketMono.h
index f3c89ae..469c9f0 100755
--- a/plugins/MacAU/PyewacketMono/PyewacketMono.h
+++ b/plugins/MacAU/PyewacketMono/PyewacketMono.h
@@ -130,9 +130,7 @@ public:
virtual void Reset();
private:
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
Float64 chase;
Float64 lastrectifier;
};
diff --git a/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.pbxuser
index 59685c5..dda132c 100755
--- a/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 383,
20,
48,
43,
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528457773;
- PBXWorkspaceStateSaveDate = 528457773;
+ PBXPerProjectTemplateStateSaveDate = 569678053;
+ PBXWorkspaceStateSaveDate = 569678053;
};
perUserProjectItems = {
8B3839AE1DB941F200AB1616 /* PlistBookmark */ = 8B3839AE1DB941F200AB1616 /* PlistBookmark */;
- 8B383A0D1DB9520500AB1616 /* PBXTextBookmark */ = 8B383A0D1DB9520500AB1616 /* PBXTextBookmark */;
- 8B9D66C51F7C8D8D007AB60F /* PBXTextBookmark */ = 8B9D66C51F7C8D8D007AB60F /* PBXTextBookmark */;
- 8B9D75CD1F7FA05E007AB60F /* PBXTextBookmark */ = 8B9D75CD1F7FA05E007AB60F /* PBXTextBookmark */;
+ 8B792F8C21F4992B006E9731 /* PBXTextBookmark */ = 8B792F8C21F4992B006E9731 /* PBXTextBookmark */;
+ 8B792F8E21F4992B006E9731 /* PBXTextBookmark */ = 8B792F8E21F4992B006E9731 /* PBXTextBookmark */;
+ 8B792F9321F4993E006E9731 /* PBXTextBookmark */ = 8B792F9321F4993E006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -74,41 +74,41 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B383A0D1DB9520500AB1616 /* PBXTextBookmark */ = {
+ 8B792F8C21F4992B006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* PyewacketMono.h */;
- name = "PyewacketMono.h: 159";
+ name = "PyewacketMono.h: 133";
rLen = 0;
- rLoc = 5419;
+ rLoc = 5336;
rType = 0;
- vrLen = 0;
- vrLoc = 5529;
+ vrLen = 254;
+ vrLoc = 5234;
};
- 8B9D66C51F7C8D8D007AB60F /* PBXTextBookmark */ = {
+ 8B792F8E21F4992B006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* PyewacketMono.cpp */;
- name = "PyewacketMono.cpp: 210";
+ name = "PyewacketMono.cpp: 288";
rLen = 0;
- rLoc = 9389;
+ rLoc = 12575;
rType = 0;
- vrLen = 572;
- vrLoc = 10834;
+ vrLen = 970;
+ vrLoc = 11693;
};
- 8B9D75CD1F7FA05E007AB60F /* PBXTextBookmark */ = {
+ 8B792F9321F4993E006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* PyewacketMono.cpp */;
- name = "PyewacketMono.cpp: 210";
+ name = "PyewacketMono.cpp: 288";
rLen = 0;
- rLoc = 9389;
+ rLoc = 12575;
rType = 0;
- vrLen = 530;
- vrLoc = 10834;
+ vrLen = 989;
+ vrLoc = 11674;
};
8BA05A660720730100365D66 /* PyewacketMono.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 4056}}";
- sepNavSelRange = "{9389, 0}";
- sepNavVisRange = "{10834, 530}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 4030}}";
+ sepNavSelRange = "{12575, 0}";
+ sepNavVisRange = "{11674, 989}";
sepNavWindowFrame = "{{761, 39}, {679, 835}}";
};
};
@@ -122,9 +122,9 @@
};
8BC6025B073B072D006C4272 /* PyewacketMono.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1872}}";
- sepNavSelRange = "{5378, 17}";
- sepNavVisRange = "{3870, 1659}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2041}}";
+ sepNavSelRange = "{5336, 0}";
+ sepNavVisRange = "{5234, 254}";
sepNavWindowFrame = "{{657, 41}, {731, 835}}";
};
};
diff --git a/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.perspectivev3
index 60a47c2..3572251 100755
--- a/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/PyewacketMono/PyewacketMono.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>197</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -308,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {197, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -318,19 +316,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {214, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>197</real>
</array>
<key>RubberWindowFrame</key>
- <string>579 196 841 654 0 0 1440 878 </string>
+ <string>446 198 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>214pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -353,12 +351,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D75CD1F7FA05E007AB60F</string>
+ <string>8B792F9321F4993E006E9731</string>
<key>history</key>
<array>
<string>8B3839AE1DB941F200AB1616</string>
- <string>8B383A0D1DB9520500AB1616</string>
- <string>8B9D66C51F7C8D8D007AB60F</string>
+ <string>8B792F8C21F4992B006E9731</string>
+ <string>8B792F8E21F4992B006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 229}}</string>
+ <string>{{0, 0}, {622, 417}}</string>
<key>RubberWindowFrame</key>
- <string>579 196 841 654 0 0 1440 878 </string>
+ <string>446 198 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>229pt</string>
+ <string>417pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>379pt</string>
+ <string>191pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 352}}</string>
- <key>RubberWindowFrame</key>
- <string>579 196 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {622, 164}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {622, 164}}</string>
+ <key>RubberWindowFrame</key>
+ <string>446 198 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -462,7 +460,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>622pt</string>
</dict>
</array>
<key>Name</key>
@@ -481,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D75CE1F7FA05E007AB60F</string>
+ <string>8B792F9421F4993E006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D75CF1F7FA05E007AB60F</string>
+ <string>8B792F9521F4993E006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D75D01F7FA05E007AB60F</string>
+ <string>8B792F9621F4993E006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528457822.27237201</real>
+ <real>569678142.79066706</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,11 +673,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D75D11F7FA05E007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/PyewacketMono/PyewacketMono.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>579 196 841 654 0 0 1440 878 </string>
+ <string>446 198 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Righteous4/Righteous4.cpp b/plugins/MacAU/Righteous4/Righteous4.cpp
index f20e5ec..be1a1f6 100755
--- a/plugins/MacAU/Righteous4/Righteous4.cpp
+++ b/plugins/MacAU/Righteous4/Righteous4.cpp
@@ -412,14 +412,11 @@ void Righteous4::Righteous4Kernel::Process( const Float32 *inSourceP,
//output dither section
if (bitDepth == 3) {
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
} else {
//entire Naturalize section used when not on 32 bit out
@@ -519,10 +516,5 @@ void Righteous4::Righteous4Kernel::Process( const Float32 *inSourceP,
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser
index b81dbe3..9104560 100755
--- a/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser
@@ -49,19 +49,50 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 548108471;
- PBXWorkspaceStateSaveDate = 548108471;
+ PBXPerProjectTemplateStateSaveDate = 569678261;
+ PBXWorkspaceStateSaveDate = 569678261;
};
perUserProjectItems = {
+ 8B792FA321F49A2F006E9731 /* PBXTextBookmark */ = 8B792FA321F49A2F006E9731 /* PBXTextBookmark */;
+ 8B792FA521F49A2F006E9731 /* PBXTextBookmark */ = 8B792FA521F49A2F006E9731 /* PBXTextBookmark */;
+ 8B792FAA21F49A42006E9731 /* PBXTextBookmark */ = 8B792FAA21F49A42006E9731 /* PBXTextBookmark */;
8B7E3DB220A6725600482CB5 /* PBXTextBookmark */ = 8B7E3DB220A6725600482CB5 /* PBXTextBookmark */;
8B904BD0209D3B52008CBAD8 /* PlistBookmark */ = 8B904BD0209D3B52008CBAD8 /* PlistBookmark */;
- 8BBFF82820AD804F005650EF /* PBXTextBookmark */ = 8BBFF82820AD804F005650EF /* PBXTextBookmark */;
- 8BBFF86720AD84A3005650EF /* PBXTextBookmark */ = 8BBFF86720AD84A3005650EF /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B792FA321F49A2F006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* Righteous4.h */;
+ name = "Righteous4.h: 169";
+ rLen = 0;
+ rLoc = 6101;
+ rType = 0;
+ vrLen = 439;
+ vrLoc = 5895;
+ };
+ 8B792FA521F49A2F006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Righteous4.cpp */;
+ name = "Righteous4.cpp: 355";
+ rLen = 0;
+ rLoc = 16702;
+ rType = 0;
+ vrLen = 960;
+ vrLoc = 18184;
+ };
+ 8B792FAA21F49A42006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Righteous4.cpp */;
+ name = "Righteous4.cpp: 355";
+ rLen = 0;
+ rLoc = 16702;
+ rType = 0;
+ vrLen = 960;
+ vrLoc = 18184;
+ };
8B7E3DB220A6725600482CB5 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* Righteous4Version.h */;
@@ -86,10 +117,10 @@
};
8BA05A660720730100365D66 /* Righteous4.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {838, 6825}}";
+ sepNavIntBoundsRect = "{{0, 0}, {838, 6981}}";
sepNavSelRange = "{16702, 0}";
- sepNavVisRange = "{16728, 303}";
- sepNavWindowFrame = "{{-2, 59}, {1007, 819}}";
+ sepNavVisRange = "{18184, 960}";
+ sepNavWindowFrame = "{{290, 59}, {1007, 819}}";
};
};
8BA05A690720730100365D66 /* Righteous4Version.h */ = {
@@ -100,31 +131,11 @@
sepNavWindowFrame = "{{15, 41}, {816, 832}}";
};
};
- 8BBFF82820AD804F005650EF /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Righteous4.cpp */;
- name = "Righteous4.cpp: 355";
- rLen = 0;
- rLoc = 16702;
- rType = 0;
- vrLen = 303;
- vrLoc = 16728;
- };
- 8BBFF86720AD84A3005650EF /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Righteous4.cpp */;
- name = "Righteous4.cpp: 355";
- rLen = 0;
- rLoc = 16702;
- rType = 0;
- vrLen = 303;
- vrLoc = 16728;
- };
8BC6025B073B072D006C4272 /* Righteous4.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 2392}}";
+ sepNavIntBoundsRect = "{{0, 0}, {803, 2756}}";
sepNavSelRange = "{6101, 0}";
- sepNavVisRange = "{5232, 1102}";
+ sepNavVisRange = "{5895, 439}";
sepNavWindowFrame = "{{687, 14}, {816, 832}}";
};
};
diff --git a/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3
index 90a4f18..fae6e0d 100755
--- a/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3
@@ -352,12 +352,13 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBFF86720AD84A3005650EF</string>
+ <string>8B792FAA21F49A42006E9731</string>
<key>history</key>
<array>
<string>8B904BD0209D3B52008CBAD8</string>
<string>8B7E3DB220A6725600482CB5</string>
- <string>8BBFF82820AD804F005650EF</string>
+ <string>8B792FA321F49A2F006E9731</string>
+ <string>8B792FA521F49A2F006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +372,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 74}}</string>
+ <string>{{0, 0}, {531, 370}}</string>
<key>RubberWindowFrame</key>
<string>599 193 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>74pt</string>
+ <string>370pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>534pt</string>
+ <string>238pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,7 +397,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 507}}</string>
+ <string>{{10, 27}, {531, 211}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +451,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 507}}</string>
+ <string>{{10, 27}, {531, 211}}</string>
<key>RubberWindowFrame</key>
<string>599 193 841 654 0 0 1440 878 </string>
</dict>
@@ -480,11 +481,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBFF86820AD84A3005650EF</string>
+ <string>8B792FAB21F49A42006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBFF86920AD84A3005650EF</string>
+ <string>8B792FAC21F49A42006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BBFF86A20AD84A3005650EF</string>
+ <string>8B792FAD21F49A42006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +658,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>548242595.39476001</real>
+ <real>569678402.692945</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,7 +675,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBFF86B20AD84A3005650EF</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Righteous4/Righteous4.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacAU/SideDull/SideDull.cpp b/plugins/MacAU/SideDull/SideDull.cpp
index 72793e5..2b75d72 100755
--- a/plugins/MacAU/SideDull/SideDull.cpp
+++ b/plugins/MacAU/SideDull/SideDull.cpp
@@ -176,11 +176,8 @@ ComponentResult SideDull::Reset(AudioUnitScope inScope, AudioUnitElement inElem
iirSampleA = 0.0;
iirSampleB = 0.0;
flip = true;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
-
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
return noErr;
}
@@ -209,10 +206,6 @@ OSStatus SideDull::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag
overallscale *= GetSampleRate();
Float64 iirAmount = pow(GetParameter( kParam_One ),3)/overallscale;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
-
while (nSampleFrames-- > 0) {
inputSampleL = *inputL;
inputSampleR = *inputR;
@@ -273,28 +266,16 @@ OSStatus SideDull::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
-
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
flip = !flip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacAU/SideDull/SideDull.h b/plugins/MacAU/SideDull/SideDull.h
index 450a5f3..85fd8d5 100755
--- a/plugins/MacAU/SideDull/SideDull.h
+++ b/plugins/MacAU/SideDull/SideDull.h
@@ -112,11 +112,8 @@ private:
Float64 iirSampleA;
Float64 iirSampleB;
bool flip;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
-
+ long double fpNShapeL;
+ long double fpNShapeR;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser
index 6bdc1d7..c5161bd 100755
--- a/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser
@@ -12,7 +12,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 417,
20,
48,
43,
@@ -51,45 +51,55 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528457832;
- PBXWorkspaceStateSaveDate = 528457832;
+ PBXPerProjectTemplateStateSaveDate = 569678436;
+ PBXWorkspaceStateSaveDate = 569678436;
};
perUserProjectItems = {
- 8B9D66D91F7C8E9B007AB60F /* PBXTextBookmark */ = 8B9D66D91F7C8E9B007AB60F /* PBXTextBookmark */;
- 8B9D75DC1F7FA07D007AB60F /* PBXTextBookmark */ = 8B9D75DC1F7FA07D007AB60F /* PBXTextBookmark */;
+ 8B792FB921F49AD2006E9731 /* PBXTextBookmark */ = 8B792FB921F49AD2006E9731 /* PBXTextBookmark */;
+ 8B792FBB21F49AD2006E9731 /* PBXTextBookmark */ = 8B792FBB21F49AD2006E9731 /* PBXTextBookmark */;
+ 8B792FC021F49AEA006E9731 /* PBXTextBookmark */ = 8B792FC021F49AEA006E9731 /* PBXTextBookmark */;
8BD4F5851E6E0EED00288155 /* PlistBookmark */ = 8BD4F5851E6E0EED00288155 /* PlistBookmark */;
8BD4F5861E6E0EED00288155 /* PBXTextBookmark */ = 8BD4F5861E6E0EED00288155 /* PBXTextBookmark */;
- 8BD4F5871E6E0EED00288155 /* PBXTextBookmark */ = 8BD4F5871E6E0EED00288155 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D66D91F7C8E9B007AB60F /* PBXTextBookmark */ = {
+ 8B792FB921F49AD2006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* SideDull.h */;
- name = "SideDull.h: 112";
- rLen = 156;
- rLoc = 4786;
+ name = "SideDull.h: 117";
+ rLen = 0;
+ rLoc = 4888;
rType = 0;
- vrLen = 353;
- vrLoc = 2712;
+ vrLen = 1036;
+ vrLoc = 3957;
};
- 8B9D75DC1F7FA07D007AB60F /* PBXTextBookmark */ = {
+ 8B792FBB21F49AD2006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* SideDull.h */;
- name = "SideDull.h: 112";
- rLen = 156;
- rLoc = 4786;
+ fRef = 8BA05A660720730100365D66 /* SideDull.cpp */;
+ name = "SideDull.cpp: 279";
+ rLen = 0;
+ rLoc = 11462;
rType = 0;
- vrLen = 330;
- vrLoc = 2735;
+ vrLen = 843;
+ vrLoc = 10824;
+ };
+ 8B792FC021F49AEA006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* SideDull.cpp */;
+ name = "SideDull.cpp: 279";
+ rLen = 0;
+ rLoc = 11462;
+ rType = 0;
+ vrLen = 850;
+ vrLoc = 10817;
};
8BA05A660720730100365D66 /* SideDull.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {977, 4225}}";
- sepNavSelRange = "{9554, 0}";
- sepNavVisRange = "{8740, 2240}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 3965}}";
+ sepNavSelRange = "{11462, 0}";
+ sepNavVisRange = "{10817, 850}";
sepNavWindowFrame = "{{416, 39}, {1024, 839}}";
};
};
@@ -103,9 +113,9 @@
};
8BC6025B073B072D006C4272 /* SideDull.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1859}}";
- sepNavSelRange = "{4786, 156}";
- sepNavVisRange = "{2735, 330}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1781}}";
+ sepNavSelRange = "{4888, 0}";
+ sepNavVisRange = "{3957, 1036}";
sepNavWindowFrame = "{{15, 39}, {1024, 839}}";
};
};
@@ -145,16 +155,6 @@
vrLen = 510;
vrLoc = 2430;
};
- 8BD4F5871E6E0EED00288155 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* SideDull.cpp */;
- name = "SideDull.cpp: 176";
- rLen = 128;
- rLoc = 7544;
- rType = 0;
- vrLen = 794;
- vrLoc = 7693;
- };
8D01CCC60486CAD60068D4B7 /* SideDull */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3
index 5e89369..dc70f61 100755
--- a/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>163</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -308,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {163, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -318,19 +316,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {180, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>163</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 124 841 654 0 0 1440 878 </string>
+ <string>430 195 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>180pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -341,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>SideDull.h</string>
+ <string>SideDull.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,17 +347,17 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>SideDull.h</string>
+ <string>SideDull.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D75DC1F7FA07D007AB60F</string>
+ <string>8B792FC021F49AEA006E9731</string>
<key>history</key>
<array>
<string>8BD4F5851E6E0EED00288155</string>
<string>8BD4F5861E6E0EED00288155</string>
- <string>8BD4F5871E6E0EED00288155</string>
- <string>8B9D66D91F7C8E9B007AB60F</string>
+ <string>8B792FB921F49AD2006E9731</string>
+ <string>8B792FBB21F49AD2006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 229}}</string>
+ <string>{{0, 0}, {656, 436}}</string>
<key>RubberWindowFrame</key>
- <string>599 124 841 654 0 0 1440 878 </string>
+ <string>430 195 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>229pt</string>
+ <string>436pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>379pt</string>
+ <string>172pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 352}}</string>
- <key>RubberWindowFrame</key>
- <string>599 124 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {656, 365}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {656, 145}}</string>
+ <key>RubberWindowFrame</key>
+ <string>430 195 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -463,7 +461,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>656pt</string>
</dict>
</array>
<key>Name</key>
@@ -482,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D75DD1F7FA07D007AB60F</string>
+ <string>8B792FC121F49AEA006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D75DE1F7FA07D007AB60F</string>
+ <string>8B792FC221F49AEA006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D75DF1F7FA07D007AB60F</string>
+ <string>8B792FC321F49AEA006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528457853.78940398</real>
+ <real>569678570.12103295</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -676,11 +674,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D75E01F7FA07D007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/SideDull/SideDull.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 124 841 654 0 0 1440 878 </string>
+ <string>430 195 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Sidepass/Sidepass.cpp b/plugins/MacAU/Sidepass/Sidepass.cpp
index e3c62c8..1379137 100755
--- a/plugins/MacAU/Sidepass/Sidepass.cpp
+++ b/plugins/MacAU/Sidepass/Sidepass.cpp
@@ -176,11 +176,8 @@ ComponentResult Sidepass::Reset(AudioUnitScope inScope, AudioUnitElement inElem
iirSampleA = 0.0;
iirSampleB = 0.0;
flip = true;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
-
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
return noErr;
}
@@ -209,11 +206,7 @@ OSStatus Sidepass::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag
overallscale /= 44100.0;
overallscale *= GetSampleRate();
Float64 iirAmount = pow(GetParameter( kParam_One ),3)/overallscale;
-
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
-
+
while (nSampleFrames-- > 0) {
inputSampleL = *inputL;
inputSampleR = *inputR;
@@ -274,28 +267,16 @@ OSStatus Sidepass::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
-
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
flip = !flip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacAU/Sidepass/Sidepass.h b/plugins/MacAU/Sidepass/Sidepass.h
index f0f6f09..4ac346b 100755
--- a/plugins/MacAU/Sidepass/Sidepass.h
+++ b/plugins/MacAU/Sidepass/Sidepass.h
@@ -112,11 +112,8 @@ private:
Float64 iirSampleA;
Float64 iirSampleB;
bool flip;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
-
+ long double fpNShapeL;
+ long double fpNShapeR;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser
index 43370db..d1a3108 100755
--- a/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser
@@ -12,7 +12,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 397,
20,
48,
43,
@@ -51,14 +51,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561232442;
- PBXWorkspaceStateSaveDate = 561232442;
+ PBXPerProjectTemplateStateSaveDate = 569678591;
+ PBXWorkspaceStateSaveDate = 569678591;
};
perUserProjectItems = {
8B0FACF11E6A22F300E0AD36 /* PlistBookmark */ = 8B0FACF11E6A22F300E0AD36 /* PlistBookmark */;
- 8B0FAD101E6A27BE00E0AD36 /* PBXTextBookmark */ = 8B0FAD101E6A27BE00E0AD36 /* PBXTextBookmark */;
- 8B27211E2173C07300396442 /* PBXTextBookmark */ = 8B27211E2173C07300396442 /* PBXTextBookmark */;
- 8B27211F2173C07300396442 /* PBXTextBookmark */ = 8B27211F2173C07300396442 /* PBXTextBookmark */;
+ 8B792FCF21F49B6D006E9731 /* PBXTextBookmark */ = 8B792FCF21F49B6D006E9731 /* PBXTextBookmark */;
+ 8B792FD121F49B6D006E9731 /* PBXTextBookmark */ = 8B792FD121F49B6D006E9731 /* PBXTextBookmark */;
+ 8B792FD621F49B7D006E9731 /* PBXTextBookmark */ = 8B792FD621F49B7D006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -76,41 +76,41 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B0FAD101E6A27BE00E0AD36 /* PBXTextBookmark */ = {
+ 8B792FCF21F49B6D006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Sidepass.cpp */;
- name = "Sidepass.cpp: 189";
- rLen = 4308;
- rLoc = 7695;
+ fRef = 8BC6025B073B072D006C4272 /* Sidepass.h */;
+ name = "Sidepass.h: 116";
+ rLen = 0;
+ rLoc = 4885;
rType = 0;
- vrLen = 550;
- vrLoc = 7695;
+ vrLen = 1030;
+ vrLoc = 3963;
};
- 8B27211E2173C07300396442 /* PBXTextBookmark */ = {
+ 8B792FD121F49B6D006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Sidepass.h */;
- name = "Sidepass.h: 77";
- rLen = 1791;
- rLoc = 3256;
+ fRef = 8BA05A660720730100365D66 /* Sidepass.cpp */;
+ name = "Sidepass.cpp: 280";
+ rLen = 0;
+ rLoc = 11463;
rType = 0;
- vrLen = 428;
- vrLoc = 3256;
+ vrLen = 844;
+ vrLoc = 10824;
};
- 8B27211F2173C07300396442 /* PBXTextBookmark */ = {
+ 8B792FD621F49B7D006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Sidepass.cpp */;
- name = "Sidepass.cpp: 189";
- rLen = 4308;
- rLoc = 7695;
+ name = "Sidepass.cpp: 280";
+ rLen = 0;
+ rLoc = 11463;
rType = 0;
- vrLen = 332;
- vrLoc = 7913;
+ vrLen = 851;
+ vrLoc = 10817;
};
8BA05A660720730100365D66 /* Sidepass.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 4173}}";
- sepNavSelRange = "{7695, 4308}";
- sepNavVisRange = "{7913, 332}";
+ sepNavIntBoundsRect = "{{0, 0}, {824, 3705}}";
+ sepNavSelRange = "{11463, 0}";
+ sepNavVisRange = "{10817, 851}";
sepNavWindowFrame = "{{186, -24}, {923, 837}}";
};
};
@@ -132,9 +132,9 @@
};
8BC6025B073B072D006C4272 /* Sidepass.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1820}}";
- sepNavSelRange = "{3256, 1791}";
- sepNavVisRange = "{3256, 428}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1599}}";
+ sepNavSelRange = "{4885, 0}";
+ sepNavVisRange = "{3963, 1030}";
sepNavWindowFrame = "{{510, 41}, {923, 837}}";
};
};
diff --git a/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3
index cabf543..4b6178e 100755
--- a/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>183</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -308,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {183, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -318,19 +316,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {200, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>183</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 189 841 654 0 0 1440 878 </string>
+ <string>469 189 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>200pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -353,12 +351,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B27211F2173C07300396442</string>
+ <string>8B792FD621F49B7D006E9731</string>
<key>history</key>
<array>
<string>8B0FACF11E6A22F300E0AD36</string>
- <string>8B27211E2173C07300396442</string>
- <string>8B0FAD101E6A27BE00E0AD36</string>
+ <string>8B792FCF21F49B6D006E9731</string>
+ <string>8B792FD121F49B6D006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 126}}</string>
+ <string>{{0, 0}, {636, 430}}</string>
<key>RubberWindowFrame</key>
- <string>599 189 841 654 0 0 1440 878 </string>
+ <string>469 189 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>126pt</string>
+ <string>430pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>482pt</string>
+ <string>178pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 455}}</string>
- <key>RubberWindowFrame</key>
- <string>599 189 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {636, 151}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {636, 151}}</string>
+ <key>RubberWindowFrame</key>
+ <string>469 189 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -462,7 +460,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>636pt</string>
</dict>
</array>
<key>Name</key>
@@ -481,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B2721202173C07300396442</string>
+ <string>8B792FD721F49B7D006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B2721212173C07300396442</string>
+ <string>8B792FD821F49B7D006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B2721222173C07300396442</string>
+ <string>8B792FD921F49B7D006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561234035.39839995</real>
+ <real>569678717.46052098</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -678,7 +676,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Sidepass/Sidepass.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 189 841 654 0 0 1440 878 </string>
+ <string>469 189 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.cpp b/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.cpp
index cf29888..9c0da62 100755
--- a/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.cpp
+++ b/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.cpp
@@ -268,23 +268,15 @@ void SingleEndedTriode::SingleEndedTriodeKernel::Process( const Float32 *inSou
inputSample = (drySample * dry)+(inputSample*wet);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser
index bb8847c..aa2c283 100755
--- a/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 333,
+ 414,
20,
48,
43,
@@ -49,47 +49,64 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 547786625;
- PBXWorkspaceStateSaveDate = 547786625;
+ PBXPerProjectTemplateStateSaveDate = 569678966;
+ PBXWorkspaceStateSaveDate = 569678966;
};
perUserProjectItems = {
- 8B7E3E8820A6930E00482CB5 /* PBXTextBookmark */ = 8B7E3E8820A6930E00482CB5 /* PBXTextBookmark */;
- 8B7E3E8920A6930E00482CB5 /* PBXBookmark */ = 8B7E3E8920A6930E00482CB5 /* PBXBookmark */;
- 8B7E3E8A20A6930E00482CB5 /* PBXTextBookmark */ = 8B7E3E8A20A6930E00482CB5 /* PBXTextBookmark */;
+ 8B792FE521F49D2B006E9731 /* PBXTextBookmark */ = 8B792FE521F49D2B006E9731 /* PBXTextBookmark */;
+ 8B792FE621F49D2B006E9731 /* PBXTextBookmark */ = 8B792FE621F49D2B006E9731 /* PBXTextBookmark */;
+ 8B792FE821F49D2B006E9731 /* PBXTextBookmark */ = 8B792FE821F49D2B006E9731 /* PBXTextBookmark */;
+ 8B792FED21F49D42006E9731 /* PBXTextBookmark */ = 8B792FED21F49D42006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B7E3E8820A6930E00482CB5 /* PBXTextBookmark */ = {
+ 8B792FE521F49D2B006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A690720730100365D66 /* SingleEndedTriodeVersion.h */;
+ name = "SingleEndedTriodeVersion.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 948;
+ vrLoc = 2603;
+ };
+ 8B792FE621F49D2B006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* SingleEndedTriode.h */;
name = "SingleEndedTriode.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 72;
- vrLoc = 0;
+ vrLen = 719;
+ vrLoc = 4915;
};
- 8B7E3E8920A6930E00482CB5 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 8BA05A690720730100365D66 /* SingleEndedTriodeVersion.h */;
+ 8B792FE821F49D2B006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* SingleEndedTriode.cpp */;
+ name = "SingleEndedTriode.cpp: 276";
+ rLen = 0;
+ rLoc = 12119;
+ rType = 0;
+ vrLen = 762;
+ vrLoc = 11445;
};
- 8B7E3E8A20A6930E00482CB5 /* PBXTextBookmark */ = {
+ 8B792FED21F49D42006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A690720730100365D66 /* SingleEndedTriodeVersion.h */;
- name = "SingleEndedTriodeVersion.h: 1";
+ fRef = 8BA05A660720730100365D66 /* SingleEndedTriode.cpp */;
+ name = "SingleEndedTriode.cpp: 276";
rLen = 0;
- rLoc = 0;
+ rLoc = 12119;
rType = 0;
- vrLen = 246;
- vrLoc = 3244;
+ vrLen = 820;
+ vrLoc = 11387;
};
8BA05A660720730100365D66 /* SingleEndedTriode.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1098, 3783}}";
- sepNavSelRange = "{10732, 1057}";
- sepNavVisRange = "{10814, 1886}";
+ sepNavIntBoundsRect = "{{0, 0}, {838, 3900}}";
+ sepNavSelRange = "{12119, 0}";
+ sepNavVisRange = "{11387, 820}";
sepNavWindowFrame = "{{676, 66}, {1145, 812}}";
};
};
@@ -103,16 +120,16 @@
};
8BA05A690720730100365D66 /* SingleEndedTriodeVersion.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 871}}";
+ sepNavIntBoundsRect = "{{0, 0}, {824, 897}}";
sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{3244, 246}";
+ sepNavVisRange = "{2603, 948}";
};
};
8BC6025B073B072D006C4272 /* SingleEndedTriode.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {960, 1885}}";
- sepNavSelRange = "{5481, 20}";
- sepNavVisRange = "{4010, 1624}";
+ sepNavIntBoundsRect = "{{0, 0}, {824, 1885}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRange = "{4915, 719}";
sepNavWindowFrame = "{{676, 59}, {1007, 819}}";
};
};
diff --git a/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3
index e1ec1b0..a047d72 100755
--- a/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>810</integer>
- <integer>810</integer>
+ <integer>867</integer>
+ <integer>867</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>216</real>
+ <real>192</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -307,7 +305,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {216, 428}}</string>
+ <string>{{0, 0}, {192, 549}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -317,19 +315,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {233, 446}}</string>
+ <string>{{0, 0}, {209, 567}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>216</real>
+ <real>192</real>
</array>
<key>RubberWindowFrame</key>
- <string>588 264 810 487 0 0 1440 878 </string>
+ <string>430 203 867 608 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>233pt</string>
+ <string>209pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -340,7 +338,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BBDB967208BF902006F0D04</string>
<key>PBXProjectModuleLabel</key>
- <string>SingleEndedTriodeVersion.h</string>
+ <string>SingleEndedTriode.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -348,15 +346,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BBDB968208BF902006F0D04</string>
<key>PBXProjectModuleLabel</key>
- <string>SingleEndedTriodeVersion.h</string>
+ <string>SingleEndedTriode.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B7E3E8A20A6930E00482CB5</string>
+ <string>8B792FED21F49D42006E9731</string>
<key>history</key>
<array>
- <string>8B7E3E8820A6930E00482CB5</string>
- <string>8B7E3E8920A6930E00482CB5</string>
+ <string>8B792FE521F49D2B006E9731</string>
+ <string>8B792FE621F49D2B006E9731</string>
+ <string>8B792FE821F49D2B006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {572, 102}}</string>
+ <string>{{0, 0}, {653, 410}}</string>
<key>RubberWindowFrame</key>
- <string>588 264 810 487 0 0 1440 878 </string>
+ <string>430 203 867 608 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>102pt</string>
+ <string>410pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>152pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {572, 312}}</string>
- <key>RubberWindowFrame</key>
- <string>588 264 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {653, 125}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {572, 282}}</string>
+ <string>{{10, 27}, {653, 125}}</string>
+ <key>RubberWindowFrame</key>
+ <string>430 203 867 608 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -460,7 +459,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>572pt</string>
+ <string>653pt</string>
</dict>
</array>
<key>Name</key>
@@ -479,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B7E3E8B20A6930E00482CB5</string>
+ <string>8B792FEE21F49D42006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B7E3E8C20A6930E00482CB5</string>
+ <string>8B792FEF21F49D42006E9731</string>
<string>8BBDB967208BF902006F0D04</string>
- <string>8B7E3E8D20A6930E00482CB5</string>
+ <string>8B792FF021F49D42006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>547787534.19024003</real>
+ <real>569679170.50335598</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -656,7 +655,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>588 264 810 487 0 0 1440 878 </string>
+ <string>430 203 867 608 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Slew/Slew.cpp b/plugins/MacAU/Slew/Slew.cpp
index 3c1a7bf..5eee0ab 100755
--- a/plugins/MacAU/Slew/Slew.cpp
+++ b/plugins/MacAU/Slew/Slew.cpp
@@ -159,6 +159,7 @@ ComponentResult Slew::Initialize()
void Slew::SlewKernel::Reset()
{
lastSample = 0.0;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -224,6 +225,12 @@ void Slew::SlewKernel::Process( const Float32 *inSourceP,
outputSample = lastSample - threshold;
lastSample = outputSample;
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)outputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ outputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
+
*destP = outputSample;
destP += inNumChannels;
}
diff --git a/plugins/MacAU/Slew/Slew.exp b/plugins/MacAU/Slew/Slew.exp
index 86851aa..bef4ceb 100755
--- a/plugins/MacAU/Slew/Slew.exp
+++ b/plugins/MacAU/Slew/Slew.exp
@@ -1 +1 @@
-_SlewEntry \ No newline at end of file
+_SlewEntry
diff --git a/plugins/MacAU/Slew/Slew.h b/plugins/MacAU/Slew/Slew.h
index af04876..95bf7c2 100755
--- a/plugins/MacAU/Slew/Slew.h
+++ b/plugins/MacAU/Slew/Slew.h
@@ -113,19 +113,18 @@ public:
: AUKernelBase(inAudioUnit)
{
}
-
- // *Required* overides for the process method for this effect
- // processes one channel of interleaved samples
- virtual void Process( const Float32 *inSourceP,
- Float32 *inDestP,
- UInt32 inFramesToProcess,
- UInt32 inNumChannels,
- bool &ioSilence);
-
- virtual void Reset();
-
- private:
- Float64 lastSample;
+ // *Required* overides for the process method for this effect
+ // processes one channel of interleaved samples
+ virtual void Process( const Float32 *inSourceP,
+ Float32 *inDestP,
+ UInt32 inFramesToProcess,
+ UInt32 inNumChannels,
+ bool &ioSilence);
+ virtual void Reset();
+
+ private:
+ Float64 lastSample;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.pbxuser
index 39b5e1c..4a1badd 100755
--- a/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 364,
+ 482,
20,
48,
43,
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 542412394;
- PBXWorkspaceStateSaveDate = 542412394;
+ PBXPerProjectTemplateStateSaveDate = 569679199;
+ PBXWorkspaceStateSaveDate = 569679199;
};
perUserProjectItems = {
8B38EA761D5BFD02003DFCC5 /* PBXTextBookmark */ = 8B38EA761D5BFD02003DFCC5 /* PBXTextBookmark */;
- 8B44C13C20548E7700B1360B /* PBXTextBookmark */ = 8B44C13C20548E7700B1360B /* PBXTextBookmark */;
- 8B44C13D20548E7700B1360B /* PBXTextBookmark */ = 8B44C13D20548E7700B1360B /* PBXTextBookmark */;
- 8BC032AD1D6667740039F36E /* PBXTextBookmark */ = 8BC032AD1D6667740039F36E /* PBXTextBookmark */;
+ 8B792FFC21F49E37006E9731 /* PBXTextBookmark */ = 8B792FFC21F49E37006E9731 /* PBXTextBookmark */;
+ 8B792FFE21F49E37006E9731 /* PBXTextBookmark */ = 8B792FFE21F49E37006E9731 /* PBXTextBookmark */;
+ 8B79300821F49E6B006E9731 /* PBXTextBookmark */ = 8B79300821F49E6B006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -72,34 +72,52 @@
vrLen = 210;
vrLoc = 3192;
};
- 8B44C13C20548E7700B1360B /* PBXTextBookmark */ = {
+ 8B792FFC21F49E37006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* Slew.h */;
+ name = "Slew.h: 125";
+ rLen = 0;
+ rLoc = 4951;
+ rType = 0;
+ vrLen = 940;
+ vrLoc = 4175;
+ };
+ 8B792FFE21F49E37006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Slew.cpp */;
- name = "Slew.cpp: 219";
- rLen = 230;
- rLoc = 9710;
+ name = "Slew.cpp: 231";
+ rLen = 0;
+ rLoc = 10148;
rType = 0;
- vrLen = 0;
- vrLoc = 0;
+ vrLen = 1188;
+ vrLoc = 9084;
};
- 8B44C13D20548E7700B1360B /* PBXTextBookmark */ = {
+ 8B79300821F49E6B006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Slew.cpp */;
- name = "Slew.cpp: 219";
- rLen = 230;
- rLoc = 9710;
+ name = "Slew.cpp: 231";
+ rLen = 0;
+ rLoc = 10148;
rType = 0;
- vrLen = 0;
- vrLoc = 0;
+ vrLen = 1237;
+ vrLoc = 9035;
};
8BA05A660720730100365D66 /* Slew.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 3094}}";
- sepNavSelRange = "{9710, 230}";
- sepNavVisRange = "{0, 0}";
+ sepNavIntBoundsRect = "{{0, 0}, {964, 3263}}";
+ sepNavSelRange = "{10148, 0}";
+ sepNavVisRange = "{9035, 1237}";
sepNavWindowFrame = "{{545, 47}, {895, 831}}";
};
};
+ 8BA05A670720730100365D66 /* Slew.exp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}";
+ sepNavSelRange = "{11, 0}";
+ sepNavVisRange = "{0, 11}";
+ sepNavWindowFrame = "{{15, 51}, {1300, 822}}";
+ };
+ };
8BA05A690720730100365D66 /* SlewVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {824, 897}}";
@@ -107,21 +125,11 @@
sepNavVisRange = "{3192, 210}";
};
};
- 8BC032AD1D6667740039F36E /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Slew.h */;
- name = "Slew.h: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 180;
- vrLoc = 3047;
- };
8BC6025B073B072D006C4272 /* Slew.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {862, 1755}}";
- sepNavSelRange = "{4988, 23}";
- sepNavVisRange = "{3399, 1721}";
+ sepNavIntBoundsRect = "{{0, 0}, {810, 2015}}";
+ sepNavSelRange = "{4951, 0}";
+ sepNavVisRange = "{4175, 940}";
sepNavWindowFrame = "{{492, 40}, {909, 838}}";
};
};
diff --git a/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3
index 39ac062..59e0c29 100755
--- a/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>928</integer>
+ <integer>928</integer>
</array>
<key>Perspectives</key>
<array>
@@ -300,14 +300,14 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>5</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {185, 428}}</string>
+ <string>{{0, 0}, {185, 685}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -317,14 +317,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {202, 446}}</string>
+ <string>{{0, 0}, {202, 703}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>620 384 810 487 0 0 1440 878 </string>
+ <string>365 99 928 744 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,12 +352,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B44C13D20548E7700B1360B</string>
+ <string>8B79300821F49E6B006E9731</string>
<key>history</key>
<array>
<string>8B38EA761D5BFD02003DFCC5</string>
- <string>8BC032AD1D6667740039F36E</string>
- <string>8B44C13C20548E7700B1360B</string>
+ <string>8B792FFC21F49E37006E9731</string>
+ <string>8B792FFE21F49E37006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {721, 468}}</string>
<key>RubberWindowFrame</key>
- <string>620 384 810 487 0 0 1440 878 </string>
+ <string>365 99 928 744 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>468pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>230pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
- <key>RubberWindowFrame</key>
- <string>620 384 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {721, 203}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {721, 203}}</string>
+ <key>RubberWindowFrame</key>
+ <string>365 99 928 744 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -461,7 +461,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>603pt</string>
+ <string>721pt</string>
</dict>
</array>
<key>Name</key>
@@ -480,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B44C13E20548E7700B1360B</string>
+ <string>8B79300921F49E6B006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B44C13F20548E7700B1360B</string>
+ <string>8B79300A21F49E6B006E9731</string>
<string>8B38EA371D5BF603003DFCC5</string>
- <string>8B44C14020548E7700B1360B</string>
+ <string>8B79300B21F49E6B006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -637,7 +637,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>542412407.33123505</real>
+ <real>569679467.91034496</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -654,11 +654,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B44C14120548E7700B1360B</string>
+ <string>8B79300C21F49E6B006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Slew/Slew.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>620 384 810 487 0 0 1440 878 </string>
+ <string>365 99 928 744 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Slew2/Slew2.cpp b/plugins/MacAU/Slew2/Slew2.cpp
index 06a128a..d9a5093 100755
--- a/plugins/MacAU/Slew2/Slew2.cpp
+++ b/plugins/MacAU/Slew2/Slew2.cpp
@@ -164,8 +164,8 @@ void Slew2::Slew2Kernel::Reset()
ataUpsampleHighTweak = 0.0414213562373095048801688; //more adds treble to upsampling
ataDecay = 0.915965594177219015; //Catalan's constant, more adds focus and clarity
ataFlip = false; //end reset of antialias parameters
- demotimer = 0;
lastSample = 0.0;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -255,6 +255,12 @@ void Slew2::Slew2Kernel::Process( const Float32 *inSourceP,
ataPrevDiffSample = ataDiffSample / 2.0;
//apply processing as difference to non-oversampled raw input
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
+
*destP = inputSample;
//built in output trim and dry/wet by default
diff --git a/plugins/MacAU/Slew2/Slew2.h b/plugins/MacAU/Slew2/Slew2.h
index 236a415..4e16def 100755
--- a/plugins/MacAU/Slew2/Slew2.h
+++ b/plugins/MacAU/Slew2/Slew2.h
@@ -140,8 +140,8 @@ public:
Float64 ataDiffSample;
Float64 ataPrevDiffSample;
bool ataFlip; //end defining of antialiasing variables
- int demotimer;
Float64 lastSample;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser
index c33013d..d905aae 100755
--- a/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 364,
+ 427,
20,
48,
43,
@@ -49,13 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528457914;
- PBXWorkspaceStateSaveDate = 528457914;
+ PBXPerProjectTemplateStateSaveDate = 569679497;
+ PBXWorkspaceStateSaveDate = 569679497;
};
perUserProjectItems = {
8B41AFAA1DA1D3B100555FA2 /* PBXTextBookmark */ = 8B41AFAA1DA1D3B100555FA2 /* PBXTextBookmark */;
- 8B9D670A1F7C8F10007AB60F /* PBXTextBookmark */ = 8B9D670A1F7C8F10007AB60F /* PBXTextBookmark */;
- 8B9D760A1F7FA10A007AB60F /* PBXTextBookmark */ = 8B9D760A1F7FA10A007AB60F /* PBXTextBookmark */;
+ 8B79301821F49F45006E9731 /* PBXTextBookmark */ = 8B79301821F49F45006E9731 /* PBXTextBookmark */;
+ 8B79301A21F49F45006E9731 /* PBXTextBookmark */ = 8B79301A21F49F45006E9731 /* PBXTextBookmark */;
+ 8B79301F21F49F56006E9731 /* PBXTextBookmark */ = 8B79301F21F49F56006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -71,31 +72,41 @@
vrLen = 12;
vrLoc = 0;
};
- 8B9D670A1F7C8F10007AB60F /* PBXTextBookmark */ = {
+ 8B79301821F49F45006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Slew2.h */;
- name = "Slew2.h: 126";
+ name = "Slew2.h: 143";
rLen = 0;
- rLoc = 4945;
+ rLoc = 5356;
rType = 0;
- vrLen = 78;
- vrLoc = 2972;
+ vrLen = 948;
+ vrLoc = 4563;
};
- 8B9D760A1F7FA10A007AB60F /* PBXTextBookmark */ = {
+ 8B79301A21F49F45006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Slew2.h */;
- name = "Slew2.h: 126";
+ fRef = 8BA05A660720730100365D66 /* Slew2.cpp */;
+ name = "Slew2.cpp: 263";
+ rLen = 0;
+ rLoc = 12140;
+ rType = 0;
+ vrLen = 1567;
+ vrLoc = 10707;
+ };
+ 8B79301F21F49F56006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Slew2.cpp */;
+ name = "Slew2.cpp: 263";
rLen = 0;
- rLoc = 4945;
+ rLoc = 12140;
rType = 0;
- vrLen = 70;
- vrLoc = 2980;
+ vrLen = 1613;
+ vrLoc = 10661;
};
8BA05A660720730100365D66 /* Slew2.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1027, 3497}}";
- sepNavSelRange = "{8581, 0}";
- sepNavVisRange = "{8239, 2561}";
+ sepNavIntBoundsRect = "{{0, 0}, {1027, 3575}}";
+ sepNavSelRange = "{12140, 0}";
+ sepNavVisRange = "{10661, 1613}";
sepNavWindowFrame = "{{548, 41}, {892, 828}}";
};
};
@@ -116,9 +127,9 @@
};
8BC6025B073B072D006C4272 /* Slew2.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 2119}}";
- sepNavSelRange = "{4945, 0}";
- sepNavVisRange = "{2980, 70}";
+ sepNavIntBoundsRect = "{{0, 0}, {922, 2301}}";
+ sepNavSelRange = "{5356, 0}";
+ sepNavVisRange = "{4563, 948}";
sepNavWindowFrame = "{{548, 50}, {892, 828}}";
};
};
diff --git a/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3
index 4765fda..43df8cf 100755
--- a/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>835</integer>
+ <integer>835</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>185</real>
+ <real>147</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -307,7 +305,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {185, 428}}</string>
+ <string>{{0, 0}, {147, 699}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -317,19 +315,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {202, 446}}</string>
+ <string>{{0, 0}, {164, 717}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>185</real>
+ <real>147</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 353 810 487 0 0 1440 878 </string>
+ <string>433 98 835 758 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>202pt</string>
+ <string>164pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -340,7 +338,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B41AF5A1DA1CCC700555FA2</string>
<key>PBXProjectModuleLabel</key>
- <string>Slew2.h</string>
+ <string>Slew2.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -348,15 +346,16 @@
<key>PBXProjectModuleGUID</key>
<string>8B41AF5B1DA1CCC700555FA2</string>
<key>PBXProjectModuleLabel</key>
- <string>Slew2.h</string>
+ <string>Slew2.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D760A1F7FA10A007AB60F</string>
+ <string>8B79301F21F49F56006E9731</string>
<key>history</key>
<array>
<string>8B41AFAA1DA1D3B100555FA2</string>
- <string>8B9D670A1F7C8F10007AB60F</string>
+ <string>8B79301821F49F45006E9731</string>
+ <string>8B79301A21F49F45006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {666, 538}}</string>
<key>RubberWindowFrame</key>
- <string>630 353 810 487 0 0 1440 878 </string>
+ <string>433 98 835 758 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>538pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>174pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
- <key>RubberWindowFrame</key>
- <string>630 353 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {666, 147}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {666, 147}}</string>
+ <key>RubberWindowFrame</key>
+ <string>433 98 835 758 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -460,7 +459,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>603pt</string>
+ <string>666pt</string>
</dict>
</array>
<key>Name</key>
@@ -479,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D760B1F7FA10A007AB60F</string>
+ <string>8B79302021F49F56006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D760C1F7FA10A007AB60F</string>
+ <string>8B79302121F49F56006E9731</string>
<string>8B41AF5A1DA1CCC700555FA2</string>
- <string>8B9D760D1F7FA10A007AB60F</string>
+ <string>8B79302221F49F56006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528457994.05700201</real>
+ <real>569679702.44383299</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +652,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D760E1F7FA10A007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Slew2/Slew2.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 353 810 487 0 0 1440 878 </string>
+ <string>433 98 835 758 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/SlewOnly/SlewOnly.cpp b/plugins/MacAU/SlewOnly/SlewOnly.cpp
index a29bf57..1cd7a74 100755
--- a/plugins/MacAU/SlewOnly/SlewOnly.cpp
+++ b/plugins/MacAU/SlewOnly/SlewOnly.cpp
@@ -151,6 +151,7 @@ ComponentResult SlewOnly::Initialize()
void SlewOnly::SlewOnlyKernel::Reset()
{
lastSample = 0.0;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -201,6 +202,13 @@ void SlewOnly::SlewOnlyKernel::Process( const Float32 *inSourceP,
lastSample = inputSample;
if (outputSample > 1.0) outputSample = 1.0;
if (outputSample < -1.0) outputSample = -1.0;
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)outputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ outputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
+
*destP = outputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
diff --git a/plugins/MacAU/SlewOnly/SlewOnly.exp b/plugins/MacAU/SlewOnly/SlewOnly.exp
index b3b34fe..af27a2b 100755
--- a/plugins/MacAU/SlewOnly/SlewOnly.exp
+++ b/plugins/MacAU/SlewOnly/SlewOnly.exp
@@ -1 +1 @@
-_SlewOnlyEntry \ No newline at end of file
+_SlewOnlyEntry
diff --git a/plugins/MacAU/SlewOnly/SlewOnly.h b/plugins/MacAU/SlewOnly/SlewOnly.h
index 39c3835..8b31092 100755
--- a/plugins/MacAU/SlewOnly/SlewOnly.h
+++ b/plugins/MacAU/SlewOnly/SlewOnly.h
@@ -122,6 +122,7 @@ public:
private:
Float64 lastSample;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser
index 1d4d6bd..2ef6ab9 100755
--- a/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 364,
+ 449,
20,
48,
43,
@@ -49,68 +49,87 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528458003;
- PBXWorkspaceStateSaveDate = 528458003;
+ PBXPerProjectTemplateStateSaveDate = 569679830;
+ PBXWorkspaceStateSaveDate = 569679830;
};
perUserProjectItems = {
- 8B37E0391D70A73000DB4EC7 /* PBXTextBookmark */ = 8B37E0391D70A73000DB4EC7 /* PBXTextBookmark */;
- 8B9D671D1F7C8F37007AB60F /* PBXTextBookmark */ = 8B9D671D1F7C8F37007AB60F /* PBXTextBookmark */;
- 8B9D76191F7FA162007AB60F /* PBXTextBookmark */ = 8B9D76191F7FA162007AB60F /* PBXTextBookmark */;
+ 8B79302E21F4A032006E9731 /* PBXTextBookmark */ = 8B79302E21F4A032006E9731 /* PBXTextBookmark */;
+ 8B79302F21F4A032006E9731 /* PBXTextBookmark */ = 8B79302F21F4A032006E9731 /* PBXTextBookmark */;
+ 8B79303121F4A032006E9731 /* PBXTextBookmark */ = 8B79303121F4A032006E9731 /* PBXTextBookmark */;
+ 8B79303B21F4A0A3006E9731 /* PBXTextBookmark */ = 8B79303B21F4A0A3006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B37E0391D70A73000DB4EC7 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* SlewOnly.cpp */;
- name = "SlewOnly.cpp: 153";
- rLen = 19;
- rLoc = 6827;
- rType = 0;
- vrLen = 380;
- vrLoc = 6692;
- };
- 8B9D671D1F7C8F37007AB60F /* PBXTextBookmark */ = {
+ 8B79302E21F4A032006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* SlewOnlyVersion.h */;
name = "SlewOnlyVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 281;
+ vrLen = 171;
vrLoc = 3098;
};
- 8B9D76191F7FA162007AB60F /* PBXTextBookmark */ = {
+ 8B79302F21F4A032006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A690720730100365D66 /* SlewOnlyVersion.h */;
- name = "SlewOnlyVersion.h: 1";
+ fRef = 8BC6025B073B072D006C4272 /* SlewOnly.h */;
+ name = "SlewOnly.h: 125";
rLen = 0;
- rLoc = 0;
+ rLoc = 4852;
rType = 0;
- vrLen = 208;
- vrLoc = 3098;
+ vrLen = 1128;
+ vrLoc = 3828;
+ };
+ 8B79303121F4A032006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* SlewOnly.cpp */;
+ name = "SlewOnly.cpp: 209";
+ rLen = 0;
+ rLoc = 9458;
+ rType = 0;
+ vrLen = 1694;
+ vrLoc = 7914;
+ };
+ 8B79303B21F4A0A3006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* SlewOnly.cpp */;
+ name = "SlewOnly.cpp: 209";
+ rLen = 0;
+ rLoc = 9458;
+ rType = 0;
+ vrLen = 1782;
+ vrLoc = 7826;
};
8BA05A660720730100365D66 /* SlewOnly.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {974, 2821}}";
- sepNavSelRange = "{9074, 0}";
- sepNavVisRange = "{6942, 2391}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 2847}}";
+ sepNavSelRange = "{9458, 0}";
+ sepNavVisRange = "{7826, 1782}";
sepNavWindowFrame = "{{331, 78}, {1021, 800}}";
};
};
+ 8BA05A670720730100365D66 /* SlewOnly.exp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}";
+ sepNavSelRange = "{15, 0}";
+ sepNavVisRange = "{0, 15}";
+ sepNavWindowFrame = "{{15, 51}, {1300, 822}}";
+ };
+ };
8BA05A690720730100365D66 /* SlewOnlyVersion.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {754, 1014}}";
+ sepNavIntBoundsRect = "{{0, 0}, {754, 988}}";
sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{3098, 208}";
+ sepNavVisRange = "{3098, 171}";
};
};
8BC6025B073B072D006C4272 /* SlewOnly.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {974, 1703}}";
- sepNavSelRange = "{4807, 22}";
- sepNavVisRange = "{3392, 1546}";
+ sepNavIntBoundsRect = "{{0, 0}, {824, 1872}}";
+ sepNavSelRange = "{4852, 0}";
+ sepNavVisRange = "{3828, 1128}";
sepNavWindowFrame = "{{379, 78}, {1021, 800}}";
};
};
diff --git a/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3
index b4c32b3..6f61421 100755
--- a/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>895</integer>
+ <integer>895</integer>
</array>
<key>Perspectives</key>
<array>
@@ -300,14 +300,14 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>5</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {185, 428}}</string>
+ <string>{{0, 0}, {185, 656}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -317,14 +317,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {202, 446}}</string>
+ <string>{{0, 0}, {202, 674}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>587 314 810 487 0 0 1440 878 </string>
+ <string>417 141 895 715 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -340,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B37E0371D70A73000DB4EC7</string>
<key>PBXProjectModuleLabel</key>
- <string>SlewOnlyVersion.h</string>
+ <string>SlewOnly.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -348,15 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8B37E0381D70A73000DB4EC7</string>
<key>PBXProjectModuleLabel</key>
- <string>SlewOnlyVersion.h</string>
+ <string>SlewOnly.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D76191F7FA162007AB60F</string>
+ <string>8B79303B21F4A0A3006E9731</string>
<key>history</key>
<array>
- <string>8B37E0391D70A73000DB4EC7</string>
- <string>8B9D671D1F7C8F37007AB60F</string>
+ <string>8B79302E21F4A032006E9731</string>
+ <string>8B79302F21F4A032006E9731</string>
+ <string>8B79303121F4A032006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 86}}</string>
+ <string>{{0, 0}, {688, 543}}</string>
<key>RubberWindowFrame</key>
- <string>587 314 810 487 0 0 1440 878 </string>
+ <string>417 141 895 715 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>86pt</string>
+ <string>543pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>355pt</string>
+ <string>126pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
- <key>RubberWindowFrame</key>
- <string>587 314 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {688, 99}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {688, 99}}</string>
+ <key>RubberWindowFrame</key>
+ <string>417 141 895 715 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -460,7 +461,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>603pt</string>
+ <string>688pt</string>
</dict>
</array>
<key>Name</key>
@@ -479,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D761A1F7FA162007AB60F</string>
+ <string>8B79303C21F4A0A3006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D761B1F7FA162007AB60F</string>
+ <string>8B79303D21F4A0A3006E9731</string>
<string>8B37E0371D70A73000DB4EC7</string>
- <string>8B9D761C1F7FA162007AB60F</string>
+ <string>8B79303E21F4A0A3006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +637,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528458082.578906</real>
+ <real>569680035.79594803</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +654,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D761D1F7FA162007AB60F</string>
+ <string>8B79303F21F4A0A3006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/SlewOnly/SlewOnly.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>587 314 810 487 0 0 1440 878 </string>
+ <string>417 141 895 715 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Spiral/Spiral.cpp b/plugins/MacAU/Spiral/Spiral.cpp
index 77ae93f..0dab386 100755
--- a/plugins/MacAU/Spiral/Spiral.cpp
+++ b/plugins/MacAU/Spiral/Spiral.cpp
@@ -194,23 +194,15 @@ void Spiral::SpiralKernel::Process( const Float32 *inSourceP,
inputSample = sin(inputSample * fabs(inputSample)) / ((inputSample == 0.0) ?1:fabs(inputSample));
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser
index 574956e..f03d75b 100755
--- a/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 419,
20,
48,
43,
@@ -49,31 +49,62 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 548241334;
- PBXWorkspaceStateSaveDate = 548241334;
+ PBXPerProjectTemplateStateSaveDate = 569680086;
+ PBXWorkspaceStateSaveDate = 569680086;
};
perUserProjectItems = {
+ 8B79304B21F4A1E5006E9731 /* PBXTextBookmark */ = 8B79304B21F4A1E5006E9731 /* PBXTextBookmark */;
+ 8B79304D21F4A1E5006E9731 /* PBXTextBookmark */ = 8B79304D21F4A1E5006E9731 /* PBXTextBookmark */;
+ 8B79305221F4A238006E9731 /* PBXTextBookmark */ = 8B79305221F4A238006E9731 /* PBXTextBookmark */;
8BBFF81D20AD8037005650EF /* PlistBookmark */ = 8BBFF81D20AD8037005650EF /* PlistBookmark */;
- 8BBFF81E20AD8037005650EF /* PBXBookmark */ = 8BBFF81E20AD8037005650EF /* PBXBookmark */;
- 8BBFF81F20AD8037005650EF /* PBXTextBookmark */ = 8BBFF81F20AD8037005650EF /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B79304B21F4A1E5006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* Spiral.h */;
+ name = "Spiral.h: 59";
+ rLen = 0;
+ rLoc = 2862;
+ rType = 0;
+ vrLen = 684;
+ vrLoc = 4289;
+ };
+ 8B79304D21F4A1E5006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Spiral.cpp */;
+ name = "Spiral.cpp: 207";
+ rLen = 0;
+ rLoc = 8720;
+ rType = 0;
+ vrLen = 980;
+ vrLoc = 7743;
+ };
+ 8B79305221F4A238006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Spiral.cpp */;
+ name = "Spiral.cpp: 207";
+ rLen = 0;
+ rLoc = 8720;
+ rType = 0;
+ vrLen = 1029;
+ vrLoc = 7694;
+ };
8BA05A660720730100365D66 /* Spiral.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 2821}}";
- sepNavSelRange = "{8229, 152}";
- sepNavVisRange = "{7230, 1988}";
- sepNavWindowFrame = "{{15, 52}, {850, 821}}";
+ sepNavIntBoundsRect = "{{0, 0}, {747, 2873}}";
+ sepNavSelRange = "{8720, 0}";
+ sepNavVisRange = "{7694, 1029}";
+ sepNavWindowFrame = "{{590, 57}, {850, 821}}";
};
};
8BA05A690720730100365D66 /* SpiralVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {824, 767}}";
- sepNavSelRange = "{2869, 0}";
- sepNavVisRange = "{49, 2888}";
+ sepNavSelRange = "{2870, 4}";
+ sepNavVisRange = "{31, 2906}";
sepNavWindowFrame = "{{15, 52}, {850, 821}}";
};
};
@@ -87,28 +118,14 @@
);
name = /Users/christopherjohnson/Desktop/MacAU/Spiral/Info.plist;
rLen = 0;
- rLoc = 9223372036854775807;
- };
- 8BBFF81E20AD8037005650EF /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Spiral.h */;
- };
- 8BBFF81F20AD8037005650EF /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Spiral.h */;
- name = "Spiral.h: 59";
- rLen = 0;
- rLoc = 2862;
- rType = 0;
- vrLen = 583;
- vrLoc = 3295;
+ rLoc = 9223372036854775808;
};
8BC6025B073B072D006C4272 /* Spiral.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1807}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1677}}";
sepNavSelRange = "{2862, 0}";
- sepNavVisRange = "{3295, 583}";
- sepNavWindowFrame = "{{15, 52}, {850, 821}}";
+ sepNavVisRange = "{4289, 684}";
+ sepNavWindowFrame = "{{609, 57}, {850, 821}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3
index fdfc41a..61ccad2 100755
--- a/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>161</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -309,7 +307,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {161, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -319,19 +317,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {178, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>161</real>
</array>
<key>RubberWindowFrame</key>
- <string>16 205 841 654 0 0 1440 878 </string>
+ <string>472 182 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>178pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -342,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Spiral.h</string>
+ <string>Spiral.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -350,15 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Spiral.h</string>
+ <string>Spiral.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBFF81F20AD8037005650EF</string>
+ <string>8B79305221F4A238006E9731</string>
<key>history</key>
<array>
<string>8BBFF81D20AD8037005650EF</string>
- <string>8BBFF81E20AD8037005650EF</string>
+ <string>8B79304B21F4A1E5006E9731</string>
+ <string>8B79304D21F4A1E5006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 229}}</string>
+ <string>{{0, 0}, {658, 432}}</string>
<key>RubberWindowFrame</key>
- <string>16 205 841 654 0 0 1440 878 </string>
+ <string>472 182 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>229pt</string>
+ <string>432pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>379pt</string>
+ <string>176pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 352}}</string>
- <key>RubberWindowFrame</key>
- <string>16 205 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {658, 149}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {658, 149}}</string>
+ <key>RubberWindowFrame</key>
+ <string>472 182 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -462,7 +461,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>658pt</string>
</dict>
</array>
<key>Name</key>
@@ -481,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBFF82020AD8037005650EF</string>
+ <string>8B79305321F4A238006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBFF82120AD8037005650EF</string>
+ <string>8B79305421F4A238006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BBFF82220AD8037005650EF</string>
+ <string>8B79305521F4A238006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>548241463.28044701</real>
+ <real>569680440.94942403</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,11 +674,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBFF82320AD8037005650EF</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Spiral/Spiral.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>16 205 841 654 0 0 1440 878 </string>
+ <string>472 182 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Spiral2/Spiral2.cpp b/plugins/MacAU/Spiral2/Spiral2.cpp
index a4051e6..90e5478 100755
--- a/plugins/MacAU/Spiral2/Spiral2.cpp
+++ b/plugins/MacAU/Spiral2/Spiral2.cpp
@@ -274,23 +274,15 @@ void Spiral2::Spiral2Kernel::Process( const Float32 *inSourceP,
prevSample = drySample;
flip = !flip;
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser
index 0ac0f78..2e39dac 100755
--- a/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553978426;
- PBXWorkspaceStateSaveDate = 553978426;
+ PBXPerProjectTemplateStateSaveDate = 569680528;
+ PBXWorkspaceStateSaveDate = 569680528;
};
perUserProjectItems = {
8B241CC221016728001BBF7E /* PlistBookmark */ = 8B241CC221016728001BBF7E /* PlistBookmark */;
- 8BB8B7382103A9CC00751000 /* PBXTextBookmark */ = 8BB8B7382103A9CC00751000 /* PBXTextBookmark */;
- 8BBD1839210525AE0015A233 /* PBXTextBookmark */ = 8BBD1839210525AE0015A233 /* PBXTextBookmark */;
- 8BBD183A210525AE0015A233 /* PBXTextBookmark */ = 8BBD183A210525AE0015A233 /* PBXTextBookmark */;
+ 8B79306121F4A306006E9731 /* PBXTextBookmark */ = 8B79306121F4A306006E9731 /* PBXTextBookmark */;
+ 8B79306321F4A306006E9731 /* PBXTextBookmark */ = 8B79306321F4A306006E9731 /* PBXTextBookmark */;
+ 8B79306821F4A31F006E9731 /* PBXTextBookmark */ = 8B79306821F4A31F006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -74,57 +74,57 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8BA05A660720730100365D66 /* Spiral2.cpp */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {656, 3978}}";
- sepNavSelRange = "{9851, 0}";
- sepNavVisRange = "{9227, 533}";
- sepNavWindowFrame = "{{589, 57}, {850, 821}}";
- };
- };
- 8BA05A690720730100365D66 /* Spiral2Version.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 767}}";
- sepNavSelRange = "{2880, 0}";
- sepNavVisRange = "{50, 2893}";
- sepNavWindowFrame = "{{643, 57}, {850, 821}}";
- };
- };
- 8BB8B7382103A9CC00751000 /* PBXTextBookmark */ = {
+ 8B79306121F4A306006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Spiral2.h */;
name = "Spiral2.h: 68";
rLen = 0;
rLoc = 3361;
rType = 0;
- vrLen = 396;
- vrLoc = 3238;
+ vrLen = 777;
+ vrLoc = 5062;
};
- 8BBD1839210525AE0015A233 /* PBXTextBookmark */ = {
+ 8B79306321F4A306006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Spiral2.cpp */;
- name = "Spiral2.cpp: 216";
+ name = "Spiral2.cpp: 287";
rLen = 0;
- rLoc = 9851;
+ rLoc = 12341;
rType = 0;
- vrLen = 533;
- vrLoc = 9227;
+ vrLen = 1221;
+ vrLoc = 11123;
};
- 8BBD183A210525AE0015A233 /* PBXTextBookmark */ = {
+ 8B79306821F4A31F006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Spiral2.cpp */;
- name = "Spiral2.cpp: 216";
+ name = "Spiral2.cpp: 287";
rLen = 0;
- rLoc = 9851;
+ rLoc = 12341;
rType = 0;
- vrLen = 533;
- vrLoc = 9227;
+ vrLen = 1228;
+ vrLoc = 11116;
+ };
+ 8BA05A660720730100365D66 /* Spiral2.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {831, 3978}}";
+ sepNavSelRange = "{12341, 0}";
+ sepNavVisRange = "{11116, 1228}";
+ sepNavWindowFrame = "{{589, 57}, {850, 821}}";
+ };
+ };
+ 8BA05A690720730100365D66 /* Spiral2Version.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {824, 767}}";
+ sepNavSelRange = "{2880, 0}";
+ sepNavVisRange = "{50, 2893}";
+ sepNavWindowFrame = "{{643, 57}, {850, 821}}";
+ };
};
8BC6025B073B072D006C4272 /* Spiral2.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1976}}";
- sepNavSelRange = "{5615, 115}";
- sepNavVisRange = "{4246, 1593}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2028}}";
+ sepNavSelRange = "{3361, 0}";
+ sepNavVisRange = "{5062, 777}";
sepNavWindowFrame = "{{590, 57}, {850, 821}}";
};
};
diff --git a/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3
index a91b03c..f083372 100755
--- a/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -326,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>576 199 841 654 0 0 1440 878 </string>
+ <string>456 204 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -354,12 +352,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBD183A210525AE0015A233</string>
+ <string>8B79306821F4A31F006E9731</string>
<key>history</key>
<array>
<string>8B241CC221016728001BBF7E</string>
- <string>8BB8B7382103A9CC00751000</string>
- <string>8BBD1839210525AE0015A233</string>
+ <string>8B79306121F4A306006E9731</string>
+ <string>8B79306321F4A306006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 173}}</string>
+ <string>{{0, 0}, {531, 481}}</string>
<key>RubberWindowFrame</key>
- <string>576 199 841 654 0 0 1440 878 </string>
+ <string>456 204 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>173pt</string>
+ <string>481pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>435pt</string>
+ <string>127pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 408}}</string>
- <key>RubberWindowFrame</key>
- <string>576 199 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 100}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {531, 100}}</string>
+ <key>RubberWindowFrame</key>
+ <string>456 204 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -482,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBD183B210525AE0015A233</string>
+ <string>8B79306921F4A31F006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBD183C210525AE0015A233</string>
+ <string>8B79306A21F4A31F006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BBD183D210525AE0015A233</string>
+ <string>8B79306B21F4A31F006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553985454.98206902</real>
+ <real>569680671.35491204</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -679,7 +677,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Spiral2/Spiral2.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>576 199 841 654 0 0 1440 878 </string>
+ <string>456 204 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/StarChild/StarChild.cpp b/plugins/MacAU/StarChild/StarChild.cpp
index 7a434e9..61959c8 100755
--- a/plugins/MacAU/StarChild/StarChild.cpp
+++ b/plugins/MacAU/StarChild/StarChild.cpp
@@ -237,13 +237,8 @@ ComponentResult StarChild::Reset(AudioUnitScope inScope, AudioUnitElement inEle
increment = 1;
dutyCycle = 1;
- demotimer = 0;
-
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
return noErr;
}
@@ -262,9 +257,6 @@ OSStatus StarChild::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData);
Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData);
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
UInt32 nSampleFrames = inFramesToProcess;
Float32 drySampleL;
@@ -283,8 +275,6 @@ OSStatus StarChild::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
//let's try making it always be the max delay: smaller range forces scale to be longer
Float32 outputPad = 4 * rangeDirect * sqrt(rangeDirect);
-
-
Float32 overallscale = ((1.0-GetParameter( kParam_Two ))*9.0)+1.0;
//apply the singlestage groove wear strongest when bits are heavily crushed
Float32 gain = overallscale;
@@ -314,9 +304,6 @@ OSStatus StarChild::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
//and now it's neatly scaled, too
Float32 accumulatorSample;
Float32 correction;
-
-
-
Float32 wetness = GetParameter( kParam_Three );
Float32 dryness = 1.0 - wetness; //reverb setup
@@ -644,25 +631,14 @@ OSStatus StarChild::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
drySampleR += inputSampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = drySampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((drySampleL-fpTemp)*fpNew);
- drySampleL += fpNShapeAL;
- fpTemp = drySampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((drySampleR-fpTemp)*fpNew);
- drySampleR += fpNShapeAR;
- }
- else {
- fpTemp = drySampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((drySampleL-fpTemp)*fpNew);
- drySampleL += fpNShapeBL;
- fpTemp = drySampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((drySampleR-fpTemp)*fpNew);
- drySampleR += fpNShapeBR;
- }
- fpFlip = not fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)drySampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ drySampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)drySampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ drySampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = drySampleL;
*outputR = drySampleR;
diff --git a/plugins/MacAU/StarChild/StarChild.h b/plugins/MacAU/StarChild/StarChild.h
index 75df690..239daef 100755
--- a/plugins/MacAU/StarChild/StarChild.h
+++ b/plugins/MacAU/StarChild/StarChild.h
@@ -116,9 +116,6 @@ public:
virtual ComponentResult Version() { return kStarChildVersion; }
private:
-
- int demotimer;
-
Float32 d[45102];
UInt32 dCount;
@@ -136,14 +133,8 @@ private:
Float64 wearLPrev;
Float64 wearRPrev;
- Float64 fpNShapeAL;
- Float64 fpNShapeAR;
- Float64 fpNShapeBL;
- Float64 fpNShapeBR;
- // Float64 fpNShapeA;
- // Float64 fpNShapeB;
- bool fpFlip;
-
+ long double fpNShapeR;
+ long double fpNShapeL;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser
index 7cefddd..479a352 100755
--- a/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 364,
+ 430,
20,
48,
43,
@@ -49,42 +49,53 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528458151;
- PBXWorkspaceStateSaveDate = 528458151;
+ PBXPerProjectTemplateStateSaveDate = 569680704;
+ PBXWorkspaceStateSaveDate = 569680704;
};
perUserProjectItems = {
- 8B9D67441F7C8F7E007AB60F /* PBXTextBookmark */ = 8B9D67441F7C8F7E007AB60F /* PBXTextBookmark */;
- 8B9D76381F7FA215007AB60F /* PBXTextBookmark */ = 8B9D76381F7FA215007AB60F /* PBXTextBookmark */;
+ 8B79307721F4A440006E9731 /* PBXTextBookmark */ = 8B79307721F4A440006E9731 /* PBXTextBookmark */;
+ 8B79307921F4A440006E9731 /* PBXTextBookmark */ = 8B79307921F4A440006E9731 /* PBXTextBookmark */;
+ 8B79307E21F4A491006E9731 /* PBXTextBookmark */ = 8B79307E21F4A491006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D67441F7C8F7E007AB60F /* PBXTextBookmark */ = {
+ 8B79307721F4A440006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* StarChild.h */;
- name = "StarChild.h: 122";
- rLen = 35;
- rLoc = 5120;
+ name = "StarChild.h: 119";
+ rLen = 0;
+ rLoc = 5101;
rType = 0;
- vrLen = 71;
- vrLoc = 5102;
+ vrLen = 1029;
+ vrLoc = 4501;
};
- 8B9D76381F7FA215007AB60F /* PBXTextBookmark */ = {
+ 8B79307921F4A440006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* StarChild.h */;
- name = "StarChild.h: 122";
- rLen = 35;
- rLoc = 5120;
+ fRef = 8BA05A660720730100365D66 /* StarChild.cpp */;
+ name = "StarChild.cpp: 650";
+ rLen = 0;
+ rLoc = 38428;
+ rType = 0;
+ vrLen = 1146;
+ vrLoc = 37584;
+ };
+ 8B79307E21F4A491006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* StarChild.cpp */;
+ name = "StarChild.cpp: 260";
+ rLen = 0;
+ rLoc = 12080;
rType = 0;
- vrLen = 55;
- vrLoc = 5118;
+ vrLen = 1508;
+ vrLoc = 11340;
};
8BA05A660720730100365D66 /* StarChild.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1156, 9516}}";
- sepNavSelRange = "{14734, 0}";
- sepNavVisRange = "{14520, 2363}";
+ sepNavIntBoundsRect = "{{0, 0}, {1013, 8762}}";
+ sepNavSelRange = "{12080, 0}";
+ sepNavVisRange = "{11340, 1508}";
sepNavWindowFrame = "{{237, 42}, {1203, 836}}";
};
};
@@ -98,9 +109,9 @@
};
8BC6025B073B072D006C4272 /* StarChild.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {922, 2080}}";
- sepNavSelRange = "{5120, 35}";
- sepNavVisRange = "{5118, 55}";
+ sepNavIntBoundsRect = "{{0, 0}, {922, 2106}}";
+ sepNavSelRange = "{5101, 0}";
+ sepNavVisRange = "{4501, 1029}";
sepNavWindowFrame = "{{652, 63}, {932, 815}}";
};
};
diff --git a/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3
index 0d2abd0..3349044 100755
--- a/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>876</integer>
+ <integer>876</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -307,7 +305,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {185, 428}}</string>
+ <string>{{0, 0}, {185, 661}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -317,14 +315,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {202, 446}}</string>
+ <string>{{0, 0}, {202, 679}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 293 810 487 0 0 1440 878 </string>
+ <string>447 102 876 720 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -335,12 +333,14 @@
<key>Dock</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>8BAC22EC1F1EA26E009C635C</string>
<key>PBXProjectModuleLabel</key>
- <string>StarChild.h</string>
+ <string>StarChild.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -348,14 +348,15 @@
<key>PBXProjectModuleGUID</key>
<string>8BAC22ED1F1EA26E009C635C</string>
<key>PBXProjectModuleLabel</key>
- <string>StarChild.h</string>
+ <string>StarChild.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D76381F7FA215007AB60F</string>
+ <string>8B79307E21F4A491006E9731</string>
<key>history</key>
<array>
- <string>8B9D67441F7C8F7E007AB60F</string>
+ <string>8B79307721F4A440006E9731</string>
+ <string>8B79307921F4A440006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 86}}</string>
+ <string>{{0, 0}, {669, 542}}</string>
<key>RubberWindowFrame</key>
- <string>630 293 810 487 0 0 1440 878 </string>
+ <string>447 102 876 720 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>86pt</string>
+ <string>542pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>355pt</string>
+ <string>132pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
- <key>RubberWindowFrame</key>
- <string>630 293 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {669, 105}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {669, 105}}</string>
+ <key>RubberWindowFrame</key>
+ <string>447 102 876 720 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -459,7 +460,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>603pt</string>
+ <string>669pt</string>
</dict>
</array>
<key>Name</key>
@@ -478,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D76391F7FA215007AB60F</string>
+ <string>8B79307F21F4A491006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D763A1F7FA215007AB60F</string>
+ <string>8B79308021F4A491006E9731</string>
<string>8BAC22EC1F1EA26E009C635C</string>
- <string>8B9D763B1F7FA215007AB60F</string>
+ <string>8B79308121F4A491006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528458261.212134</real>
+ <real>569681041.62753606</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +653,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D763C1F7FA215007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/StarChild/StarChild.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 293 810 487 0 0 1440 878 </string>
+ <string>447 102 876 720 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/StereoFX/StereoFX.cpp b/plugins/MacAU/StereoFX/StereoFX.cpp
index 3c28466..0c32089 100755
--- a/plugins/MacAU/StereoFX/StereoFX.cpp
+++ b/plugins/MacAU/StereoFX/StereoFX.cpp
@@ -190,10 +190,8 @@ ComponentResult StereoFX::Reset(AudioUnitScope inScope, AudioUnitElement inElem
iirSampleA = 0.0;
iirSampleB = 0.0;
flip = false;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
return noErr;
}
@@ -215,9 +213,6 @@ OSStatus StereoFX::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag
Float64 overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double mid;
@@ -334,28 +329,16 @@ OSStatus StereoFX::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
-
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
flip = !flip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacAU/StereoFX/StereoFX.h b/plugins/MacAU/StereoFX/StereoFX.h
index 11c97f6..a52f713 100755
--- a/plugins/MacAU/StereoFX/StereoFX.h
+++ b/plugins/MacAU/StereoFX/StereoFX.h
@@ -119,10 +119,8 @@ public:
private:
Float64 iirSampleA;
Float64 iirSampleB;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
};
diff --git a/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser
index 626bcdf..ad53de0 100755
--- a/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 364,
+ 462,
20,
48,
43,
@@ -49,18 +49,53 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 546569486;
- PBXWorkspaceStateSaveDate = 546569486;
+ PBXPerProjectTemplateStateSaveDate = 569681258;
+ PBXWorkspaceStateSaveDate = 569681258;
+ };
+ perUserProjectItems = {
+ 8B79308D21F4A5EC006E9731 /* PBXTextBookmark */ = 8B79308D21F4A5EC006E9731 /* PBXTextBookmark */;
+ 8B79308F21F4A5EC006E9731 /* PBXTextBookmark */ = 8B79308F21F4A5EC006E9731 /* PBXTextBookmark */;
+ 8B79309421F4A60C006E9731 /* PBXTextBookmark */ = 8B79309421F4A60C006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B79308D21F4A5EC006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* StereoFX.h */;
+ name = "StereoFX.h: 123";
+ rLen = 0;
+ rLoc = 5154;
+ rType = 0;
+ vrLen = 1108;
+ vrLoc = 4168;
+ };
+ 8B79308F21F4A5EC006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* StereoFX.cpp */;
+ name = "StereoFX.cpp: 345";
+ rLen = 0;
+ rLoc = 14822;
+ rType = 0;
+ vrLen = 1556;
+ vrLoc = 12814;
+ };
+ 8B79309421F4A60C006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* StereoFX.cpp */;
+ name = "StereoFX.cpp: 216";
+ rLen = 0;
+ rLoc = 9502;
+ rType = 0;
+ vrLen = 1621;
+ vrLoc = 8612;
+ };
8BA05A660720730100365D66 /* StereoFX.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1098, 5096}}";
- sepNavSelRange = "{12356, 2168}";
- sepNavVisRange = "{13918, 1439}";
+ sepNavIntBoundsRect = "{{0, 0}, {670, 4888}}";
+ sepNavSelRange = "{9502, 0}";
+ sepNavVisRange = "{8612, 1621}";
sepNavWindowFrame = "{{763, 66}, {1145, 812}}";
};
};
@@ -89,9 +124,9 @@
};
8BC6025B073B072D006C4272 /* StereoFX.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {974, 1729}}";
- sepNavSelRange = "{4892, 0}";
- sepNavVisRange = "{1992, 1673}";
+ sepNavIntBoundsRect = "{{0, 0}, {922, 1911}}";
+ sepNavSelRange = "{5154, 0}";
+ sepNavVisRange = "{4168, 1108}";
sepNavWindowFrame = "{{726, 78}, {1021, 800}}";
};
};
diff --git a/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3
index 600e693..6d5fb55 100755
--- a/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>908</integer>
+ <integer>908</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -307,7 +305,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {185, 428}}</string>
+ <string>{{0, 0}, {185, 649}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -317,14 +315,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {202, 446}}</string>
+ <string>{{0, 0}, {202, 667}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>622 347 810 487 0 0 1440 878 </string>
+ <string>377 128 908 708 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -335,12 +333,14 @@
<key>Dock</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>8B050BD820648DF500700365</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>StereoFX.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -348,7 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8B050BD920648DF500700365</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>StereoFX.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B79309421F4A60C006E9731</string>
+ <key>history</key>
+ <array>
+ <string>8B79308D21F4A5EC006E9731</string>
+ <string>8B79308F21F4A5EC006E9731</string>
+ </array>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -361,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 0}}</string>
+ <string>{{0, 0}, {701, 497}}</string>
<key>RubberWindowFrame</key>
- <string>622 347 810 487 0 0 1440 878 </string>
+ <string>377 128 908 708 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>0pt</string>
+ <string>497pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>441pt</string>
+ <string>165pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -386,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>622 347 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {701, 138}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -442,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {701, 138}}</string>
+ <key>RubberWindowFrame</key>
+ <string>377 128 908 708 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -451,7 +460,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>603pt</string>
+ <string>701pt</string>
</dict>
</array>
<key>Name</key>
@@ -470,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC5CFD0209404910058B257</string>
+ <string>8B79309521F4A60C006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC5CFD1209404910058B257</string>
+ <string>8B79309621F4A60C006E9731</string>
<string>8B050BD820648DF500700365</string>
- <string>8BC5CFD2209404910058B257</string>
+ <string>8B79309721F4A60C006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -627,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>546571409.14249599</real>
+ <real>569681420.22861803</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -644,11 +653,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BC5CFD3209404910058B257</string>
<string>/Users/christopherjohnson/Desktop/MacAU/StereoFX/StereoFX.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>622 347 810 487 0 0 1440 878 </string>
+ <string>377 128 908 708 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/SubsOnly/SubsOnly.cpp b/plugins/MacAU/SubsOnly/SubsOnly.cpp
index 4013912..cfa37b0 100755
--- a/plugins/MacAU/SubsOnly/SubsOnly.cpp
+++ b/plugins/MacAU/SubsOnly/SubsOnly.cpp
@@ -176,6 +176,7 @@ void SubsOnly::SubsOnlyKernel::Reset()
iirSampleX = 0.0;
iirSampleY = 0.0;
iirSampleZ = 0.0;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -332,6 +333,14 @@ void SubsOnly::SubsOnlyKernel::Process( const Float32 *inSourceP,
iirSampleZ = (iirSampleZ * altAmount) + (inputSample * iirAmount); inputSample = iirSampleZ;
if (inputSample > 1.0) inputSample = 1.0;
if (inputSample < -1.0) inputSample = -1.0;
+
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
+
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
diff --git a/plugins/MacAU/SubsOnly/SubsOnly.exp b/plugins/MacAU/SubsOnly/SubsOnly.exp
index 4735777..04208e0 100755
--- a/plugins/MacAU/SubsOnly/SubsOnly.exp
+++ b/plugins/MacAU/SubsOnly/SubsOnly.exp
@@ -1 +1 @@
-_SubsOnlyEntry \ No newline at end of file
+_SubsOnlyEntry
diff --git a/plugins/MacAU/SubsOnly/SubsOnly.h b/plugins/MacAU/SubsOnly/SubsOnly.h
index ba372cd..a2efe96 100755
--- a/plugins/MacAU/SubsOnly/SubsOnly.h
+++ b/plugins/MacAU/SubsOnly/SubsOnly.h
@@ -147,6 +147,7 @@ public:
Float64 iirSampleX;
Float64 iirSampleY;
Float64 iirSampleZ;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser
index 2f28dde..61b79e7 100755
--- a/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 364,
+ 506,
20,
48,
43,
@@ -49,21 +49,64 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528458272;
- PBXWorkspaceStateSaveDate = 528458272;
+ PBXPerProjectTemplateStateSaveDate = 569681518;
+ PBXWorkspaceStateSaveDate = 569681518;
+ };
+ perUserProjectItems = {
+ 8B7930A321F4A6E6006E9731 /* PBXTextBookmark */ = 8B7930A321F4A6E6006E9731 /* PBXTextBookmark */;
+ 8B7930A521F4A6E6006E9731 /* PBXTextBookmark */ = 8B7930A521F4A6E6006E9731 /* PBXTextBookmark */;
+ 8B7930AB21F4A702006E9731 /* PBXTextBookmark */ = 8B7930AB21F4A702006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B7930A321F4A6E6006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* SubsOnly.h */;
+ name = "SubsOnly.h: 150";
+ rLen = 0;
+ rLoc = 5401;
+ rType = 0;
+ vrLen = 748;
+ vrLoc = 4757;
+ };
+ 8B7930A521F4A6E6006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* SubsOnly.cpp */;
+ name = "SubsOnly.cpp: 337";
+ rLen = 0;
+ rLoc = 15815;
+ rType = 0;
+ vrLen = 1698;
+ vrLoc = 14455;
+ };
+ 8B7930AB21F4A702006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* SubsOnly.cpp */;
+ name = "SubsOnly.cpp: 337";
+ rLen = 0;
+ rLoc = 15815;
+ rType = 0;
+ vrLen = 1744;
+ vrLoc = 14409;
+ };
8BA05A660720730100365D66 /* SubsOnly.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {974, 4758}}";
- sepNavSelRange = "{8636, 0}";
- sepNavVisRange = "{7845, 2381}";
+ sepNavIntBoundsRect = "{{0, 0}, {712, 4316}}";
+ sepNavSelRange = "{15815, 0}";
+ sepNavVisRange = "{14409, 1744}";
sepNavWindowFrame = "{{343, 78}, {1021, 800}}";
};
};
+ 8BA05A670720730100365D66 /* SubsOnly.exp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1253, 694}}";
+ sepNavSelRange = "{15, 0}";
+ sepNavVisRange = "{0, 15}";
+ sepNavWindowFrame = "{{15, 51}, {1300, 822}}";
+ };
+ };
8BA05A690720730100365D66 /* SubsOnlyVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {848, 897}}";
@@ -74,9 +117,9 @@
};
8BC6025B073B072D006C4272 /* SubsOnly.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {974, 2028}}";
- sepNavSelRange = "{4806, 572}";
- sepNavVisRange = "{4271, 1216}";
+ sepNavIntBoundsRect = "{{0, 0}, {803, 2431}}";
+ sepNavSelRange = "{5401, 0}";
+ sepNavVisRange = "{4757, 748}";
sepNavWindowFrame = "{{15, 73}, {1021, 800}}";
};
};
diff --git a/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3
index 03a6556..0059357 100755
--- a/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>952</integer>
+ <integer>952</integer>
</array>
<key>Perspectives</key>
<array>
@@ -300,14 +300,14 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>4</integer>
+ <integer>5</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {185, 428}}</string>
+ <string>{{0, 0}, {185, 684}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -317,14 +317,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {202, 446}}</string>
+ <string>{{0, 0}, {202, 702}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>494 327 810 487 0 0 1440 878 </string>
+ <string>341 97 952 743 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -340,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BBD0B9A1D70A94D003F8957</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>SubsOnly.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -348,7 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BBD0B9B1D70A94D003F8957</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>SubsOnly.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B7930AB21F4A702006E9731</string>
+ <key>history</key>
+ <array>
+ <string>8B7930A321F4A6E6006E9731</string>
+ <string>8B7930A521F4A6E6006E9731</string>
+ </array>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -361,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 0}}</string>
+ <string>{{0, 0}, {745, 504}}</string>
<key>RubberWindowFrame</key>
- <string>494 327 810 487 0 0 1440 878 </string>
+ <string>341 97 952 743 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>0pt</string>
+ <string>504pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>441pt</string>
+ <string>193pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -386,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>494 327 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {745, 166}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -442,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {745, 166}}</string>
+ <key>RubberWindowFrame</key>
+ <string>341 97 952 743 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -451,7 +460,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>603pt</string>
+ <string>745pt</string>
</dict>
</array>
<key>Name</key>
@@ -470,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D76471F7FA22D007AB60F</string>
+ <string>8B7930AC21F4A702006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D76481F7FA22D007AB60F</string>
+ <string>8B7930AD21F4A702006E9731</string>
<string>8BBD0B9A1D70A94D003F8957</string>
- <string>8B9D76491F7FA22D007AB60F</string>
+ <string>8B7930AE21F4A702006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -627,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528458285.16747701</real>
+ <real>569681666.59451497</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -644,11 +653,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D764A1F7FA22D007AB60F</string>
+ <string>8B7930AF21F4A702006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacAU/SubsOnly/SubsOnly.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>494 327 810 487 0 0 1440 878 </string>
+ <string>341 97 952 743 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Surge/Surge.cpp b/plugins/MacAU/Surge/Surge.cpp
index 6c59016..af2adf4 100755
--- a/plugins/MacAU/Surge/Surge.cpp
+++ b/plugins/MacAU/Surge/Surge.cpp
@@ -181,11 +181,8 @@ ComponentResult Surge::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Surge::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
- flip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
chaseA = 0.0;
chaseB = 0.0;
chaseC = 0.0;
@@ -210,9 +207,6 @@ OSStatus Surge::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags,
Float64 overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -227,7 +221,6 @@ OSStatus Surge::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags,
Float64 dry = 1.0 - wet;
Float64 inputSense;
-
while (nSampleFrames-- > 0) {
inputSampleL = *inputL;
inputSampleR = *inputR;
@@ -312,27 +305,14 @@ OSStatus Surge::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags,
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacAU/Surge/Surge.h b/plugins/MacAU/Surge/Surge.h
index 3569845..0d24ad7 100755
--- a/plugins/MacAU/Surge/Surge.h
+++ b/plugins/MacAU/Surge/Surge.h
@@ -112,11 +112,8 @@ public:
virtual ComponentResult Version() { return kSurgeVersion; }
private:
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
- bool flip;
+ long double fpNShapeL;
+ long double fpNShapeR;
long double chaseA;
long double chaseB;
long double chaseC;
diff --git a/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.pbxuser
index ea48a6f..c2c098b 100755
--- a/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.pbxuser
@@ -12,7 +12,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 446,
20,
48,
43,
@@ -51,12 +51,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528458296;
- PBXWorkspaceStateSaveDate = 528458296;
+ PBXPerProjectTemplateStateSaveDate = 569681702;
+ PBXWorkspaceStateSaveDate = 569681702;
};
perUserProjectItems = {
- 8B9D72591F7F002B007AB60F /* PBXTextBookmark */ = 8B9D72591F7F002B007AB60F /* PBXTextBookmark */;
- 8B9D76551F7FA262007AB60F /* PBXTextBookmark */ = 8B9D76551F7FA262007AB60F /* PBXTextBookmark */;
+ 8B7930BB21F4A95A006E9731 /* PBXTextBookmark */ = 8B7930BB21F4A95A006E9731 /* PBXTextBookmark */;
+ 8B7930BD21F4A95A006E9731 /* PBXTextBookmark */ = 8B7930BD21F4A95A006E9731 /* PBXTextBookmark */;
+ 8B7930C221F4A996006E9731 /* PBXTextBookmark */ = 8B7930C221F4A996006E9731 /* PBXTextBookmark */;
8BD4F5501E6E0C5600288155 /* PlistBookmark */ = 8BD4F5501E6E0C5600288155 /* PlistBookmark */;
8BD4F5511E6E0C5600288155 /* PBXTextBookmark */ = 8BD4F5511E6E0C5600288155 /* PBXTextBookmark */;
};
@@ -64,31 +65,41 @@
userBuildSettings = {
};
};
- 8B9D72591F7F002B007AB60F /* PBXTextBookmark */ = {
+ 8B7930BB21F4A95A006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Surge.h */;
- name = "Surge.h: 119";
+ name = "Surge.h: 116";
rLen = 0;
- rLoc = 4988;
+ rLoc = 4922;
rType = 0;
- vrLen = 383;
- vrLoc = 2846;
+ vrLen = 1308;
+ vrLoc = 3829;
};
- 8B9D76551F7FA262007AB60F /* PBXTextBookmark */ = {
+ 8B7930BD21F4A95A006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Surge.h */;
- name = "Surge.h: 119";
+ fRef = 8BA05A660720730100365D66 /* Surge.cpp */;
+ name = "Surge.cpp: 316";
+ rLen = 0;
+ rLoc = 12980;
+ rType = 0;
+ vrLen = 1238;
+ vrLoc = 11945;
+ };
+ 8B7930C221F4A996006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Surge.cpp */;
+ name = "Surge.cpp: 316";
rLen = 0;
- rLoc = 4988;
+ rLoc = 12980;
rType = 0;
- vrLen = 334;
- vrLoc = 2895;
+ vrLen = 1520;
+ vrLoc = 10349;
};
8BA05A660720730100365D66 /* Surge.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {977, 4628}}";
- sepNavSelRange = "{10662, 0}";
- sepNavVisRange = "{9183, 2420}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 4511}}";
+ sepNavSelRange = "{12980, 0}";
+ sepNavVisRange = "{10349, 1520}";
sepNavWindowFrame = "{{416, 39}, {1024, 839}}";
};
};
@@ -102,9 +113,9 @@
};
8BC6025B073B072D006C4272 /* Surge.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1963}}";
- sepNavSelRange = "{4988, 0}";
- sepNavVisRange = "{2895, 334}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1768}}";
+ sepNavSelRange = "{4922, 0}";
+ sepNavVisRange = "{3829, 1308}";
sepNavWindowFrame = "{{788, 29}, {1024, 839}}";
};
};
diff --git a/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3
index 0b410ec..85d373f 100755
--- a/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>841</integer>
- <integer>841</integer>
+ <integer>898</integer>
+ <integer>898</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>191</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -308,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {191, 681}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -318,19 +316,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {208, 699}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>191</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 205 841 654 0 0 1440 878 </string>
+ <string>405 127 898 740 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>208pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -341,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Surge.h</string>
+ <string>Surge.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,16 +347,17 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Surge.h</string>
+ <string>Surge.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D76551F7FA262007AB60F</string>
+ <string>8B7930C221F4A996006E9731</string>
<key>history</key>
<array>
<string>8BD4F5501E6E0C5600288155</string>
<string>8BD4F5511E6E0C5600288155</string>
- <string>8B9D72591F7F002B007AB60F</string>
+ <string>8B7930BB21F4A95A006E9731</string>
+ <string>8B7930BD21F4A95A006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 202}}</string>
+ <string>{{0, 0}, {685, 539}}</string>
<key>RubberWindowFrame</key>
- <string>599 205 841 654 0 0 1440 878 </string>
+ <string>405 127 898 740 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>202pt</string>
+ <string>539pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>406pt</string>
+ <string>155pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 379}}</string>
- <key>RubberWindowFrame</key>
- <string>599 205 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {685, 128}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {685, 128}}</string>
+ <key>RubberWindowFrame</key>
+ <string>405 127 898 740 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -462,7 +461,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>685pt</string>
</dict>
</array>
<key>Name</key>
@@ -481,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D76561F7FA262007AB60F</string>
+ <string>8B7930C321F4A996006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D76571F7FA262007AB60F</string>
+ <string>8B7930C421F4A996006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D76581F7FA262007AB60F</string>
+ <string>8B7930C521F4A996006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528458338.37719601</real>
+ <real>569682326.61837006</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,11 +674,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D76591F7FA262007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Surge/Surge.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 205 841 654 0 0 1440 878 </string>
+ <string>405 127 898 740 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/SurgeMono/SurgeMono.cpp b/plugins/MacAU/SurgeMono/SurgeMono.cpp
index dac3bbd..8909d58 100755
--- a/plugins/MacAU/SurgeMono/SurgeMono.cpp
+++ b/plugins/MacAU/SurgeMono/SurgeMono.cpp
@@ -166,9 +166,7 @@ ComponentResult SurgeMono::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void SurgeMono::SurgeMonoKernel::Reset()
{
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
chaseA = 0.0;
chaseB = 0.0;
chaseC = 0.0;
@@ -190,11 +188,7 @@ void SurgeMono::SurgeMonoKernel::Process( const Float32 *inSourceP,
Float32 *destP = inDestP;
long double overallscale = 1.0;
overallscale /= 44100.0;
- overallscale *= GetSampleRate();
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ overallscale *= GetSampleRate();
long double inputSample;
long double drySample;
Float64 chaseMax = 0.0;
@@ -205,7 +199,6 @@ void SurgeMono::SurgeMonoKernel::Process( const Float32 *inSourceP,
Float64 dry = 1.0 - wet;
Float64 inputSense;
-
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
if (inputSample<1.2e-38 && -inputSample<1.2e-38) {
@@ -265,19 +258,11 @@ void SurgeMono::SurgeMonoKernel::Process( const Float32 *inSourceP,
inputSample = drySample - (inputSample * intensity);
inputSample = (drySample * dry) + (inputSample * wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/SurgeMono/SurgeMono.h b/plugins/MacAU/SurgeMono/SurgeMono.h
index 68d3d7b..692d325 100755
--- a/plugins/MacAU/SurgeMono/SurgeMono.h
+++ b/plugins/MacAU/SurgeMono/SurgeMono.h
@@ -128,9 +128,7 @@ public:
virtual void Reset();
private:
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
long double chaseA;
long double chaseB;
long double chaseC;
diff --git a/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.pbxuser
index e9de3fd..073386c 100755
--- a/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.pbxuser
@@ -49,18 +49,20 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528458347;
- PBXWorkspaceStateSaveDate = 528458347;
+ PBXPerProjectTemplateStateSaveDate = 569682465;
+ PBXWorkspaceStateSaveDate = 569682465;
};
perUserProjectItems = {
- 8B9D67791F7C8FFF007AB60F /* PlistBookmark */ = 8B9D67791F7C8FFF007AB60F /* PlistBookmark */;
- 8B9D76661F7FA27C007AB60F /* PlistBookmark */ = 8B9D76661F7FA27C007AB60F /* PlistBookmark */;
+ 8B7930D121F4AAA2006E9731 /* PlistBookmark */ = 8B7930D121F4AAA2006E9731 /* PlistBookmark */;
+ 8B7930D221F4AAA2006E9731 /* PBXTextBookmark */ = 8B7930D221F4AAA2006E9731 /* PBXTextBookmark */;
+ 8B7930D421F4AAA2006E9731 /* PBXTextBookmark */ = 8B7930D421F4AAA2006E9731 /* PBXTextBookmark */;
+ 8B7930D921F4AAD9006E9731 /* PBXTextBookmark */ = 8B7930D921F4AAD9006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D67791F7C8FFF007AB60F /* PlistBookmark */ = {
+ 8B7930D121F4AAA2006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -70,25 +72,43 @@
);
name = /Users/christopherjohnson/Desktop/MacAU/SurgeMono/Info.plist;
rLen = 0;
- rLoc = 9223372036854775808;
+ rLoc = 9223372036854775807;
};
- 8B9D76661F7FA27C007AB60F /* PlistBookmark */ = {
- isa = PlistBookmark;
- fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
- fallbackIsa = PBXBookmark;
- isK = 0;
- kPath = (
- CFBundleName,
- );
- name = /Users/christopherjohnson/Desktop/MacAU/SurgeMono/Info.plist;
+ 8B7930D221F4AAA2006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* SurgeMono.h */;
+ name = "SurgeMono.h: 131";
rLen = 0;
- rLoc = 9223372036854775807;
+ rLoc = 5211;
+ rType = 0;
+ vrLen = 694;
+ vrLoc = 4739;
+ };
+ 8B7930D421F4AAA2006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* SurgeMono.cpp */;
+ name = "SurgeMono.cpp: 266";
+ rLen = 0;
+ rLoc = 11482;
+ rType = 0;
+ vrLen = 860;
+ vrLoc = 10710;
+ };
+ 8B7930D921F4AAD9006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* SurgeMono.cpp */;
+ name = "SurgeMono.cpp: 266";
+ rLen = 0;
+ rLoc = 11482;
+ rType = 0;
+ vrLen = 863;
+ vrLoc = 10707;
};
8BA05A660720730100365D66 /* SurgeMono.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {977, 3770}}";
- sepNavSelRange = "{9077, 0}";
- sepNavVisRange = "{8218, 2347}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 3796}}";
+ sepNavSelRange = "{11482, 0}";
+ sepNavVisRange = "{10707, 863}";
sepNavWindowFrame = "{{416, 39}, {1024, 839}}";
};
};
@@ -102,9 +122,9 @@
};
8BC6025B073B072D006C4272 /* SurgeMono.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {977, 1885}}";
- sepNavSelRange = "{5253, 112}";
- sepNavVisRange = "{3887, 1587}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2210}}";
+ sepNavSelRange = "{5211, 0}";
+ sepNavVisRange = "{4739, 694}";
sepNavWindowFrame = "{{571, 39}, {1024, 839}}";
};
};
diff --git a/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.perspectivev3
index e17ff881..3226810 100755
--- a/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/SurgeMono/SurgeMono.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -325,7 +323,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>582 129 841 654 0 0 1440 878 </string>
+ <string>444 180 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -341,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Info.plist</string>
+ <string>SurgeMono.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,14 +347,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Info.plist</string>
+ <string>SurgeMono.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D76661F7FA27C007AB60F</string>
+ <string>8B7930D921F4AAD9006E9731</string>
<key>history</key>
<array>
- <string>8B9D67791F7C8FFF007AB60F</string>
+ <string>8B7930D121F4AAA2006E9731</string>
+ <string>8B7930D221F4AAA2006E9731</string>
+ <string>8B7930D421F4AAA2006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 216}}</string>
+ <string>{{0, 0}, {531, 414}}</string>
<key>RubberWindowFrame</key>
- <string>582 129 841 654 0 0 1440 878 </string>
+ <string>444 180 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>216pt</string>
+ <string>414pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>392pt</string>
+ <string>194pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 365}}</string>
- <key>RubberWindowFrame</key>
- <string>582 129 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 167}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {531, 167}}</string>
+ <key>RubberWindowFrame</key>
+ <string>444 180 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D76671F7FA27C007AB60F</string>
+ <string>8B7930DA21F4AAD9006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D76681F7FA27C007AB60F</string>
+ <string>8B7930DB21F4AAD9006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D76691F7FA27C007AB60F</string>
+ <string>8B7930DC21F4AAD9006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -656,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528458364.66416103</real>
+ <real>569682649.56976402</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -673,11 +673,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D766A1F7FA27C007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/SurgeMono/SurgeMono.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>582 129 841 654 0 0 1440 878 </string>
+ <string>444 180 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/SurgeTide/SurgeTide.cpp b/plugins/MacAU/SurgeTide/SurgeTide.cpp
index 2a2fe42..3a415f2 100755
--- a/plugins/MacAU/SurgeTide/SurgeTide.cpp
+++ b/plugins/MacAU/SurgeTide/SurgeTide.cpp
@@ -188,11 +188,8 @@ ComponentResult SurgeTide::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult SurgeTide::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
- flip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
chaseA = 0.0;
chaseB = 0.0;
chaseC = 0.0;
@@ -215,11 +212,7 @@ OSStatus SurgeTide::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
Float64 overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
-
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+
long double inputSampleL;
long double inputSampleR;
long double drySampleL;
@@ -309,27 +302,14 @@ OSStatus SurgeTide::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacAU/SurgeTide/SurgeTide.h b/plugins/MacAU/SurgeTide/SurgeTide.h
index f62817e..a72f6c6 100755
--- a/plugins/MacAU/SurgeTide/SurgeTide.h
+++ b/plugins/MacAU/SurgeTide/SurgeTide.h
@@ -115,11 +115,8 @@ public:
virtual ComponentResult Version() { return kSurgeTideVersion; }
private:
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
- bool flip;
+ long double fpNShapeL;
+ long double fpNShapeR;
long double chaseA;
long double chaseB;
long double chaseC;
diff --git a/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser
index 40a4ff3..72c4866 100755
--- a/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 316,
20,
48,
43,
@@ -49,40 +49,20 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 543460920;
- PBXWorkspaceStateSaveDate = 543460920;
+ PBXPerProjectTemplateStateSaveDate = 569682693;
+ PBXWorkspaceStateSaveDate = 569682693;
};
perUserProjectItems = {
- 8B050BEA20648E5500700365 /* PBXTextBookmark */ = 8B050BEA20648E5500700365 /* PBXTextBookmark */;
- 8B050BEB20648E5500700365 /* PBXTextBookmark */ = 8B050BEB20648E5500700365 /* PBXTextBookmark */;
8B3221941DC3CF2D00C1FCDF /* PlistBookmark */ = 8B3221941DC3CF2D00C1FCDF /* PlistBookmark */;
8B3DF6731E6A5BAE00E788B6 /* PBXTextBookmark */ = 8B3DF6731E6A5BAE00E788B6 /* PBXTextBookmark */;
- 8BC9089C1DC7FFFE008187BE /* PBXTextBookmark */ = 8BC9089C1DC7FFFE008187BE /* PBXTextBookmark */;
+ 8B7930E821F4AB6C006E9731 /* PBXTextBookmark */ = 8B7930E821F4AB6C006E9731 /* PBXTextBookmark */;
+ 8B7930EA21F4AB6C006E9731 /* PBXTextBookmark */ = 8B7930EA21F4AB6C006E9731 /* PBXTextBookmark */;
+ 8B7930EF21F4AB96006E9731 /* PBXTextBookmark */ = 8B7930EF21F4AB96006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B050BEA20648E5500700365 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* SurgeTide.h */;
- name = "SurgeTide.h: 132";
- rLen = 0;
- rLoc = 5345;
- rType = 0;
- vrLen = 263;
- vrLoc = 5082;
- };
- 8B050BEB20648E5500700365 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* SurgeTide.cpp */;
- name = "SurgeTide.cpp: 303";
- rLen = 0;
- rLoc = 12636;
- rType = 0;
- vrLen = 1129;
- vrLoc = 12486;
- };
8B3221941DC3CF2D00C1FCDF /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
@@ -105,11 +85,41 @@
vrLen = 359;
vrLoc = 2598;
};
+ 8B7930E821F4AB6C006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* SurgeTide.h */;
+ name = "SurgeTide.h: 119";
+ rLen = 0;
+ rLoc = 5103;
+ rType = 0;
+ vrLen = 1669;
+ vrLoc = 3609;
+ };
+ 8B7930EA21F4AB6C006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* SurgeTide.cpp */;
+ name = "SurgeTide.cpp: 313";
+ rLen = 0;
+ rLoc = 13187;
+ rType = 0;
+ vrLen = 1366;
+ vrLoc = 12024;
+ };
+ 8B7930EF21F4AB96006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* SurgeTide.cpp */;
+ name = "SurgeTide.cpp: 313";
+ rLen = 0;
+ rLoc = 13187;
+ rType = 0;
+ vrLen = 1259;
+ vrLoc = 11985;
+ };
8BA05A660720730100365D66 /* SurgeTide.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 4680}}";
- sepNavSelRange = "{12636, 0}";
- sepNavVisRange = "{12486, 1129}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 4498}}";
+ sepNavSelRange = "{13187, 0}";
+ sepNavVisRange = "{11985, 1259}";
sepNavWindowFrame = "{{758, 43}, {679, 835}}";
};
};
@@ -123,22 +133,12 @@
};
8BC6025B073B072D006C4272 /* SurgeTide.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1846}}";
- sepNavSelRange = "{5345, 0}";
- sepNavVisRange = "{5082, 263}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1703}}";
+ sepNavSelRange = "{5103, 0}";
+ sepNavVisRange = "{3609, 1669}";
sepNavWindowFrame = "{{755, 43}, {679, 835}}";
};
};
- 8BC9089C1DC7FFFE008187BE /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* SurgeTide.cpp */;
- name = "SurgeTide.cpp: 304";
- rLen = 0;
- rLoc = 13729;
- rType = 0;
- vrLen = 592;
- vrLoc = 10562;
- };
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
diff --git a/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3
index 5941322..f9eb835 100755
--- a/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>841</integer>
- <integer>841</integer>
+ <integer>865</integer>
+ <integer>865</integer>
</array>
<key>Perspectives</key>
<array>
@@ -306,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {288, 707}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -316,14 +316,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {305, 725}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 190 841 654 0 0 1440 878 </string>
+ <string>436 94 865 766 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -334,8 +334,6 @@
<key>Dock</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -353,13 +351,13 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B050BEB20648E5500700365</string>
+ <string>8B7930EF21F4AB96006E9731</string>
<key>history</key>
<array>
<string>8B3221941DC3CF2D00C1FCDF</string>
<string>8B3DF6731E6A5BAE00E788B6</string>
- <string>8B050BEA20648E5500700365</string>
- <string>8BC9089C1DC7FFFE008187BE</string>
+ <string>8B7930E821F4AB6C006E9731</string>
+ <string>8B7930EA21F4AB6C006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 502}}</string>
+ <string>{{0, 0}, {555, 495}}</string>
<key>RubberWindowFrame</key>
- <string>599 190 841 654 0 0 1440 878 </string>
+ <string>436 94 865 766 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>502pt</string>
+ <string>495pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>106pt</string>
+ <string>225pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 79}}</string>
- <key>RubberWindowFrame</key>
- <string>599 190 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {555, 83}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {555, 198}}</string>
+ <key>RubberWindowFrame</key>
+ <string>436 94 865 766 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -463,7 +461,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>555pt</string>
</dict>
</array>
<key>Name</key>
@@ -482,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B050BEC20648E5500700365</string>
+ <string>8B7930F021F4AB96006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B050BED20648E5500700365</string>
+ <string>8B7930F121F4AB96006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B050BEE20648E5500700365</string>
+ <string>8B7930F221F4AB96006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>543460949.69104803</real>
+ <real>569682838.98241794</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -679,7 +677,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/SurgeTide/SurgeTide.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 190 841 654 0 0 1440 878 </string>
+ <string>436 94 865 766 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/SurgeTideMono/SurgeTideMono.cpp b/plugins/MacAU/SurgeTideMono/SurgeTideMono.cpp
index 04f678b..2bbd972 100755
--- a/plugins/MacAU/SurgeTideMono/SurgeTideMono.cpp
+++ b/plugins/MacAU/SurgeTideMono/SurgeTideMono.cpp
@@ -174,9 +174,7 @@ ComponentResult SurgeTideMono::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void SurgeTideMono::SurgeTideMonoKernel::Reset()
{
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
chaseA = 0.0;
chaseB = 0.0;
chaseC = 0.0;
@@ -196,11 +194,7 @@ void SurgeTideMono::SurgeTideMonoKernel::Process( const Float32 *inSourceP,
Float32 *destP = inDestP;
long double overallscale = 1.0;
overallscale /= 44100.0;
- overallscale *= GetSampleRate();
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ overallscale *= GetSampleRate();
long double inputSample;
long double drySample;
Float64 intensity = GetParameter( kParam_One );
@@ -210,7 +204,6 @@ void SurgeTideMono::SurgeTideMonoKernel::Process( const Float32 *inSourceP,
Float64 dry = 1.0 - wet;
Float64 inputSense;
-
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
if (inputSample<1.2e-38 && -inputSample<1.2e-38) {
@@ -262,19 +255,11 @@ void SurgeTideMono::SurgeTideMonoKernel::Process( const Float32 *inSourceP,
inputSample = drySample - (inputSample * intensity);
inputSample = (drySample * dry) + (inputSample * wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/SurgeTideMono/SurgeTideMono.h b/plugins/MacAU/SurgeTideMono/SurgeTideMono.h
index 9b5f6c9..067d2e5 100755
--- a/plugins/MacAU/SurgeTideMono/SurgeTideMono.h
+++ b/plugins/MacAU/SurgeTideMono/SurgeTideMono.h
@@ -131,9 +131,7 @@ public:
virtual void Reset();
private:
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
long double chaseA;
long double chaseB;
long double chaseC;
diff --git a/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.pbxuser
index 4cdf650..fce4d19 100755
--- a/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 405,
20,
48,
43,
@@ -49,18 +49,20 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528458399;
- PBXWorkspaceStateSaveDate = 528458399;
+ PBXPerProjectTemplateStateSaveDate = 569682860;
+ PBXWorkspaceStateSaveDate = 569682860;
};
perUserProjectItems = {
- 8B9D67A21F7C9057007AB60F /* PlistBookmark */ = 8B9D67A21F7C9057007AB60F /* PlistBookmark */;
- 8B9D76841F7FA2BF007AB60F /* PlistBookmark */ = 8B9D76841F7FA2BF007AB60F /* PlistBookmark */;
+ 8B7930FE21F4AC25006E9731 /* PlistBookmark */ = 8B7930FE21F4AC25006E9731 /* PlistBookmark */;
+ 8B7930FF21F4AC25006E9731 /* PBXTextBookmark */ = 8B7930FF21F4AC25006E9731 /* PBXTextBookmark */;
+ 8B79310121F4AC25006E9731 /* PBXTextBookmark */ = 8B79310121F4AC25006E9731 /* PBXTextBookmark */;
+ 8B79310621F4AC4F006E9731 /* PBXTextBookmark */ = 8B79310621F4AC4F006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D67A21F7C9057007AB60F /* PlistBookmark */ = {
+ 8B7930FE21F4AC25006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -70,25 +72,43 @@
);
name = /Users/christopherjohnson/Desktop/MacAU/SurgeTideMono/Info.plist;
rLen = 0;
- rLoc = 9223372036854775808;
+ rLoc = 9223372036854775807;
};
- 8B9D76841F7FA2BF007AB60F /* PlistBookmark */ = {
- isa = PlistBookmark;
- fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
- fallbackIsa = PBXBookmark;
- isK = 0;
- kPath = (
- CFBundleName,
- );
- name = /Users/christopherjohnson/Desktop/MacAU/SurgeTideMono/Info.plist;
+ 8B7930FF21F4AC25006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* SurgeTideMono.h */;
+ name = "SurgeTideMono.h: 134";
rLen = 0;
- rLoc = 9223372036854775807;
+ rLoc = 5400;
+ rType = 0;
+ vrLen = 247;
+ vrLoc = 5329;
+ };
+ 8B79310121F4AC25006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* SurgeTideMono.cpp */;
+ name = "SurgeTideMono.cpp: 263";
+ rLen = 0;
+ rLoc = 11716;
+ rType = 0;
+ vrLen = 788;
+ vrLoc = 11016;
+ };
+ 8B79310621F4AC4F006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* SurgeTideMono.cpp */;
+ name = "SurgeTideMono.cpp: 263";
+ rLen = 0;
+ rLoc = 11716;
+ rType = 0;
+ vrLen = 791;
+ vrLoc = 11013;
};
8BA05A660720730100365D66 /* SurgeTideMono.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 3757}}";
- sepNavSelRange = "{9553, 0}";
- sepNavVisRange = "{8589, 2453}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 3770}}";
+ sepNavSelRange = "{11716, 0}";
+ sepNavVisRange = "{11013, 791}";
sepNavWindowFrame = "{{733, 43}, {679, 835}}";
};
};
@@ -102,9 +122,9 @@
};
8BC6025B073B072D006C4272 /* SurgeTideMono.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1898}}";
- sepNavSelRange = "{5377, 240}";
- sepNavVisRange = "{3991, 1626}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2054}}";
+ sepNavSelRange = "{5400, 0}";
+ sepNavVisRange = "{5329, 247}";
sepNavWindowFrame = "{{849, 40}, {679, 835}}";
};
};
diff --git a/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.perspectivev3
index 1739112..606086c 100755
--- a/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>175</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -308,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {175, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -318,19 +316,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {192, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>175</real>
</array>
<key>RubberWindowFrame</key>
- <string>528 221 841 654 0 0 1440 878 </string>
+ <string>454 219 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>192pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -341,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Info.plist</string>
+ <string>SurgeTideMono.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,14 +347,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Info.plist</string>
+ <string>SurgeTideMono.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D76841F7FA2BF007AB60F</string>
+ <string>8B79310621F4AC4F006E9731</string>
<key>history</key>
<array>
- <string>8B9D67A21F7C9057007AB60F</string>
+ <string>8B7930FE21F4AC25006E9731</string>
+ <string>8B7930FF21F4AC25006E9731</string>
+ <string>8B79310121F4AC25006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 229}}</string>
+ <string>{{0, 0}, {644, 402}}</string>
<key>RubberWindowFrame</key>
- <string>528 221 841 654 0 0 1440 878 </string>
+ <string>454 219 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>229pt</string>
+ <string>402pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>379pt</string>
+ <string>206pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 352}}</string>
- <key>RubberWindowFrame</key>
- <string>528 221 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {644, 179}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {644, 179}}</string>
+ <key>RubberWindowFrame</key>
+ <string>454 219 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -460,7 +460,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>644pt</string>
</dict>
</array>
<key>Name</key>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D76851F7FA2BF007AB60F</string>
+ <string>8B79310721F4AC4F006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D76861F7FA2BF007AB60F</string>
+ <string>8B79310821F4AC4F006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D76871F7FA2BF007AB60F</string>
+ <string>8B79310921F4AC4F006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -656,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528458431.67624801</real>
+ <real>569683023.93876398</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -673,11 +673,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D76881F7FA2BF007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>528 221 841 654 0 0 1440 878 </string>
+ <string>454 219 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Swell/Swell.cpp b/plugins/MacAU/Swell/Swell.cpp
index 821b33d..09dec89 100755
--- a/plugins/MacAU/Swell/Swell.cpp
+++ b/plugins/MacAU/Swell/Swell.cpp
@@ -176,10 +176,7 @@ void Swell::SwellKernel::Reset()
{
swell = 0.0;
louder = false;
-
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -197,10 +194,6 @@ void Swell::SwellKernel::Process( const Float32 *inSourceP,
long double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
Float64 thresholdOn = pow(GetParameter( kParam_One ),2) * GetParameter( kParam_Two );
Float64 speedOn = (pow(GetParameter( kParam_Two ),2)*0.001)/overallscale;
Float64 thresholdOff = thresholdOn * GetParameter( kParam_Two );
@@ -252,20 +245,11 @@ void Swell::SwellKernel::Process( const Float32 *inSourceP,
inputSample = (inputSample * wet) + (drySample * dry);
}
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/Swell/Swell.h b/plugins/MacAU/Swell/Swell.h
index 31aa5a8..fa35436 100755
--- a/plugins/MacAU/Swell/Swell.h
+++ b/plugins/MacAU/Swell/Swell.h
@@ -134,10 +134,7 @@ public:
long double swell;
bool louder;
-
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.pbxuser
index 3af313e..ac01270 100755
--- a/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 398,
20,
48,
43,
@@ -49,24 +49,55 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 532491016;
- PBXWorkspaceStateSaveDate = 532491016;
+ PBXPerProjectTemplateStateSaveDate = 569683044;
+ PBXWorkspaceStateSaveDate = 569683044;
};
perUserProjectItems = {
+ 8B79311521F4ACEB006E9731 /* PBXTextBookmark */ = 8B79311521F4ACEB006E9731 /* PBXTextBookmark */;
+ 8B79311721F4ACEB006E9731 /* PBXTextBookmark */ = 8B79311721F4ACEB006E9731 /* PBXTextBookmark */;
+ 8B79311C21F4AD21006E9731 /* PBXTextBookmark */ = 8B79311C21F4AD21006E9731 /* PBXTextBookmark */;
8BB5DDF41FBD106E008B4570 /* PlistBookmark */ = 8BB5DDF41FBD106E008B4570 /* PlistBookmark */;
8BCC7CCD1FBD2D3C00982BD6 /* PBXTextBookmark */ = 8BCC7CCD1FBD2D3C00982BD6 /* PBXTextBookmark */;
- 8BCC7CCE1FBD2D3C00982BD6 /* PBXBookmark */ = 8BCC7CCE1FBD2D3C00982BD6 /* PBXBookmark */;
- 8BCC7CD31FBD2E6800982BD6 /* PBXTextBookmark */ = 8BCC7CD31FBD2E6800982BD6 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B79311521F4ACEB006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* Swell.h */;
+ name = "Swell.h: 137";
+ rLen = 0;
+ rLoc = 5329;
+ rType = 0;
+ vrLen = 700;
+ vrLoc = 4739;
+ };
+ 8B79311721F4ACEB006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Swell.cpp */;
+ name = "Swell.cpp: 247";
+ rLen = 0;
+ rLoc = 11121;
+ rType = 0;
+ vrLen = 871;
+ vrLoc = 10589;
+ };
+ 8B79311C21F4AD21006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Swell.cpp */;
+ name = "Swell.cpp: 247";
+ rLen = 0;
+ rLoc = 11121;
+ rType = 0;
+ vrLen = 957;
+ vrLoc = 10503;
+ };
8BA05A660720730100365D66 /* Swell.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3809}}";
- sepNavSelRange = "{11320, 0}";
- sepNavVisRange = "{9895, 1840}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 3484}}";
+ sepNavSelRange = "{11121, 0}";
+ sepNavVisRange = "{10503, 957}";
sepNavWindowFrame = "{{545, 39}, {895, 839}}";
};
};
@@ -92,9 +123,9 @@
};
8BC6025B073B072D006C4272 /* Swell.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 1755}}";
- sepNavSelRange = "{2846, 0}";
- sepNavVisRange = "{2642, 366}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2275}}";
+ sepNavSelRange = "{5329, 0}";
+ sepNavVisRange = "{4739, 700}";
sepNavWindowFrame = "{{678, 39}, {895, 839}}";
};
};
@@ -108,20 +139,6 @@
vrLen = 336;
vrLoc = 2594;
};
- 8BCC7CCE1FBD2D3C00982BD6 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Swell.h */;
- };
- 8BCC7CD31FBD2E6800982BD6 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* Swell.h */;
- name = "Swell.h: 57";
- rLen = 0;
- rLoc = 2846;
- rType = 0;
- vrLen = 366;
- vrLoc = 2642;
- };
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
diff --git a/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3
index cf784ae..5de7e2f 100755
--- a/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>182</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -308,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {182, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -318,19 +316,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {199, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>182</real>
</array>
<key>RubberWindowFrame</key>
- <string>580 200 841 654 0 0 1440 878 </string>
+ <string>450 207 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>199pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -341,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Swell.h</string>
+ <string>Swell.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,16 +347,17 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Swell.h</string>
+ <string>Swell.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BCC7CD31FBD2E6800982BD6</string>
+ <string>8B79311C21F4AD21006E9731</string>
<key>history</key>
<array>
<string>8BB5DDF41FBD106E008B4570</string>
<string>8BCC7CCD1FBD2D3C00982BD6</string>
- <string>8BCC7CCE1FBD2D3C00982BD6</string>
+ <string>8B79311521F4ACEB006E9731</string>
+ <string>8B79311721F4ACEB006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 254}}</string>
+ <string>{{0, 0}, {637, 421}}</string>
<key>RubberWindowFrame</key>
- <string>580 200 841 654 0 0 1440 878 </string>
+ <string>450 207 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>254pt</string>
+ <string>421pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>354pt</string>
+ <string>187pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 327}}</string>
- <key>RubberWindowFrame</key>
- <string>580 200 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {637, 160}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {637, 160}}</string>
+ <key>RubberWindowFrame</key>
+ <string>450 207 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -462,7 +461,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>637pt</string>
</dict>
</array>
<key>Name</key>
@@ -481,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BCC7CA61FBD2B1F00982BD6</string>
+ <string>8B79311D21F4AD21006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BCC7CA71FBD2B1F00982BD6</string>
+ <string>8B79311E21F4AD21006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BCC7CA81FBD2B1F00982BD6</string>
+ <string>8B79311F21F4AD21006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>532491880.84511602</real>
+ <real>569683233.59178197</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -678,7 +677,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/Swell/Swell.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>580 200 841 654 0 0 1440 878 </string>
+ <string>450 207 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.mode1v3
index f301be9..f301be9 100644..100755
--- a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.mode1v3
+++ b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.mode1v3
diff --git a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser
index d9faebe..d9faebe 100644..100755
--- a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser
diff --git a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3
index 00fe290..00fe290 100644..100755
--- a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3
diff --git a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/project.pbxproj b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/project.pbxproj
index 3e6384c..3e6384c 100644..100755
--- a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/project.pbxproj
+++ b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/project.pbxproj
diff --git a/plugins/MacAU/TapeDelay/TapeDelay.cpp b/plugins/MacAU/TapeDelay/TapeDelay.cpp
index 2a8219e..8f0ea2b 100755
--- a/plugins/MacAU/TapeDelay/TapeDelay.cpp
+++ b/plugins/MacAU/TapeDelay/TapeDelay.cpp
@@ -322,23 +322,15 @@ void TapeDelay::TapeDelayKernel::Process( const Float32 *inSourceP,
//yes this is a second bounds check. it's cheap, check EVERY time
inputSample = (inputSample * dry) + (d[delay] * wet);
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser
index 1ad93f8..49f55d6 100755
--- a/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser
@@ -51,23 +51,54 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 565748345;
- PBXWorkspaceStateSaveDate = 565748345;
+ PBXPerProjectTemplateStateSaveDate = 569683336;
+ PBXWorkspaceStateSaveDate = 569683336;
};
perUserProjectItems = {
+ 8B79312721F4AD85006E9731 /* PBXTextBookmark */ = 8B79312721F4AD85006E9731 /* PBXTextBookmark */;
+ 8B79313821F4AD8C006E9731 /* PBXTextBookmark */ = 8B79313821F4AD8C006E9731 /* PBXTextBookmark */;
+ 8B79313D21F4ADA2006E9731 /* PBXTextBookmark */ = 8B79313D21F4ADA2006E9731 /* PBXTextBookmark */;
8BBB310821B8995100825986 /* PlistBookmark */ = 8BBB310821B8995100825986 /* PlistBookmark */;
- 8BBB311D21B89C1700825986 /* PBXTextBookmark */ = 8BBB311D21B89C1700825986 /* PBXTextBookmark */;
- 8BBB319821B8A4C800825986 /* PBXTextBookmark */ = 8BBB319821B8A4C800825986 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B79312721F4AD85006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* TapeDelay.h */;
+ name = "TapeDelay.h: 150";
+ rLen = 1;
+ rLoc = 5889;
+ rType = 0;
+ vrLen = 679;
+ vrLoc = 5344;
+ };
+ 8B79313821F4AD8C006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* TapeDelay.cpp */;
+ name = "TapeDelay.cpp: 330";
+ rLen = 0;
+ rLoc = 14179;
+ rType = 0;
+ vrLen = 988;
+ vrLoc = 13279;
+ };
+ 8B79313D21F4ADA2006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* TapeDelay.cpp */;
+ name = "TapeDelay.cpp: 330";
+ rLen = 0;
+ rLoc = 14179;
+ rType = 0;
+ vrLen = 987;
+ vrLoc = 13279;
+ };
8BA05A660720730100365D66 /* TapeDelay.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1055, 4615}}";
- sepNavSelRange = "{13925, 0}";
- sepNavVisRange = "{13802, 523}";
+ sepNavIntBoundsRect = "{{0, 0}, {1055, 4641}}";
+ sepNavSelRange = "{14179, 0}";
+ sepNavVisRange = "{13279, 987}";
sepNavWindowFrame = "{{456, 34}, {1129, 834}}";
};
};
@@ -91,31 +122,11 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8BBB311D21B89C1700825986 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* TapeDelay.cpp */;
- name = "TapeDelay.cpp: 323";
- rLen = 0;
- rLoc = 13925;
- rType = 0;
- vrLen = 526;
- vrLoc = 13802;
- };
- 8BBB319821B8A4C800825986 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* TapeDelay.cpp */;
- name = "TapeDelay.cpp: 323";
- rLen = 0;
- rLoc = 13925;
- rType = 0;
- vrLen = 523;
- vrLoc = 13802;
- };
8BC6025B073B072D006C4272 /* TapeDelay.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1082, 2054}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2054}}";
sepNavSelRange = "{5889, 1}";
- sepNavVisRange = "{4426, 1597}";
+ sepNavVisRange = "{5344, 679}";
sepNavWindowFrame = "{{311, 44}, {1129, 834}}";
};
};
diff --git a/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3
index a2673ea..09bd991 100755
--- a/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3
@@ -324,7 +324,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>546 187 841 654 0 0 1440 878 </string>
+ <string>400 207 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,11 +352,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBB319821B8A4C800825986</string>
+ <string>8B79313D21F4ADA2006E9731</string>
<key>history</key>
<array>
<string>8BBB310821B8995100825986</string>
- <string>8BBB311D21B89C1700825986</string>
+ <string>8B79312721F4AD85006E9731</string>
+ <string>8B79313821F4AD8C006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,23 +371,21 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 173}}</string>
+ <string>{{0, 0}, {531, 430}}</string>
<key>RubberWindowFrame</key>
- <string>546 187 841 654 0 0 1440 878 </string>
+ <string>400 207 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>173pt</string>
+ <string>430pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>435pt</string>
+ <string>178pt</string>
<key>Tabs</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -397,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 408}}</string>
- <key>RubberWindowFrame</key>
- <string>546 187 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 151}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {531, 151}}</string>
+ <key>RubberWindowFrame</key>
+ <string>400 207 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -481,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBB316E21B8A29600825986</string>
+ <string>8B79313E21F4ADA2006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBB316F21B8A29600825986</string>
+ <string>8B79313F21F4ADA2006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BBB317021B8A29600825986</string>
+ <string>8B79314021F4ADA2006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>565748936.10847795</real>
+ <real>569683362.16233301</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,11 +674,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBB319921B8A4C800825986</string>
<string>/Users/christopherjohnson/Desktop/MacAU/TapeDelay/TapeDelay.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>546 187 841 654 0 0 1440 878 </string>
+ <string>400 207 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser
index cd7f8c0..6e62cb5 100755
--- a/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528458444;
- PBXWorkspaceStateSaveDate = 528458444;
+ PBXPerProjectTemplateStateSaveDate = 565558307;
+ PBXWorkspaceStateSaveDate = 565558307;
};
perUserProjectItems = {
8B4FD0461DF97DCE00999740 /* PlistBookmark */ = 8B4FD0461DF97DCE00999740 /* PlistBookmark */;
- 8B9D67AE1F7C9067007AB60F /* PBXTextBookmark */ = 8B9D67AE1F7C9067007AB60F /* PBXTextBookmark */;
- 8B9D76931F7FA2E5007AB60F /* PBXTextBookmark */ = 8B9D76931F7FA2E5007AB60F /* PBXTextBookmark */;
+ 8B913F63213DBB0300BA6EEC /* PBXTextBookmark */ = 8B913F63213DBB0300BA6EEC /* PBXTextBookmark */;
+ 8BDA3BE121B5BE7800CC56FA /* PBXTextBookmark */ = 8BDA3BE121B5BE7800CC56FA /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -73,32 +73,22 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B9D67AE1F7C9067007AB60F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* TapeDither.cpp */;
- name = "TapeDither.cpp: 182";
- rLen = 0;
- rLoc = 9240;
- rType = 0;
- vrLen = 471;
- vrLoc = 7491;
- };
- 8B9D76931F7FA2E5007AB60F /* PBXTextBookmark */ = {
+ 8B913F63213DBB0300BA6EEC /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* TapeDither.cpp */;
name = "TapeDither.cpp: 208";
rLen = 0;
rLoc = 9240;
rType = 0;
- vrLen = 719;
- vrLoc = 7534;
+ vrLen = 682;
+ vrLoc = 7571;
};
8BA05A660720730100365D66 /* TapeDither.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 2964}}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 2938}}";
sepNavSelRange = "{9240, 0}";
- sepNavVisRange = "{7534, 719}";
- sepNavWindowFrame = "{{733, 43}, {679, 835}}";
+ sepNavVisRange = "{7598, 655}";
+ sepNavWindowFrame = "{{742, 43}, {679, 835}}";
};
};
8BA05A690720730100365D66 /* TapeDitherVersion.h */ = {
@@ -112,7 +102,7 @@
8BC6025B073B072D006C4272 /* TapeDither.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {894, 1742}}";
- sepNavSelRange = "{4852, 0}";
+ sepNavSelRange = "{4959, 54}";
sepNavVisRange = "{3476, 1700}";
sepNavWindowFrame = "{{711, 43}, {679, 835}}";
};
@@ -131,6 +121,16 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
+ 8BDA3BE121B5BE7800CC56FA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* TapeDither.cpp */;
+ name = "TapeDither.cpp: 208";
+ rLen = 0;
+ rLoc = 9240;
+ rType = 0;
+ vrLen = 655;
+ vrLoc = 7598;
+ };
8D01CCC60486CAD60068D4B7 /* TapeDither */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3
index 8282adf..b98406f 100755
--- a/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3
@@ -325,7 +325,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 182 841 654 0 0 1440 878 </string>
+ <string>649 171 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,11 +353,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D76931F7FA2E5007AB60F</string>
+ <string>8BDA3BE121B5BE7800CC56FA</string>
<key>history</key>
<array>
<string>8B4FD0461DF97DCE00999740</string>
- <string>8B9D67AE1F7C9067007AB60F</string>
+ <string>8B913F63213DBB0300BA6EEC</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 229}}</string>
+ <string>{{0, 0}, {531, 202}}</string>
<key>RubberWindowFrame</key>
- <string>599 182 841 654 0 0 1440 878 </string>
+ <string>649 171 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>229pt</string>
+ <string>202pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>379pt</string>
+ <string>406pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +396,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 352}}</string>
+ <string>{{10, 27}, {531, 379}}</string>
<key>RubberWindowFrame</key>
- <string>599 182 841 654 0 0 1440 878 </string>
+ <string>649 171 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -480,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D76941F7FA2E5007AB60F</string>
+ <string>8BDA3BE221B5BE7800CC56FA</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D76951F7FA2E5007AB60F</string>
+ <string>8BDA3BE321B5BE7800CC56FA</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D76961F7FA2E5007AB60F</string>
+ <string>8BDA3BE421B5BE7800CC56FA</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528458469.64023101</real>
+ <real>565558904.14568102</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,11 +674,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D76971F7FA2E5007AB60F</string>
+ <string>8BDA3BE521B5BE7800CC56FA</string>
<string>/Users/christopherjohnson/Desktop/MacAU/TapeDither/TapeDither.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 182 841 654 0 0 1440 878 </string>
+ <string>649 171 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/TapeDust/TapeDust.cpp b/plugins/MacAU/TapeDust/TapeDust.cpp
index 1f87d66..c586339 100755
--- a/plugins/MacAU/TapeDust/TapeDust.cpp
+++ b/plugins/MacAU/TapeDust/TapeDust.cpp
@@ -167,9 +167,8 @@ ComponentResult TapeDust::Initialize()
void TapeDust::TapeDustKernel::Reset()
{
for(int count = 0; count < 11; count++) {b[count] = 0.0; f[count] = 0.0;}
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
+ fpFlip = false;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -184,9 +183,6 @@ void TapeDust::TapeDustKernel::Process( const Float32 *inSourceP,
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSample;
Float64 drySample;
Float64 rRange = pow(GetParameter( kParam_One ),2)*5.0;
@@ -250,20 +246,13 @@ void TapeDust::TapeDustKernel::Process( const Float32 *inSourceP,
if (wet < 1.0) {
inputSample = (inputSample * wet) + (drySample * dry);
}
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/TapeDust/TapeDust.h b/plugins/MacAU/TapeDust/TapeDust.h
index 55255f3..6898d7e 100755
--- a/plugins/MacAU/TapeDust/TapeDust.h
+++ b/plugins/MacAU/TapeDust/TapeDust.h
@@ -130,8 +130,7 @@ public:
private:
Float64 b[11];
Float64 f[11];
- long double fpNShapeA;
- long double fpNShapeB;
+ long double fpNShape;
bool fpFlip;
};
};
diff --git a/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser
index 910a299..7e3a474 100755
--- a/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 499,
20,
48,
43,
@@ -49,18 +49,20 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528458482;
- PBXWorkspaceStateSaveDate = 528458482;
+ PBXPerProjectTemplateStateSaveDate = 569683382;
+ PBXWorkspaceStateSaveDate = 569683382;
};
perUserProjectItems = {
- 8B9D67BE1F7C9098007AB60F /* PlistBookmark */ = 8B9D67BE1F7C9098007AB60F /* PlistBookmark */;
- 8B9D76A21F7FA30E007AB60F /* PlistBookmark */ = 8B9D76A21F7FA30E007AB60F /* PlistBookmark */;
+ 8B79314C21F4AE33006E9731 /* PlistBookmark */ = 8B79314C21F4AE33006E9731 /* PlistBookmark */;
+ 8B79315421F4AE7A006E9731 /* PBXTextBookmark */ = 8B79315421F4AE7A006E9731 /* PBXTextBookmark */;
+ 8B79315521F4AE7A006E9731 /* PBXTextBookmark */ = 8B79315521F4AE7A006E9731 /* PBXTextBookmark */;
+ 8B79315621F4AE7A006E9731 /* PBXTextBookmark */ = 8B79315621F4AE7A006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D67BE1F7C9098007AB60F /* PlistBookmark */ = {
+ 8B79314C21F4AE33006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -70,25 +72,43 @@
);
name = /Users/christopherjohnson/Desktop/MacAU/TapeDust/Info.plist;
rLen = 0;
- rLoc = 9223372036854775808;
+ rLoc = 9223372036854775807;
};
- 8B9D76A21F7FA30E007AB60F /* PlistBookmark */ = {
- isa = PlistBookmark;
- fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
- fallbackIsa = PBXBookmark;
- isK = 0;
- kPath = (
- CFBundleName,
- );
- name = /Users/christopherjohnson/Desktop/MacAU/TapeDust/Info.plist;
+ 8B79315421F4AE7A006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* TapeDust.h */;
+ name = "TapeDust.h: 134";
rLen = 0;
- rLoc = 9223372036854775807;
+ rLoc = 5248;
+ rType = 0;
+ vrLen = 1104;
+ vrLoc = 4248;
+ };
+ 8B79315521F4AE7A006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* TapeDust.cpp */;
+ name = "TapeDust.cpp: 171";
+ rLen = 0;
+ rLoc = 7722;
+ rType = 0;
+ vrLen = 1529;
+ vrLoc = 7003;
+ };
+ 8B79315621F4AE7A006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* TapeDust.cpp */;
+ name = "TapeDust.cpp: 249";
+ rLen = 0;
+ rLoc = 10792;
+ rType = 0;
+ vrLen = 959;
+ vrLoc = 10175;
};
8BA05A660720730100365D66 /* TapeDust.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {958, 3679}}";
- sepNavSelRange = "{9254, 0}";
- sepNavVisRange = "{8609, 2167}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 3666}}";
+ sepNavSelRange = "{10792, 0}";
+ sepNavVisRange = "{10175, 959}";
sepNavWindowFrame = "{{415, 39}, {1005, 839}}";
};
};
@@ -102,9 +122,9 @@
};
8BC6025B073B072D006C4272 /* TapeDust.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {958, 1846}}";
- sepNavSelRange = "{5174, 36}";
- sepNavVisRange = "{3746, 1638}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2054}}";
+ sepNavSelRange = "{5248, 0}";
+ sepNavVisRange = "{4248, 1110}";
sepNavWindowFrame = "{{4, 39}, {1005, 839}}";
};
};
diff --git a/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3
index f7b0fff..c956cc8 100755
--- a/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>841</integer>
- <integer>841</integer>
+ <integer>927</integer>
+ <integer>927</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>167</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -308,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {167, 689}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -318,30 +316,32 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {184, 707}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>167</real>
</array>
<key>RubberWindowFrame</key>
- <string>432 155 841 654 0 0 1440 878 </string>
+ <string>372 100 927 748 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>184pt</string>
</dict>
<dict>
<key>Dock</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Info.plist</string>
+ <string>TapeDust.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,14 +349,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Info.plist</string>
+ <string>TapeDust.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D76A21F7FA30E007AB60F</string>
+ <string>8B79315621F4AE7A006E9731</string>
<key>history</key>
<array>
- <string>8B9D67BE1F7C9098007AB60F</string>
+ <string>8B79314C21F4AE33006E9731</string>
+ <string>8B79315421F4AE7A006E9731</string>
+ <string>8B79315521F4AE7A006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +372,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 229}}</string>
+ <string>{{0, 0}, {738, 552}}</string>
<key>RubberWindowFrame</key>
- <string>432 155 841 654 0 0 1440 878 </string>
+ <string>372 100 927 748 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>229pt</string>
+ <string>552pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>379pt</string>
+ <string>150pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +397,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 352}}</string>
- <key>RubberWindowFrame</key>
- <string>432 155 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {738, 123}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +451,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {738, 123}}</string>
+ <key>RubberWindowFrame</key>
+ <string>372 100 927 748 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -460,7 +462,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>738pt</string>
</dict>
</array>
<key>Name</key>
@@ -479,11 +481,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D76A31F7FA30E007AB60F</string>
+ <string>8B79315721F4AE7A006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D76A41F7FA30E007AB60F</string>
+ <string>8B79315821F4AE7A006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D76A51F7FA30E007AB60F</string>
+ <string>8B79315921F4AE7A006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -656,7 +658,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528458510.42729199</real>
+ <real>569683578.38407302</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -673,11 +675,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D76A61F7FA30E007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/TapeDust/TapeDust.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>432 155 841 654 0 0 1440 878 </string>
+ <string>372 100 927 748 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/TapeFat/TapeFat.cpp b/plugins/MacAU/TapeFat/TapeFat.cpp
index d95de3a..42e9d60 100755
--- a/plugins/MacAU/TapeFat/TapeFat.cpp
+++ b/plugins/MacAU/TapeFat/TapeFat.cpp
@@ -263,23 +263,15 @@ void TapeFat::TapeFatKernel::Process( const Float32 *inSourceP,
gcount--;
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser
index b5c4293..640ec56 100755
--- a/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 398,
20,
48,
43,
@@ -49,24 +49,54 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 566516790;
- PBXWorkspaceStateSaveDate = 566516790;
+ PBXPerProjectTemplateStateSaveDate = 569684489;
+ PBXWorkspaceStateSaveDate = 569684489;
};
perUserProjectItems = {
+ 8B79316521F4B25B006E9731 /* PBXTextBookmark */ = 8B79316521F4B25B006E9731 /* PBXTextBookmark */;
+ 8B79316721F4B25B006E9731 /* PBXTextBookmark */ = 8B79316721F4B25B006E9731 /* PBXTextBookmark */;
+ 8B79316C21F4B278006E9731 /* PBXTextBookmark */ = 8B79316C21F4B278006E9731 /* PBXTextBookmark */;
8BBB319521B8A4BD00825986 /* PlistBookmark */ = 8BBB319521B8A4BD00825986 /* PlistBookmark */;
- 8BBB336921C45BB400825986 /* PBXTextBookmark */ = 8BBB336921C45BB400825986 /* PBXTextBookmark */;
- 8BBB339021C45C6E00825986 /* PBXTextBookmark */ = 8BBB339021C45C6E00825986 /* PBXTextBookmark */;
- 8BBB339121C45C6E00825986 /* PBXTextBookmark */ = 8BBB339121C45C6E00825986 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B79316521F4B25B006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* TapeFat.h */;
+ name = "TapeFat.h: 133";
+ rLen = 0;
+ rLoc = 5283;
+ rType = 0;
+ vrLen = 301;
+ vrLoc = 5036;
+ };
+ 8B79316721F4B25B006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* TapeFat.cpp */;
+ name = "TapeFat.cpp: 276";
+ rLen = 0;
+ rLoc = 11440;
+ rType = 0;
+ vrLen = 1045;
+ vrLoc = 10398;
+ };
+ 8B79316C21F4B278006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* TapeFat.cpp */;
+ name = "TapeFat.cpp: 276";
+ rLen = 0;
+ rLoc = 11440;
+ rType = 0;
+ vrLen = 1082;
+ vrLoc = 10361;
+ };
8BA05A660720730100365D66 /* TapeFat.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {817, 3900}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{3, 648}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 3835}}";
+ sepNavSelRange = "{11440, 0}";
+ sepNavVisRange = "{10361, 1082}";
sepNavWindowFrame = "{{777, -19}, {1129, 834}}";
};
};
@@ -90,41 +120,11 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8BBB336921C45BB400825986 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* TapeFat.cpp */;
- name = "TapeFat.cpp: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 651;
- vrLoc = 0;
- };
- 8BBB339021C45C6E00825986 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* TapeFat.h */;
- name = "TapeFat.h: 133";
- rLen = 0;
- rLoc = 5283;
- rType = 0;
- vrLen = 302;
- vrLoc = 5036;
- };
- 8BBB339121C45C6E00825986 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* TapeFat.cpp */;
- name = "TapeFat.cpp: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 648;
- vrLoc = 3;
- };
8BC6025B073B072D006C4272 /* TapeFat.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {894, 2015}}";
sepNavSelRange = "{5283, 0}";
- sepNavVisRange = "{5036, 302}";
+ sepNavVisRange = "{5036, 301}";
sepNavWindowFrame = "{{806, -59}, {1129, 834}}";
};
};
diff --git a/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3
index dfd80e8..343eaae 100755
--- a/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>182</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -309,7 +307,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {182, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -319,19 +317,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {199, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>182</real>
</array>
<key>RubberWindowFrame</key>
- <string>599 89 841 654 0 0 1440 878 </string>
+ <string>440 183 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>199pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -354,12 +352,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBB339121C45C6E00825986</string>
+ <string>8B79316C21F4B278006E9731</string>
<key>history</key>
<array>
<string>8BBB319521B8A4BD00825986</string>
- <string>8BBB339021C45C6E00825986</string>
- <string>8BBB336921C45BB400825986</string>
+ <string>8B79316521F4B25B006E9731</string>
+ <string>8B79316721F4B25B006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 216}}</string>
+ <string>{{0, 0}, {637, 512}}</string>
<key>RubberWindowFrame</key>
- <string>599 89 841 654 0 0 1440 878 </string>
+ <string>440 183 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>216pt</string>
+ <string>512pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>392pt</string>
+ <string>96pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 365}}</string>
- <key>RubberWindowFrame</key>
- <string>599 89 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {637, 69}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {637, 69}}</string>
+ <key>RubberWindowFrame</key>
+ <string>440 183 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -463,7 +461,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>637pt</string>
</dict>
</array>
<key>Name</key>
@@ -482,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBB339221C45C6E00825986</string>
+ <string>8B79316D21F4B278006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBB339321C45C6E00825986</string>
+ <string>8B79316E21F4B278006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BBB339421C45C6E00825986</string>
+ <string>8B79316F21F4B278006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>566516846.91763997</real>
+ <real>569684600.92815804</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -676,11 +674,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBB339521C45C6E00825986</string>
<string>/Users/christopherjohnson/Desktop/MacAU/TapeFat/TapeFat.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>599 89 841 654 0 0 1440 878 </string>
+ <string>440 183 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Thunder/Thunder.cpp b/plugins/MacAU/Thunder/Thunder.cpp
index 64bdf0c..f9dc657 100755
--- a/plugins/MacAU/Thunder/Thunder.cpp
+++ b/plugins/MacAU/Thunder/Thunder.cpp
@@ -179,10 +179,8 @@ ComponentResult Thunder::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Thunder::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
muSpeedA = 10000;
muSpeedB = 10000;
muCoefficientA = 1;
@@ -240,9 +238,6 @@ OSStatus Thunder::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags
Float64 resultML;
Float64 resultMR;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -423,28 +418,16 @@ OSStatus Thunder::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags
inputSampleL *= outputGain;
inputSampleR *= outputGain;
}
-
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
flip = !flip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacAU/Thunder/Thunder.h b/plugins/MacAU/Thunder/Thunder.h
index 4c01ac4..233c3db 100755
--- a/plugins/MacAU/Thunder/Thunder.h
+++ b/plugins/MacAU/Thunder/Thunder.h
@@ -129,10 +129,8 @@ private:
Float64 iirSampleAM;
Float64 iirSampleBM;
Float64 iirSampleCM;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
};
diff --git a/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser
index 908569c..32120c0 100755
--- a/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 383,
20,
48,
43,
@@ -49,38 +49,59 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528458521;
- PBXWorkspaceStateSaveDate = 528458521;
+ PBXPerProjectTemplateStateSaveDate = 569684635;
+ PBXWorkspaceStateSaveDate = 569684635;
};
perUserProjectItems = {
- 8B9D67CF1F7C90C4007AB60F /* PBXTextBookmark */ = 8B9D67CF1F7C90C4007AB60F /* PBXTextBookmark */;
- 8B9D76B11F7FA32E007AB60F /* PBXTextBookmark */ = 8B9D76B11F7FA32E007AB60F /* PBXTextBookmark */;
+ 8B79317B21F4B33A006E9731 /* PBXTextBookmark */ = 8B79317B21F4B33A006E9731 /* PBXTextBookmark */;
+ 8B79317C21F4B33A006E9731 /* PBXTextBookmark */ = 8B79317C21F4B33A006E9731 /* PBXTextBookmark */;
+ 8B79317E21F4B33A006E9731 /* PBXTextBookmark */ = 8B79317E21F4B33A006E9731 /* PBXTextBookmark */;
+ 8B79318321F4B354006E9731 /* PBXTextBookmark */ = 8B79318321F4B354006E9731 /* PBXTextBookmark */;
8B9EC58B1D90BE2400BD1DCA /* PlistBookmark */ = 8B9EC58B1D90BE2400BD1DCA /* PlistBookmark */;
- 8BFE4BDA1D92E59A00BBC6AC /* PBXTextBookmark */ = 8BFE4BDA1D92E59A00BBC6AC /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D67CF1F7C90C4007AB60F /* PBXTextBookmark */ = {
+ 8B79317B21F4B33A006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* ThunderVersion.h */;
name = "ThunderVersion.h: 51";
rLen = 0;
rLoc = 2757;
rType = 0;
- vrLen = 344;
- vrLoc = 2598;
+ vrLen = 286;
+ vrLoc = 2656;
};
- 8B9D76B11F7FA32E007AB60F /* PBXTextBookmark */ = {
+ 8B79317C21F4B33A006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 8BA05A690720730100365D66 /* ThunderVersion.h */;
- name = "ThunderVersion.h: 51";
+ fRef = 8BC6025B073B072D006C4272 /* Thunder.h */;
+ name = "Thunder.h: 134";
rLen = 0;
- rLoc = 2757;
+ rLoc = 5285;
+ rType = 0;
+ vrLen = 598;
+ vrLoc = 4806;
+ };
+ 8B79317E21F4B33A006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Thunder.cpp */;
+ name = "Thunder.cpp: 431";
+ rLen = 0;
+ rLoc = 16556;
+ rType = 0;
+ vrLen = 1132;
+ vrLoc = 15627;
+ };
+ 8B79318321F4B354006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Thunder.cpp */;
+ name = "Thunder.cpp: 431";
+ rLen = 0;
+ rLoc = 16556;
rType = 0;
- vrLen = 315;
- vrLoc = 2627;
+ vrLen = 1172;
+ vrLoc = 15587;
};
8B9EC58B1D90BE2400BD1DCA /* PlistBookmark */ = {
isa = PlistBookmark;
@@ -96,25 +117,25 @@
};
8BA05A660720730100365D66 /* Thunder.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 6071}}";
- sepNavSelRange = "{10065, 0}";
- sepNavVisRange = "{9779, 2277}";
+ sepNavIntBoundsRect = "{{0, 0}, {754, 6227}}";
+ sepNavSelRange = "{16556, 0}";
+ sepNavVisRange = "{15587, 1172}";
sepNavWindowFrame = "{{258, 39}, {895, 819}}";
};
};
8BA05A690720730100365D66 /* ThunderVersion.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 806}}";
+ sepNavIntBoundsRect = "{{0, 0}, {824, 832}}";
sepNavSelRange = "{2757, 0}";
- sepNavVisRange = "{2627, 315}";
+ sepNavVisRange = "{2656, 286}";
sepNavWindowFrame = "{{15, 54}, {895, 819}}";
};
};
8BC6025B073B072D006C4272 /* Thunder.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1807}}";
- sepNavSelRange = "{5082, 0}";
- sepNavVisRange = "{3802, 1647}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2197}}";
+ sepNavSelRange = "{5285, 0}";
+ sepNavVisRange = "{4806, 598}";
sepNavWindowFrame = "{{7, 42}, {895, 819}}";
};
};
@@ -132,16 +153,6 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BFE4BDA1D92E59A00BBC6AC /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Thunder.cpp */;
- name = "Thunder.cpp: 227";
- rLen = 0;
- rLoc = 9525;
- rType = 0;
- vrLen = 508;
- vrLoc = 12277;
- };
8D01CCC60486CAD60068D4B7 /* Thunder */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3
index 25a2588..5586ae7 100755
--- a/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>197</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -308,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {197, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -318,19 +316,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {214, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>197</real>
</array>
<key>RubberWindowFrame</key>
- <string>566 213 841 654 0 0 1440 878 </string>
+ <string>473 199 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>214pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -341,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>ThunderVersion.h</string>
+ <string>Thunder.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -349,16 +347,17 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>ThunderVersion.h</string>
+ <string>Thunder.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D76B11F7FA32E007AB60F</string>
+ <string>8B79318321F4B354006E9731</string>
<key>history</key>
<array>
<string>8B9EC58B1D90BE2400BD1DCA</string>
- <string>8BFE4BDA1D92E59A00BBC6AC</string>
- <string>8B9D67CF1F7C90C4007AB60F</string>
+ <string>8B79317B21F4B33A006E9731</string>
+ <string>8B79317C21F4B33A006E9731</string>
+ <string>8B79317E21F4B33A006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 216}}</string>
+ <string>{{0, 0}, {622, 493}}</string>
<key>RubberWindowFrame</key>
- <string>566 213 841 654 0 0 1440 878 </string>
+ <string>473 199 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>216pt</string>
+ <string>493pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>392pt</string>
+ <string>115pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 365}}</string>
- <key>RubberWindowFrame</key>
- <string>566 213 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {622, 88}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {622, 88}}</string>
+ <key>RubberWindowFrame</key>
+ <string>473 199 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -462,7 +461,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>622pt</string>
</dict>
</array>
<key>Name</key>
@@ -481,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D76B21F7FA32E007AB60F</string>
+ <string>8B79318421F4B354006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D76B31F7FA32E007AB60F</string>
+ <string>8B79318521F4B354006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D76B41F7FA32E007AB60F</string>
+ <string>8B79318621F4B354006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528458542.19629401</real>
+ <real>569684820.36503005</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,11 +674,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D76B51F7FA32E007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Thunder/Thunder.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>566 213 841 654 0 0 1440 878 </string>
+ <string>473 199 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/ToTape5/ToTape5.cpp b/plugins/MacAU/ToTape5/ToTape5.cpp
index abe8496..2135e1d 100755
--- a/plugins/MacAU/ToTape5/ToTape5.cpp
+++ b/plugins/MacAU/ToTape5/ToTape5.cpp
@@ -238,9 +238,7 @@ void ToTape5::ToTape5Kernel::Reset()
sweep = 0.0;
rateof = 0.5;
nextmax = 0.5;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -258,7 +256,8 @@ void ToTape5::ToTape5Kernel::Process( const Float32 *inSourceP,
Float64 overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
-
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
+
Float64 inputgain = pow(GetParameter( kParam_One )+1.0,3);
Float64 outputgain = GetParameter( kParam_Five );
Float64 wet = GetParameter( kParam_Six );
@@ -295,12 +294,7 @@ void ToTape5::ToTape5Kernel::Process( const Float32 *inSourceP,
SInt32 count;
Float64 tempSample;
Float64 drySample;
-
-
long double inputSample;
- Float32 fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -478,19 +472,11 @@ void ToTape5::ToTape5Kernel::Process( const Float32 *inSourceP,
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/ToTape5/ToTape5.h b/plugins/MacAU/ToTape5/ToTape5.h
index 8561873..250d9a5 100755
--- a/plugins/MacAU/ToTape5/ToTape5.h
+++ b/plugins/MacAU/ToTape5/ToTape5.h
@@ -185,10 +185,7 @@ public:
Float64 iirSampleY;
Float64 iirSampleZ;
int flip;
-
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser
index b447041..6427718 100755
--- a/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 419,
20,
48,
43,
@@ -49,13 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553894227;
- PBXWorkspaceStateSaveDate = 553894227;
+ PBXPerProjectTemplateStateSaveDate = 569685129;
+ PBXWorkspaceStateSaveDate = 569685129;
};
perUserProjectItems = {
8B1A32741F16BBA2004DE6C5 /* PlistBookmark */ = 8B1A32741F16BBA2004DE6C5 /* PlistBookmark */;
- 8B9D76CF1F7FA38F007AB60F /* PBXTextBookmark */ = 8B9D76CF1F7FA38F007AB60F /* PBXTextBookmark */;
- 8BB8B7D82103C66300751000 /* PBXTextBookmark */ = 8BB8B7D82103C66300751000 /* PBXTextBookmark */;
+ 8B7931A821F4B4FA006E9731 /* PBXTextBookmark */ = 8B7931A821F4B4FA006E9731 /* PBXTextBookmark */;
+ 8B7931AA21F4B4FA006E9731 /* PBXTextBookmark */ = 8B7931AA21F4B4FA006E9731 /* PBXTextBookmark */;
+ 8B7931B321F4B54A006E9731 /* PBXTextBookmark */ = 8B7931B321F4B54A006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -73,21 +74,41 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B9D76CF1F7FA38F007AB60F /* PBXTextBookmark */ = {
+ 8B7931A821F4B4FA006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* ToTape5.h */;
+ name = "ToTape5.h: 187";
+ rLen = 0;
+ rLoc = 6560;
+ rType = 0;
+ vrLen = 717;
+ vrLoc = 5977;
+ };
+ 8B7931AA21F4B4FA006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* ToTape5.cpp */;
+ name = "ToTape5.cpp: 479";
+ rLen = 0;
+ rLoc = 22753;
+ rType = 0;
+ vrLen = 3225;
+ vrLoc = 19204;
+ };
+ 8B7931B321F4B54A006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ToTape5.cpp */;
- name = "ToTape5.cpp: 470";
+ name = "ToTape5.cpp: 260";
rLen = 0;
- rLoc = 22425;
+ rLoc = 11019;
rType = 0;
- vrLen = 472;
- vrLoc = 20068;
+ vrLen = 1511;
+ vrLoc = 10684;
};
8BA05A660720730100365D66 /* ToTape5.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {873, 6396}}";
- sepNavSelRange = "{22425, 0}";
- sepNavVisRange = "{20304, 236}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 6929}}";
+ sepNavSelRange = "{11019, 0}";
+ sepNavVisRange = "{10684, 1511}";
sepNavWindowFrame = "{{488, 39}, {952, 839}}";
};
};
@@ -107,21 +128,11 @@
sepNavWindowFrame = "{{15, 39}, {952, 839}}";
};
};
- 8BB8B7D82103C66300751000 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* ToTape5.cpp */;
- name = "ToTape5.cpp: 470";
- rLen = 0;
- rLoc = 22425;
- rType = 0;
- vrLen = 236;
- vrLoc = 20304;
- };
8BC6025B073B072D006C4272 /* ToTape5.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {905, 2964}}";
- sepNavSelRange = "{6561, 0}";
- sepNavVisRange = "{5662, 1074}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2964}}";
+ sepNavSelRange = "{6560, 0}";
+ sepNavVisRange = "{5977, 717}";
sepNavWindowFrame = "{{470, 39}, {952, 839}}";
};
};
diff --git a/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3
index 7293723..7e231dd 100755
--- a/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>161</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -308,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {161, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -318,24 +316,26 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {178, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>161</real>
</array>
<key>RubberWindowFrame</key>
- <string>581 201 841 654 0 0 1440 878 </string>
+ <string>490 203 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>178pt</string>
</dict>
<dict>
<key>Dock</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -353,11 +353,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BB8B7D82103C66300751000</string>
+ <string>8B7931B321F4B54A006E9731</string>
<key>history</key>
<array>
<string>8B1A32741F16BBA2004DE6C5</string>
- <string>8B9D76CF1F7FA38F007AB60F</string>
+ <string>8B7931A821F4B4FA006E9731</string>
+ <string>8B7931AA21F4B4FA006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +372,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 56}}</string>
+ <string>{{0, 0}, {658, 481}}</string>
<key>RubberWindowFrame</key>
- <string>581 201 841 654 0 0 1440 878 </string>
+ <string>490 203 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>56pt</string>
+ <string>481pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>552pt</string>
+ <string>127pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +397,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 525}}</string>
- <key>RubberWindowFrame</key>
- <string>581 201 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {658, 100}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +451,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 327}}</string>
+ <string>{{10, 27}, {658, 100}}</string>
+ <key>RubberWindowFrame</key>
+ <string>490 203 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -461,7 +462,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>658pt</string>
</dict>
</array>
<key>Name</key>
@@ -480,11 +481,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BB8B7D92103C66300751000</string>
+ <string>8B7931B421F4B54A006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BB8B7DA2103C66300751000</string>
+ <string>8B7931B521F4B54A006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8BB8B7DB2103C66300751000</string>
+ <string>8B7931B621F4B54A006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +658,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553895523.636742</real>
+ <real>569685322.27313697</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,11 +675,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BB8B7DC2103C66300751000</string>
<string>/Users/christopherjohnson/Desktop/MacAU/ToTape5/ToTape5.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>581 201 841 654 0 0 1440 878 </string>
+ <string>490 203 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/ToVinyl4/ToVinyl4.cpp b/plugins/MacAU/ToVinyl4/ToVinyl4.cpp
index 0f7f248..3f0d6e4 100755
--- a/plugins/MacAU/ToVinyl4/ToVinyl4.cpp
+++ b/plugins/MacAU/ToVinyl4/ToVinyl4.cpp
@@ -270,11 +270,8 @@ ComponentResult ToVinyl4::Reset(AudioUnitScope inScope, AudioUnitElement inElem
s1R = s2R = s3R = 0.0;
o1R = o2R = o3R = 0.0;
m1R = m2R = desR = 0.0;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
return noErr;
@@ -295,11 +292,7 @@ OSStatus ToVinyl4::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag
UInt32 nSampleFrames = inFramesToProcess;
Float64 overallscale = 1.0;
overallscale /= 44100.0;
- overallscale *= GetSampleRate();
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
-
+ overallscale *= GetSampleRate();
Float64 fusswithscale = 50000; //corrected
Float64 cutofffreq = GetParameter( kParam_One );
Float64 resonance = 0.992;
@@ -741,25 +734,14 @@ OSStatus ToVinyl4::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag
inputSampleR = accumulatorSample;
//we just re-use accumulatorSample to do this little shuffle
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacAU/ToVinyl4/ToVinyl4.h b/plugins/MacAU/ToVinyl4/ToVinyl4.h
index 31495f3..7e613b7 100755
--- a/plugins/MacAU/ToVinyl4/ToVinyl4.h
+++ b/plugins/MacAU/ToVinyl4/ToVinyl4.h
@@ -209,13 +209,8 @@ private:
Float64 aSidePrev;
Float64 bMidPrev;
Float64 bSidePrev;
-
- Float64 fpNShapeAL;
- Float64 fpNShapeAR;
- Float64 fpNShapeBL;
- Float64 fpNShapeBR;
- bool fpFlip;
-
+ Float64 fpNShapeR;
+ Float64 fpNShapeL;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser
index a31ab0c..1fee72e 100755
--- a/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 364,
+ 410,
20,
48,
43,
@@ -49,42 +49,53 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541893053;
- PBXWorkspaceStateSaveDate = 541893053;
+ PBXPerProjectTemplateStateSaveDate = 569685344;
+ PBXWorkspaceStateSaveDate = 569685344;
};
perUserProjectItems = {
- 8B181B5D204CA28100516BEE /* PBXTextBookmark */ = 8B181B5D204CA28100516BEE /* PBXTextBookmark */;
- 8B181B5E204CA28100516BEE /* PBXTextBookmark */ = 8B181B5E204CA28100516BEE /* PBXTextBookmark */;
+ 8B7931C221F4B60F006E9731 /* PBXTextBookmark */ = 8B7931C221F4B60F006E9731 /* PBXTextBookmark */;
+ 8B7931C421F4B60F006E9731 /* PBXTextBookmark */ = 8B7931C421F4B60F006E9731 /* PBXTextBookmark */;
+ 8B7931C921F4B651006E9731 /* PBXTextBookmark */ = 8B7931C921F4B651006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B181B5D204CA28100516BEE /* PBXTextBookmark */ = {
+ 8B7931C221F4B60F006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* ToVinyl4.h */;
+ name = "ToVinyl4.h: 211";
+ rLen = 0;
+ rLoc = 6757;
+ rType = 0;
+ vrLen = 390;
+ vrLoc = 6513;
+ };
+ 8B7931C421F4B60F006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ToVinyl4.cpp */;
- name = "ToVinyl4.cpp: 428";
+ name = "ToVinyl4.cpp: 745";
rLen = 0;
- rLoc = 16809;
+ rLoc = 32669;
rType = 0;
- vrLen = 91;
- vrLoc = 43;
+ vrLen = 985;
+ vrLoc = 31849;
};
- 8B181B5E204CA28100516BEE /* PBXTextBookmark */ = {
+ 8B7931C921F4B651006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ToVinyl4.cpp */;
- name = "ToVinyl4.cpp: 428";
+ name = "ToVinyl4.cpp: 745";
rLen = 0;
- rLoc = 16809;
+ rLoc = 32669;
rType = 0;
- vrLen = 91;
- vrLoc = 43;
+ vrLen = 1451;
+ vrLoc = 19373;
};
8BA05A660720730100365D66 /* ToVinyl4.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 10166}}";
- sepNavSelRange = "{16809, 0}";
- sepNavVisRange = "{43, 91}";
+ sepNavIntBoundsRect = "{{0, 0}, {782, 9386}}";
+ sepNavSelRange = "{32669, 0}";
+ sepNavVisRange = "{19373, 1451}";
sepNavWindowFrame = "{{627, 62}, {981, 816}}";
};
};
@@ -106,9 +117,9 @@
};
8BC6025B073B072D006C4272 /* ToVinyl4.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {934, 2899}}";
- sepNavSelRange = "{5133, 22}";
- sepNavVisRange = "{5920, 1044}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 3250}}";
+ sepNavSelRange = "{6757, 0}";
+ sepNavVisRange = "{6513, 390}";
sepNavWindowFrame = "{{459, 62}, {981, 816}}";
};
};
diff --git a/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3
index 64c9c61..2bfe30e 100755
--- a/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>856</integer>
+ <integer>856</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -308,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {185, 428}}</string>
+ <string>{{0, 0}, {185, 635}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -318,14 +316,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {202, 446}}</string>
+ <string>{{0, 0}, {202, 653}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>608 328 810 487 0 0 1440 878 </string>
+ <string>373 142 856 694 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -353,10 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B181B5E204CA28100516BEE</string>
+ <string>8B7931C921F4B651006E9731</string>
<key>history</key>
<array>
- <string>8B181B5D204CA28100516BEE</string>
+ <string>8B7931C221F4B60F006E9731</string>
+ <string>8B7931C421F4B60F006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 86}}</string>
+ <string>{{0, 0}, {649, 490}}</string>
<key>RubberWindowFrame</key>
- <string>608 328 810 487 0 0 1440 878 </string>
+ <string>373 142 856 694 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>86pt</string>
+ <string>490pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>355pt</string>
+ <string>158pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
- <key>RubberWindowFrame</key>
- <string>608 328 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {649, 131}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {649, 131}}</string>
+ <key>RubberWindowFrame</key>
+ <string>373 142 856 694 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -460,7 +459,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>603pt</string>
+ <string>649pt</string>
</dict>
</array>
<key>Name</key>
@@ -479,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B181B5F204CA28100516BEE</string>
+ <string>8B7931CA21F4B651006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B181B60204CA28100516BEE</string>
+ <string>8B7931CB21F4B651006E9731</string>
<string>8B277E7C1FDB48610038EA07</string>
- <string>8B181B61204CA28100516BEE</string>
+ <string>8B7931CC21F4B651006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541893249.61319196</real>
+ <real>569685585.11167395</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +652,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B181B62204CA28100516BEE</string>
<string>/Users/christopherjohnson/Desktop/MacAU/ToVinyl4/ToVinyl4.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>608 328 810 487 0 0 1440 878 </string>
+ <string>373 142 856 694 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/ToneSlant/ToneSlant.cpp b/plugins/MacAU/ToneSlant/ToneSlant.cpp
index 9b78bea..55f7435 100755
--- a/plugins/MacAU/ToneSlant/ToneSlant.cpp
+++ b/plugins/MacAU/ToneSlant/ToneSlant.cpp
@@ -168,9 +168,7 @@ ComponentResult ToneSlant::Initialize()
void ToneSlant::ToneSlantKernel::Reset()
{
for(int count = 0; count < 102; count++) {b[count] = 0.0; f[count] = 0.0;}
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -192,9 +190,6 @@ void ToneSlant::ToneSlantKernel::Process( const Float32 *inSourceP,
Float64 overallscale = GetParameter( kParam_One );
if (overallscale < 1.0) overallscale = 1.0;
Float64 applySlant = GetParameter( kParam_Two );
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
f[0] = 1.0 / overallscale;
//count to f(gain) which will be 0. f(0) is x1
@@ -236,7 +231,6 @@ void ToneSlant::ToneSlantKernel::Process( const Float32 *inSourceP,
//the silence will return to being digital black again.
}
-
b[0] = accumulatorSample = drySample = inputSample;
accumulatorSample *= f[0];
@@ -248,19 +242,11 @@ void ToneSlant::ToneSlantKernel::Process( const Float32 *inSourceP,
inputSample += (correctionSample * applySlant);
//our one math operation on the input data coming in
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/ToneSlant/ToneSlant.h b/plugins/MacAU/ToneSlant/ToneSlant.h
index f07890b..8f94128 100755
--- a/plugins/MacAU/ToneSlant/ToneSlant.h
+++ b/plugins/MacAU/ToneSlant/ToneSlant.h
@@ -131,9 +131,7 @@ public:
private:
Float64 b[102];
Float64 f[102];
- long double fpNShapeA;
- long double fpNShapeB;
- bool fpFlip;
+ long double fpNShape;
};
};
diff --git a/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser
index bd0d093..e300ab9 100755
--- a/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 388,
20,
48,
43,
@@ -49,15 +49,15 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528458576;
- PBXWorkspaceStateSaveDate = 528458576;
+ PBXPerProjectTemplateStateSaveDate = 569684848;
+ PBXWorkspaceStateSaveDate = 569684848;
};
perUserProjectItems = {
8B22B0A31DB17F9F0075D7AA /* PBXTextBookmark */ = 8B22B0A31DB17F9F0075D7AA /* PBXTextBookmark */;
- 8B42FB2B1DB15DB60057B6AB /* PBXTextBookmark */ = 8B42FB2B1DB15DB60057B6AB /* PBXTextBookmark */;
8B51D7811DAF1671009F3CF8 /* PlistBookmark */ = 8B51D7811DAF1671009F3CF8 /* PlistBookmark */;
- 8B9D67DF1F7C911F007AB60F /* PBXTextBookmark */ = 8B9D67DF1F7C911F007AB60F /* PBXTextBookmark */;
- 8B9D76C01F7FA369007AB60F /* PBXTextBookmark */ = 8B9D76C01F7FA369007AB60F /* PBXTextBookmark */;
+ 8B79319221F4B409006E9731 /* PBXTextBookmark */ = 8B79319221F4B409006E9731 /* PBXTextBookmark */;
+ 8B79319421F4B409006E9731 /* PBXTextBookmark */ = 8B79319421F4B409006E9731 /* PBXTextBookmark */;
+ 8B79319921F4B43F006E9731 /* PBXTextBookmark */ = 8B79319921F4B43F006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@@ -73,16 +73,6 @@
vrLen = 356;
vrLoc = 2601;
};
- 8B42FB2B1DB15DB60057B6AB /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* ToneSlant.h */;
- name = "ToneSlant.h: 57";
- rLen = 0;
- rLoc = 2865;
- rType = 0;
- vrLen = 410;
- vrLoc = 2675;
- };
8B51D7811DAF1671009F3CF8 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
@@ -95,31 +85,41 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8B9D67DF1F7C911F007AB60F /* PBXTextBookmark */ = {
+ 8B79319221F4B409006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* ToneSlant.h */;
+ name = "ToneSlant.h: 134";
+ rLen = 0;
+ rLoc = 5306;
+ rType = 0;
+ vrLen = 794;
+ vrLoc = 4622;
+ };
+ 8B79319421F4B409006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ToneSlant.cpp */;
- name = "ToneSlant.cpp: 195";
+ name = "ToneSlant.cpp: 250";
rLen = 0;
- rLoc = 8729;
+ rLoc = 11254;
rType = 0;
- vrLen = 457;
- vrLoc = 8458;
+ vrLen = 1286;
+ vrLoc = 10056;
};
- 8B9D76C01F7FA369007AB60F /* PBXTextBookmark */ = {
+ 8B79319921F4B43F006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ToneSlant.cpp */;
- name = "ToneSlant.cpp: 195";
+ name = "ToneSlant.cpp: 250";
rLen = 0;
- rLoc = 8729;
+ rLoc = 11254;
rType = 0;
- vrLen = 418;
- vrLoc = 8421;
+ vrLen = 1320;
+ vrLoc = 10022;
};
8BA05A660720730100365D66 /* ToneSlant.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {656, 3549}}";
- sepNavSelRange = "{8729, 0}";
- sepNavVisRange = "{8421, 418}";
+ sepNavIntBoundsRect = "{{0, 0}, {726, 3471}}";
+ sepNavSelRange = "{11254, 0}";
+ sepNavVisRange = "{10022, 1320}";
sepNavWindowFrame = "{{537, 59}, {895, 819}}";
};
};
@@ -133,9 +133,9 @@
};
8BC6025B073B072D006C4272 /* ToneSlant.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 1859}}";
- sepNavSelRange = "{5283, 65}";
- sepNavVisRange = "{3870, 1587}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2145}}";
+ sepNavSelRange = "{5306, 0}";
+ sepNavVisRange = "{4622, 794}";
sepNavWindowFrame = "{{15, 54}, {895, 819}}";
};
};
diff --git a/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3
index d236663..4b2a46a 100755
--- a/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>192</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -308,7 +306,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {192, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -318,19 +316,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {209, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>192</real>
</array>
<key>RubberWindowFrame</key>
- <string>591 215 841 654 0 0 1440 878 </string>
+ <string>448 210 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>209pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -353,13 +351,13 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D76C01F7FA369007AB60F</string>
+ <string>8B79319921F4B43F006E9731</string>
<key>history</key>
<array>
<string>8B51D7811DAF1671009F3CF8</string>
- <string>8B42FB2B1DB15DB60057B6AB</string>
<string>8B22B0A31DB17F9F0075D7AA</string>
- <string>8B9D67DF1F7C911F007AB60F</string>
+ <string>8B79319221F4B409006E9731</string>
+ <string>8B79319421F4B409006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 188}}</string>
+ <string>{{0, 0}, {627, 466}}</string>
<key>RubberWindowFrame</key>
- <string>591 215 841 654 0 0 1440 878 </string>
+ <string>448 210 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>188pt</string>
+ <string>466pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>420pt</string>
+ <string>142pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 393}}</string>
- <key>RubberWindowFrame</key>
- <string>591 215 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {627, 115}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 315}}</string>
+ <string>{{10, 27}, {627, 115}}</string>
+ <key>RubberWindowFrame</key>
+ <string>448 210 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -463,7 +461,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>627pt</string>
</dict>
</array>
<key>Name</key>
@@ -482,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D76C11F7FA369007AB60F</string>
+ <string>8B79319A21F4B43F006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D76C21F7FA369007AB60F</string>
+ <string>8B79319B21F4B43F006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D76C31F7FA369007AB60F</string>
+ <string>8B79319C21F4B43F006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528458601.15789098</real>
+ <real>569685055.02673697</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -676,11 +674,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D76C41F7FA369007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/ToneSlant/ToneSlant.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>591 215 841 654 0 0 1440 878 </string>
+ <string>448 210 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/TransDesk/TransDesk.cpp b/plugins/MacAU/TransDesk/TransDesk.cpp
index 0aa57f4..f508b67 100755
--- a/plugins/MacAU/TransDesk/TransDesk.cpp
+++ b/plugins/MacAU/TransDesk/TransDesk.cpp
@@ -157,9 +157,7 @@ void TransDesk::TransDeskKernel::Reset()
lastSample = 0.0;
lastOutSample = 0.0;
lastSlew = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -202,9 +200,6 @@ void TransDesk::TransDeskKernel::Process( const Float32 *inSourceP,
Float64 combSample;
long double inputSample;
long double drySample;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -297,21 +292,11 @@ void TransDesk::TransDeskKernel::Process( const Float32 *inSourceP,
inputSample /= gain;
//end of Desk section
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
-
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels;
diff --git a/plugins/MacAU/TransDesk/TransDesk.h b/plugins/MacAU/TransDesk/TransDesk.h
index f73f550..7479936 100755
--- a/plugins/MacAU/TransDesk/TransDesk.h
+++ b/plugins/MacAU/TransDesk/TransDesk.h
@@ -123,9 +123,7 @@ public:
long double lastSample;
long double lastOutSample;
Float64 lastSlew;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ Float64 fpNShape;
};
};
diff --git a/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser
index 0688c58..3879aa7 100755
--- a/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 364,
+ 455,
20,
48,
43,
@@ -49,53 +49,53 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528458726;
- PBXWorkspaceStateSaveDate = 528458726;
+ PBXPerProjectTemplateStateSaveDate = 569685635;
+ PBXWorkspaceStateSaveDate = 569685635;
};
perUserProjectItems = {
- 8B3ED5DC1DDE6589004F9D64 /* PBXTextBookmark */ = 8B3ED5DC1DDE6589004F9D64 /* PBXTextBookmark */;
- 8B9D680F1F7C919B007AB60F /* PBXTextBookmark */ = 8B9D680F1F7C919B007AB60F /* PBXTextBookmark */;
- 8B9D76EC1F7FA409007AB60F /* PBXTextBookmark */ = 8B9D76EC1F7FA409007AB60F /* PBXTextBookmark */;
+ 8B7931D821F4B744006E9731 /* PBXTextBookmark */ = 8B7931D821F4B744006E9731 /* PBXTextBookmark */;
+ 8B7931DA21F4B744006E9731 /* PBXTextBookmark */ = 8B7931DA21F4B744006E9731 /* PBXTextBookmark */;
+ 8B7931DF21F4B769006E9731 /* PBXTextBookmark */ = 8B7931DF21F4B769006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B3ED5DC1DDE6589004F9D64 /* PBXTextBookmark */ = {
+ 8B7931D821F4B744006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* TransDesk.h */;
name = "TransDesk.h: 126";
- rLen = 57;
- rLoc = 4907;
+ rLen = 0;
+ rLoc = 4926;
rType = 0;
- vrLen = 113;
- vrLoc = 4858;
+ vrLen = 406;
+ vrLoc = 4630;
};
- 8B9D680F1F7C919B007AB60F /* PBXTextBookmark */ = {
+ 8B7931DA21F4B744006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* TransDesk.cpp */;
- name = "TransDesk.cpp: 1";
+ name = "TransDesk.cpp: 297";
rLen = 0;
- rLoc = 0;
+ rLoc = 11884;
rType = 0;
- vrLen = 199;
- vrLoc = 11010;
+ vrLen = 1440;
+ vrLoc = 9447;
};
- 8B9D76EC1F7FA409007AB60F /* PBXTextBookmark */ = {
+ 8B7931DF21F4B769006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* TransDesk.cpp */;
- name = "TransDesk.cpp: 1";
+ name = "TransDesk.cpp: 203";
rLen = 0;
- rLoc = 0;
+ rLoc = 8371;
rType = 0;
- vrLen = 147;
- vrLoc = 11028;
+ vrLen = 1325;
+ vrLoc = 7918;
};
8BA05A660720730100365D66 /* TransDesk.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {558, 4264}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{11028, 147}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 4134}}";
+ sepNavSelRange = "{8371, 0}";
+ sepNavVisRange = "{7918, 1325}";
sepNavWindowFrame = "{{506, 58}, {932, 815}}";
};
};
@@ -117,9 +117,9 @@
};
8BC6025B073B072D006C4272 /* TransDesk.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {885, 1755}}";
- sepNavSelRange = "{4906, 0}";
- sepNavVisRange = "{3678, 1395}";
+ sepNavIntBoundsRect = "{{0, 0}, {698, 1911}}";
+ sepNavSelRange = "{4926, 0}";
+ sepNavVisRange = "{4630, 406}";
sepNavWindowFrame = "{{508, 63}, {932, 815}}";
};
};
diff --git a/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3
index 31d86a2..db0c5ba 100755
--- a/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>901</integer>
+ <integer>901</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -307,7 +305,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {185, 428}}</string>
+ <string>{{0, 0}, {185, 676}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -317,14 +315,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {202, 446}}</string>
+ <string>{{0, 0}, {202, 694}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 249 810 487 0 0 1440 878 </string>
+ <string>398 107 901 735 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -335,6 +333,8 @@
<key>Dock</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -352,11 +352,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D76EC1F7FA409007AB60F</string>
+ <string>8B7931DF21F4B769006E9731</string>
<key>history</key>
<array>
- <string>8B3ED5DC1DDE6589004F9D64</string>
- <string>8B9D680F1F7C919B007AB60F</string>
+ <string>8B7931D821F4B744006E9731</string>
+ <string>8B7931DA21F4B744006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {694, 520}}</string>
<key>RubberWindowFrame</key>
- <string>630 249 810 487 0 0 1440 878 </string>
+ <string>398 107 901 735 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>520pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>169pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
- <key>RubberWindowFrame</key>
- <string>630 249 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {694, 142}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {694, 142}}</string>
+ <key>RubberWindowFrame</key>
+ <string>398 107 901 735 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -460,7 +460,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>603pt</string>
+ <string>694pt</string>
</dict>
</array>
<key>Name</key>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D76ED1F7FA409007AB60F</string>
+ <string>8B7931E021F4B769006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D76EE1F7FA409007AB60F</string>
+ <string>8B7931E121F4B769006E9731</string>
<string>8B3ED5581DDE63B1004F9D64</string>
- <string>8B9D76EF1F7FA409007AB60F</string>
+ <string>8B7931E221F4B769006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528458761.70146298</real>
+ <real>569685865.03802896</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +653,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D76F01F7FA409007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/TransDesk/TransDesk.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 249 810 487 0 0 1440 878 </string>
+ <string>398 107 901 735 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/Tremolo/Tremolo.cpp b/plugins/MacAU/Tremolo/Tremolo.cpp
index e70b244..6e1f644 100755
--- a/plugins/MacAU/Tremolo/Tremolo.cpp
+++ b/plugins/MacAU/Tremolo/Tremolo.cpp
@@ -173,9 +173,7 @@ void Tremolo::TremoloKernel::Reset()
depthAmount = 0.0;
lastSpeed = 1000.0;
lastDepth = 1000.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -216,9 +214,6 @@ void Tremolo::TremoloKernel::Process( const Float32 *inSourceP,
Float64 out;
Float64 bridgerectifier;
Float64 offset;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -289,22 +284,12 @@ void Tremolo::TremoloKernel::Process( const Float32 *inSourceP,
//apply tremolo, apply gain boost to compensate for volume loss
inputSample = (drySample * (1-depth)) + (inputSample*depth);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
-
-
*destP = inputSample;
destP += inNumChannels;
sourceP += inNumChannels;
diff --git a/plugins/MacAU/Tremolo/Tremolo.h b/plugins/MacAU/Tremolo/Tremolo.h
index 38910c3..8b4204a 100755
--- a/plugins/MacAU/Tremolo/Tremolo.h
+++ b/plugins/MacAU/Tremolo/Tremolo.h
@@ -136,10 +136,7 @@ public:
Float64 lastSpeed;
Float64 lastDepth;
Float64 sweep;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
-
+ Float64 fpNShape;
};
};
diff --git a/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser
index 822426d..4a72292 100755
--- a/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 364,
+ 528,
20,
48,
43,
@@ -49,43 +49,54 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528458789;
- PBXWorkspaceStateSaveDate = 528458789;
+ PBXPerProjectTemplateStateSaveDate = 569685954;
+ PBXWorkspaceStateSaveDate = 569685954;
};
perUserProjectItems = {
- 8B9D681F1F7C91BB007AB60F /* PBXTextBookmark */ = 8B9D681F1F7C91BB007AB60F /* PBXTextBookmark */;
- 8B9D76FB1F7FA435007AB60F /* PBXTextBookmark */ = 8B9D76FB1F7FA435007AB60F /* PBXTextBookmark */;
+ 8B7931EE21F4B82A006E9731 /* PBXTextBookmark */ = 8B7931EE21F4B82A006E9731 /* PBXTextBookmark */;
+ 8B7931F021F4B82A006E9731 /* PBXTextBookmark */ = 8B7931F021F4B82A006E9731 /* PBXTextBookmark */;
+ 8B7931F521F4B845006E9731 /* PBXTextBookmark */ = 8B7931F521F4B845006E9731 /* PBXTextBookmark */;
8BD8CB021DF8ECAA00CC3427 /* PBXTextBookmark */ = 8BD8CB021DF8ECAA00CC3427 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D681F1F7C91BB007AB60F /* PBXTextBookmark */ = {
+ 8B7931EE21F4B82A006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* Tremolo.h */;
+ name = "Tremolo.h: 139";
+ rLen = 0;
+ rLoc = 5331;
+ rType = 0;
+ vrLen = 813;
+ vrLoc = 4630;
+ };
+ 8B7931F021F4B82A006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Tremolo.cpp */;
- name = "Tremolo.cpp: 290";
+ name = "Tremolo.cpp: 292";
rLen = 0;
- rLoc = 12305;
+ rLoc = 12430;
rType = 0;
- vrLen = 145;
- vrLoc = 10647;
+ vrLen = 1235;
+ vrLoc = 11280;
};
- 8B9D76FB1F7FA435007AB60F /* PBXTextBookmark */ = {
+ 8B7931F521F4B845006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Tremolo.cpp */;
- name = "Tremolo.cpp: 290";
+ name = "Tremolo.cpp: 292";
rLen = 0;
- rLoc = 12305;
+ rLoc = 12430;
rType = 0;
- vrLen = 0;
- vrLoc = 0;
+ vrLen = 1268;
+ vrLoc = 11247;
};
8BA05A660720730100365D66 /* Tremolo.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 4108}}";
- sepNavSelRange = "{12305, 0}";
- sepNavVisRange = "{0, 0}";
+ sepNavIntBoundsRect = "{{0, 0}, {718, 4043}}";
+ sepNavSelRange = "{12430, 0}";
+ sepNavVisRange = "{11247, 1268}";
sepNavWindowFrame = "{{386, 39}, {1024, 839}}";
};
};
@@ -107,9 +118,9 @@
};
8BC6025B073B072D006C4272 /* Tremolo.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {922, 1885}}";
- sepNavSelRange = "{5163, 132}";
- sepNavVisRange = "{4043, 1438}";
+ sepNavIntBoundsRect = "{{0, 0}, {922, 2262}}";
+ sepNavSelRange = "{5331, 0}";
+ sepNavVisRange = "{4630, 813}";
sepNavWindowFrame = "{{469, 34}, {679, 835}}";
};
};
diff --git a/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3
index 0be2553..832afcd 100755
--- a/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>810</integer>
- <integer>810</integer>
+ <integer>954</integer>
+ <integer>954</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>185</real>
+ <real>165</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -307,7 +305,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {185, 428}}</string>
+ <string>{{0, 0}, {165, 635}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -317,19 +315,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {202, 446}}</string>
+ <string>{{0, 0}, {182, 653}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>185</real>
+ <real>165</real>
</array>
<key>RubberWindowFrame</key>
- <string>504 296 810 487 0 0 1440 878 </string>
+ <string>341 162 954 694 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>202pt</string>
+ <string>182pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -352,11 +350,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D76FB1F7FA435007AB60F</string>
+ <string>8B7931F521F4B845006E9731</string>
<key>history</key>
<array>
<string>8BD8CB021DF8ECAA00CC3427</string>
- <string>8B9D681F1F7C91BB007AB60F</string>
+ <string>8B7931EE21F4B82A006E9731</string>
+ <string>8B7931F021F4B82A006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 32}}</string>
+ <string>{{0, 0}, {767, 469}}</string>
<key>RubberWindowFrame</key>
- <string>504 296 810 487 0 0 1440 878 </string>
+ <string>341 162 954 694 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>32pt</string>
+ <string>469pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>409pt</string>
+ <string>179pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
- <key>RubberWindowFrame</key>
- <string>504 296 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {767, 152}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {767, 152}}</string>
+ <key>RubberWindowFrame</key>
+ <string>341 162 954 694 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -460,7 +459,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>603pt</string>
+ <string>767pt</string>
</dict>
</array>
<key>Name</key>
@@ -479,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D76FC1F7FA435007AB60F</string>
+ <string>8B7931F621F4B845006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D76FD1F7FA435007AB60F</string>
+ <string>8B7931F721F4B845006E9731</string>
<string>8B3ED5B51DDE654F004F9D64</string>
- <string>8B9D76FE1F7FA435007AB60F</string>
+ <string>8B7931F821F4B845006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528458805.46372598</real>
+ <real>569686085.74729097</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +652,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D76FF1F7FA435007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Tremolo/Tremolo.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>504 296 810 487 0 0 1440 878 </string>
+ <string>341 162 954 694 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/TubeDesk/TubeDesk.cpp b/plugins/MacAU/TubeDesk/TubeDesk.cpp
index 4b730c4..cf2c042 100755
--- a/plugins/MacAU/TubeDesk/TubeDesk.cpp
+++ b/plugins/MacAU/TubeDesk/TubeDesk.cpp
@@ -157,9 +157,7 @@ void TubeDesk::TubeDeskKernel::Reset()
lastSample = 0.0;
lastOutSample = 0.0;
lastSlew = 0.0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -200,9 +198,6 @@ void TubeDesk::TubeDeskKernel::Process( const Float32 *inSourceP,
Float64 combSample;
long double inputSample;
long double drySample;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -295,20 +290,11 @@ void TubeDesk::TubeDeskKernel::Process( const Float32 *inSourceP,
inputSample /= gain;
//end of Desk section
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
-
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels;
diff --git a/plugins/MacAU/TubeDesk/TubeDesk.h b/plugins/MacAU/TubeDesk/TubeDesk.h
index 93110b5..393c14b 100755
--- a/plugins/MacAU/TubeDesk/TubeDesk.h
+++ b/plugins/MacAU/TubeDesk/TubeDesk.h
@@ -124,9 +124,7 @@ public:
long double lastSample;
long double lastOutSample;
Float64 lastSlew;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ Float64 fpNShape;
};
};
diff --git a/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser
index 6c8870e..5884fa0 100755
--- a/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 364,
+ 474,
20,
48,
43,
@@ -49,43 +49,53 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528458816;
- PBXWorkspaceStateSaveDate = 528458816;
+ PBXPerProjectTemplateStateSaveDate = 569686163;
+ PBXWorkspaceStateSaveDate = 569686163;
};
perUserProjectItems = {
- 8B9D68401F7C91F2007AB60F /* PBXTextBookmark */ = 8B9D68401F7C91F2007AB60F /* PBXTextBookmark */;
- 8B9D770A1F7FA48A007AB60F /* PBXTextBookmark */ = 8B9D770A1F7FA48A007AB60F /* PBXTextBookmark */;
- 8BD8CB131DF8EDB000CC3427 /* PBXTextBookmark */ = 8BD8CB131DF8EDB000CC3427 /* PBXTextBookmark */;
+ 8B79320521F4B8E5006E9731 /* PBXTextBookmark */ = 8B79320521F4B8E5006E9731 /* PBXTextBookmark */;
+ 8B79320721F4B8E5006E9731 /* PBXTextBookmark */ = 8B79320721F4B8E5006E9731 /* PBXTextBookmark */;
+ 8B79320C21F4B8F7006E9731 /* PBXTextBookmark */ = 8B79320C21F4B8F7006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B9D68401F7C91F2007AB60F /* PBXTextBookmark */ = {
+ 8B79320521F4B8E5006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* TubeDesk.h */;
+ name = "TubeDesk.h: 121";
+ rLen = 127;
+ rLoc = 4740;
+ rType = 0;
+ vrLen = 159;
+ vrLoc = 4728;
+ };
+ 8B79320721F4B8E5006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* TubeDesk.cpp */;
- name = "TubeDesk.cpp: 1";
+ name = "TubeDesk.cpp: 297";
rLen = 0;
- rLoc = 0;
+ rLoc = 12119;
rType = 0;
- vrLen = 0;
- vrLoc = 0;
+ vrLen = 1239;
+ vrLoc = 10970;
};
- 8B9D770A1F7FA48A007AB60F /* PBXTextBookmark */ = {
+ 8B79320C21F4B8F7006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* TubeDesk.cpp */;
- name = "TubeDesk.cpp: 1";
+ name = "TubeDesk.cpp: 297";
rLen = 0;
- rLoc = 0;
+ rLoc = 12119;
rType = 0;
- vrLen = 0;
- vrLoc = 0;
+ vrLen = 1298;
+ vrLoc = 10911;
};
8BA05A660720730100365D66 /* TubeDesk.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 4186}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 0}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 4147}}";
+ sepNavSelRange = "{12119, 0}";
+ sepNavVisRange = "{10911, 1298}";
sepNavWindowFrame = "{{508, 63}, {932, 815}}";
};
};
@@ -107,9 +117,9 @@
};
8BC6025B073B072D006C4272 /* TubeDesk.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 1859}}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 1924}}";
sepNavSelRange = "{4740, 127}";
- sepNavVisRange = "{4740, 107}";
+ sepNavVisRange = "{4728, 159}";
sepNavWindowFrame = "{{508, 63}, {932, 815}}";
};
};
@@ -127,16 +137,6 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BD8CB131DF8EDB000CC3427 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* TubeDesk.h */;
- name = "TubeDesk.h: 121";
- rLen = 127;
- rLoc = 4740;
- rType = 0;
- vrLen = 107;
- vrLoc = 4740;
- };
8D01CCC60486CAD60068D4B7 /* TubeDesk */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3
index 5a5dc2b..a910f97 100755
--- a/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>920</integer>
+ <integer>920</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -307,7 +305,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {185, 428}}</string>
+ <string>{{0, 0}, {185, 675}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -317,14 +315,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {202, 446}}</string>
+ <string>{{0, 0}, {202, 693}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 304 810 487 0 0 1440 878 </string>
+ <string>387 106 920 734 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,11 +350,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D770A1F7FA48A007AB60F</string>
+ <string>8B79320C21F4B8F7006E9731</string>
<key>history</key>
<array>
- <string>8BD8CB131DF8EDB000CC3427</string>
- <string>8B9D68401F7C91F2007AB60F</string>
+ <string>8B79320521F4B8E5006E9731</string>
+ <string>8B79320721F4B8E5006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {713, 543}}</string>
<key>RubberWindowFrame</key>
- <string>630 304 810 487 0 0 1440 878 </string>
+ <string>387 106 920 734 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>543pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>145pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
- <key>RubberWindowFrame</key>
- <string>630 304 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {713, 118}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {713, 118}}</string>
+ <key>RubberWindowFrame</key>
+ <string>387 106 920 734 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -460,7 +458,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>603pt</string>
+ <string>713pt</string>
</dict>
</array>
<key>Name</key>
@@ -479,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D770B1F7FA48A007AB60F</string>
+ <string>8B79320D21F4B8F7006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D770C1F7FA48A007AB60F</string>
+ <string>8B79320E21F4B8F7006E9731</string>
<string>8B3ED5701DDE63FA004F9D64</string>
- <string>8B9D770D1F7FA48A007AB60F</string>
+ <string>8B79320F21F4B8F7006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528458890.160869</real>
+ <real>569686263.00768697</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +651,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D770E1F7FA48A007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacAU/TubeDesk/TubeDesk.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 304 810 487 0 0 1440 878 </string>
+ <string>387 106 920 734 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/UnBox/UnBox.cpp b/plugins/MacAU/UnBox/UnBox.cpp
index b5d9943..4c1685c 100755
--- a/plugins/MacAU/UnBox/UnBox.cpp
+++ b/plugins/MacAU/UnBox/UnBox.cpp
@@ -179,7 +179,6 @@ void UnBox::UnBoxKernel::Reset()
for(int count = 0; count < 11; count++) {c[count] = 0.0; f[count] = 0.0;}
iirSampleA = 0.0;
iirSampleB = 0.0;
-
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -328,21 +327,14 @@ void UnBox::UnBoxKernel::Process( const Float32 *inSourceP,
if (output != 1.0) inputSample *= output;
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
+
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser
index 57e0f3e..502ab45 100755
--- a/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 389,
20,
48,
43,
@@ -49,35 +49,55 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 557536465;
- PBXWorkspaceStateSaveDate = 557536465;
+ PBXPerProjectTemplateStateSaveDate = 569686552;
+ PBXWorkspaceStateSaveDate = 569686552;
};
perUserProjectItems = {
- 8B6DBA6A213B59B000E44739 /* PBXTextBookmark */ = 8B6DBA6A213B59B000E44739 /* PBXTextBookmark */;
+ 8B79324821F4BABB006E9731 /* PBXTextBookmark */ = 8B79324821F4BABB006E9731 /* PBXTextBookmark */;
+ 8B79324A21F4BABB006E9731 /* PBXTextBookmark */ = 8B79324A21F4BABB006E9731 /* PBXTextBookmark */;
+ 8B79324F21F4BACB006E9731 /* PBXTextBookmark */ = 8B79324F21F4BACB006E9731 /* PBXTextBookmark */;
8BFDB0B1213A19500079F90D /* PlistBookmark */ = 8BFDB0B1213A19500079F90D /* PlistBookmark */;
- 8BFDB0B2213A19500079F90D /* PBXTextBookmark */ = 8BFDB0B2213A19500079F90D /* PBXTextBookmark */;
- 8BFDB0B4213A19500079F90D /* PBXTextBookmark */ = 8BFDB0B4213A19500079F90D /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B6DBA6A213B59B000E44739 /* PBXTextBookmark */ = {
+ 8B79324821F4BABB006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* UnBox.h */;
name = "UnBox.h: 140";
rLen = 24;
rLoc = 5350;
rType = 0;
- vrLen = 294;
- vrLoc = 5181;
+ vrLen = 259;
+ vrLoc = 5216;
+ };
+ 8B79324A21F4BABB006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* UnBox.cpp */;
+ name = "UnBox.cpp: 339";
+ rLen = 0;
+ rLoc = 14386;
+ rType = 0;
+ vrLen = 1013;
+ vrLoc = 13376;
+ };
+ 8B79324F21F4BACB006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* UnBox.cpp */;
+ name = "UnBox.cpp: 339";
+ rLen = 0;
+ rLoc = 14386;
+ rType = 0;
+ vrLen = 1013;
+ vrLoc = 13376;
};
8BA05A660720730100365D66 /* UnBox.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {747, 4745}}";
- sepNavSelRange = "{11915, 2143}";
- sepNavVisRange = "{12509, 2376}";
- sepNavWindowFrame = "{{683, 44}, {776, 834}}";
+ sepNavIntBoundsRect = "{{0, 0}, {747, 4511}}";
+ sepNavSelRange = "{14386, 0}";
+ sepNavVisRange = "{13376, 1013}";
+ sepNavWindowFrame = "{{664, 44}, {776, 834}}";
};
};
8BA05A690720730100365D66 /* UnBoxVersion.h */ = {
@@ -90,9 +110,9 @@
};
8BC6025B073B072D006C4272 /* UnBox.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 2093}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 2119}}";
sepNavSelRange = "{5350, 24}";
- sepNavVisRange = "{5181, 294}";
+ sepNavVisRange = "{5216, 259}";
sepNavWindowFrame = "{{724, 44}, {776, 834}}";
};
};
@@ -122,26 +142,6 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8BFDB0B2213A19500079F90D /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* UnBox.cpp */;
- name = "UnBox.cpp: 297";
- rLen = 238;
- rLoc = 12561;
- rType = 0;
- vrLen = 707;
- vrLoc = 12336;
- };
- 8BFDB0B4213A19500079F90D /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BC6025B073B072D006C4272 /* UnBox.h */;
- name = "UnBox.h: 140";
- rLen = 24;
- rLoc = 5350;
- rType = 0;
- vrLen = 295;
- vrLoc = 5181;
- };
8D01CCC60486CAD60068D4B7 /* UnBox */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3
index 74c3c5b..5891050 100755
--- a/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>191</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -309,7 +307,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {191, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -319,19 +317,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {208, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>191</real>
</array>
<key>RubberWindowFrame</key>
- <string>654 195 841 654 0 0 1440 878 </string>
+ <string>454 199 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>208pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -342,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>UnBox.h</string>
+ <string>UnBox.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -350,16 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>UnBox.h</string>
+ <string>UnBox.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B6DBA6A213B59B000E44739</string>
+ <string>8B79324F21F4BACB006E9731</string>
<key>history</key>
<array>
<string>8BFDB0B1213A19500079F90D</string>
- <string>8BFDB0B2213A19500079F90D</string>
- <string>8BFDB0B4213A19500079F90D</string>
+ <string>8B79324821F4BABB006E9731</string>
+ <string>8B79324A21F4BABB006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -373,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 202}}</string>
+ <string>{{0, 0}, {628, 422}}</string>
<key>RubberWindowFrame</key>
- <string>654 195 841 654 0 0 1440 878 </string>
+ <string>454 199 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>202pt</string>
+ <string>422pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>406pt</string>
+ <string>186pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -398,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 379}}</string>
- <key>RubberWindowFrame</key>
- <string>654 195 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {628, 159}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -454,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {628, 159}}</string>
+ <key>RubberWindowFrame</key>
+ <string>454 199 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -463,7 +461,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>628pt</string>
</dict>
</array>
<key>Name</key>
@@ -482,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B6DBA6B213B59B000E44739</string>
+ <string>8B79325021F4BACB006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B6DBA6C213B59B000E44739</string>
+ <string>8B79325121F4BACB006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B6DBA6D213B59B000E44739</string>
+ <string>8B79325221F4BACB006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -659,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>557537712.47539306</real>
+ <real>569686731.11476696</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -679,7 +677,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/UnBox/UnBox.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>654 195 841 654 0 0 1440 878 </string>
+ <string>454 199 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/VariMu/VariMu.cpp b/plugins/MacAU/VariMu/VariMu.cpp
index 50babba..de02670 100755
--- a/plugins/MacAU/VariMu/VariMu.cpp
+++ b/plugins/MacAU/VariMu/VariMu.cpp
@@ -331,14 +331,11 @@ void VariMu::VariMuKernel::Process( const Float32 *inSourceP,
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
diff --git a/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser
index 3724cac..1a4176c 100755
--- a/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 364,
+ 398,
20,
48,
43,
@@ -49,18 +49,42 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553985775;
- PBXWorkspaceStateSaveDate = 553985775;
+ PBXPerProjectTemplateStateSaveDate = 569686793;
+ PBXWorkspaceStateSaveDate = 569686793;
+ };
+ perUserProjectItems = {
+ 8B79326021F4BB45006E9731 /* PBXTextBookmark */ = 8B79326021F4BB45006E9731 /* PBXTextBookmark */;
+ 8B79326521F4BB59006E9731 /* PBXTextBookmark */ = 8B79326521F4BB59006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B79326021F4BB45006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* VariMu.cpp */;
+ name = "VariMu.cpp: 339";
+ rLen = 0;
+ rLoc = 13742;
+ rType = 0;
+ vrLen = 1137;
+ vrLoc = 12693;
+ };
+ 8B79326521F4BB59006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* VariMu.cpp */;
+ name = "VariMu.cpp: 339";
+ rLen = 0;
+ rLoc = 13742;
+ rType = 0;
+ vrLen = 1204;
+ vrLoc = 12626;
+ };
8BA05A660720730100365D66 /* VariMu.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {754, 4823}}";
- sepNavSelRange = "{10960, 2235}";
- sepNavVisRange = "{10339, 1838}";
+ sepNavIntBoundsRect = "{{0, 0}, {754, 4875}}";
+ sepNavSelRange = "{13742, 0}";
+ sepNavVisRange = "{12626, 1204}";
sepNavWindowFrame = "{{643, 44}, {776, 834}}";
};
};
@@ -83,9 +107,9 @@
8BC6025B073B072D006C4272 /* VariMu.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {824, 1976}}";
- sepNavSelRange = "{5236, 185}";
- sepNavVisRange = "{1248, 2117}";
- sepNavWindowFrame = "{{606, 77}, {834, 801}}";
+ sepNavSelRange = "{5122, 0}";
+ sepNavVisRange = "{4202, 1352}";
+ sepNavWindowFrame = "{{456, 70}, {834, 801}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
diff --git a/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3
index 442c0b6..b11d3d7 100755
--- a/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>810</integer>
- <integer>810</integer>
+ <integer>844</integer>
+ <integer>844</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -307,7 +305,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {185, 428}}</string>
+ <string>{{0, 0}, {185, 681}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -317,14 +315,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {202, 446}}</string>
+ <string>{{0, 0}, {202, 699}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>623 325 810 487 0 0 1440 878 </string>
+ <string>477 100 844 740 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -340,7 +338,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BB8B6602102749700751000</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>VariMu.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -348,7 +346,15 @@
<key>PBXProjectModuleGUID</key>
<string>8BB8B6612102749700751000</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>VariMu.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B79326521F4BB59006E9731</string>
+ <key>history</key>
+ <array>
+ <string>8B79326021F4BB45006E9731</string>
+ </array>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -361,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 0}}</string>
+ <string>{{0, 0}, {637, 544}}</string>
<key>RubberWindowFrame</key>
- <string>623 325 810 487 0 0 1440 878 </string>
+ <string>477 100 844 740 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>0pt</string>
+ <string>544pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>441pt</string>
+ <string>150pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -386,9 +392,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>623 325 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {637, 123}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -442,7 +446,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {637, 123}}</string>
+ <key>RubberWindowFrame</key>
+ <string>477 100 844 740 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -451,7 +457,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>603pt</string>
+ <string>637pt</string>
</dict>
</array>
<key>Name</key>
@@ -470,11 +476,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBD18752105423A0015A233</string>
+ <string>8B79326621F4BB59006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBD18762105423A0015A233</string>
+ <string>8B79326721F4BB59006E9731</string>
<string>8BB8B6602102749700751000</string>
- <string>8BBD18772105423A0015A233</string>
+ <string>8B79326821F4BB59006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -627,7 +633,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553992762.45564604</real>
+ <real>569686873.84603405</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -644,11 +650,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBD18782105423A0015A233</string>
<string>/Users/christopherjohnson/Desktop/MacAU/VariMu/VariMu.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>623 325 810 487 0 0 1440 878 </string>
+ <string>477 100 844 740 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.cpp b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.cpp
index e89cc53..cfc6806 100755
--- a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.cpp
+++ b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.cpp
@@ -175,9 +175,7 @@ void VoiceOfTheStarship::VoiceOfTheStarshipKernel::Reset()
filterflip = false;
for(int count = 0; count < 11; count++) {b[count] = 0.0; f[count] = 0.0;}
lastAlgorithm = 0;
- fpNShapeA = 0.0;
- fpNShapeB = 0.0;
- fpFlip = true;
+ fpNShape = 0.0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -259,9 +257,6 @@ void VoiceOfTheStarship::VoiceOfTheStarshipKernel::Process( const Float32 *inS
Float64 rumbletrim = sqrt(lowcut);
//this among other things is just to give volume compensation
Float64 inputSample;
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
while (nSampleFrames-- > 0) {
inputSample = *sourceP;
@@ -323,19 +318,11 @@ void VoiceOfTheStarship::VoiceOfTheStarshipKernel::Process( const Float32 *inS
flip = !flip;
filterflip = !filterflip;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSample;
- fpNShapeA = (fpNShapeA*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeA;
- }
- else {
- fpTemp = inputSample;
- fpNShapeB = (fpNShapeB*fpOld)+((inputSample-fpTemp)*fpNew);
- inputSample += fpNShapeB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels;
diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.h b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.h
index d2731b8..28d236a 100755
--- a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.h
+++ b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.h
@@ -138,9 +138,7 @@ public:
Float64 b[11];
Float64 f[11];
int lastAlgorithm;
- Float64 fpNShapeA;
- Float64 fpNShapeB;
- bool fpFlip;
+ Float64 fpNShape;
};
};
diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.mode1v3
index e28aecb..e28aecb 100644..100755
--- a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.mode1v3
+++ b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.mode1v3
diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser
index 31707e8..2622f4a 100644..100755
--- a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser
@@ -12,7 +12,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 181,
+ 327,
20,
48,
43,
@@ -51,22 +51,53 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 539483684;
- PBXWorkspaceStateSaveDate = 539483684;
+ PBXPerProjectTemplateStateSaveDate = 569686894;
+ PBXWorkspaceStateSaveDate = 569686894;
};
perUserProjectItems = {
- 8BCA6F4B2027DF6C00D92BAD /* PBXTextBookmark */ = 8BCA6F4B2027DF6C00D92BAD /* PBXTextBookmark */;
- 8BCA6F4C2027DF6C00D92BAD /* PBXTextBookmark */ = 8BCA6F4C2027DF6C00D92BAD /* PBXTextBookmark */;
+ 8B79327421F4BBE8006E9731 /* PBXTextBookmark */ = 8B79327421F4BBE8006E9731 /* PBXTextBookmark */;
+ 8B79327621F4BBE8006E9731 /* PBXTextBookmark */ = 8B79327621F4BBE8006E9731 /* PBXTextBookmark */;
+ 8B79327F21F4BC16006E9731 /* PBXTextBookmark */ = 8B79327F21F4BC16006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B79327421F4BBE8006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* VoiceOfTheStarship.h */;
+ name = "VoiceOfTheStarship.h: 141";
+ rLen = 0;
+ rLoc = 5399;
+ rType = 0;
+ vrLen = 878;
+ vrLoc = 4631;
+ };
+ 8B79327621F4BBE8006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* VoiceOfTheStarship.cpp */;
+ name = "VoiceOfTheStarship.cpp: 329";
+ rLen = 0;
+ rLoc = 13814;
+ rType = 0;
+ vrLen = 1135;
+ vrLoc = 12872;
+ };
+ 8B79327F21F4BC16006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* VoiceOfTheStarship.cpp */;
+ name = "VoiceOfTheStarship.cpp: 260";
+ rLen = 0;
+ rLoc = 11704;
+ rType = 0;
+ vrLen = 1504;
+ vrLoc = 10760;
+ };
8BA05A660720730100365D66 /* VoiceOfTheStarship.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {803, 4758}}";
- sepNavSelRange = "{13583, 0}";
- sepNavVisRange = "{12506, 267}";
+ sepNavIntBoundsRect = "{{0, 0}, {677, 4446}}";
+ sepNavSelRange = "{11704, 0}";
+ sepNavVisRange = "{10760, 1504}";
sepNavWindowFrame = "{{459, 62}, {981, 816}}";
};
};
@@ -96,32 +127,12 @@
};
8BC6025B073B072D006C4272 /* VoiceOfTheStarship.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 1937}}";
- sepNavSelRange = "{5380, 57}";
- sepNavVisRange = "{4200, 1340}";
+ sepNavIntBoundsRect = "{{0, 0}, {824, 2171}}";
+ sepNavSelRange = "{5399, 0}";
+ sepNavVisRange = "{4631, 878}";
sepNavWindowFrame = "{{670, 67}, {770, 811}}";
};
};
- 8BCA6F4B2027DF6C00D92BAD /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* VoiceOfTheStarship.cpp */;
- name = "VoiceOfTheStarship.cpp: 319";
- rLen = 0;
- rLoc = 13583;
- rType = 0;
- vrLen = 267;
- vrLoc = 12506;
- };
- 8BCA6F4C2027DF6C00D92BAD /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* VoiceOfTheStarship.cpp */;
- name = "VoiceOfTheStarship.cpp: 319";
- rLen = 0;
- rLoc = 13583;
- rType = 0;
- vrLen = 267;
- vrLoc = 12506;
- };
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3
index e5ee563..93dc9d7 100644..100755
--- a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>810</integer>
- <integer>810</integer>
+ <integer>850</integer>
+ <integer>850</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -300,14 +298,14 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>3</integer>
+ <integer>4</integer>
<integer>2</integer>
<integer>1</integer>
<integer>0</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {262, 390}}</string>
+ <string>{{0, 0}, {262, 653}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -317,14 +315,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {279, 408}}</string>
+ <string>{{0, 0}, {279, 671}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>262</real>
</array>
<key>RubberWindowFrame</key>
- <string>727 422 704 449 0 0 1440 878 </string>
+ <string>436 140 850 712 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -335,6 +333,8 @@
<key>Dock</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -352,10 +352,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BCA6F4C2027DF6C00D92BAD</string>
+ <string>8B79327F21F4BC16006E9731</string>
<key>history</key>
<array>
- <string>8BCA6F4B2027DF6C00D92BAD</string>
+ <string>8B79327421F4BBE8006E9731</string>
+ <string>8B79327621F4BBE8006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {420, 121}}</string>
+ <string>{{0, 0}, {566, 560}}</string>
<key>RubberWindowFrame</key>
- <string>727 422 704 449 0 0 1440 878 </string>
+ <string>436 140 850 712 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>121pt</string>
+ <string>560pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>282pt</string>
+ <string>106pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {420, 255}}</string>
- <key>RubberWindowFrame</key>
- <string>727 422 704 449 0 0 1440 878 </string>
+ <string>{{10, 27}, {566, 79}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {526, 414}}</string>
+ <string>{{10, 27}, {566, 79}}</string>
+ <key>RubberWindowFrame</key>
+ <string>436 140 850 712 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -459,7 +460,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>420pt</string>
+ <string>566pt</string>
</dict>
</array>
<key>Name</key>
@@ -478,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BCA6F4D2027DF6C00D92BAD</string>
+ <string>8B79328021F4BC16006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BCA6F4E2027DF6C00D92BAD</string>
+ <string>8B79328121F4BC16006E9731</string>
<string>8BD3753F2011847B00FD04C9</string>
- <string>8BCA6F4F2027DF6C00D92BAD</string>
+ <string>8B79328221F4BC16006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -655,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>539484012.35384703</real>
+ <real>569687062.55458999</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,7 +676,7 @@
<string>/Users/christopherjohnson/Desktop/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>727 422 704 449 0 0 1440 878 </string>
+ <string>436 140 850 712 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj
index cc10978..cc10978 100644..100755
--- a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj
+++ b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj
diff --git a/plugins/MacAU/Wider/Wider.cpp b/plugins/MacAU/Wider/Wider.cpp
index 050f43a..3063f97 100755
--- a/plugins/MacAU/Wider/Wider.cpp
+++ b/plugins/MacAU/Wider/Wider.cpp
@@ -189,11 +189,8 @@ ComponentResult Wider::Reset(AudioUnitScope inScope, AudioUnitElement inElement
{
for(int fcount = 0; fcount < 4098; fcount++) {p[fcount] = 0.0;}
count = 0;
- flip = false;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
return noErr;
}
@@ -215,9 +212,6 @@ OSStatus Wider::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags,
Float64 overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
- Float32 fpTemp;
- Float64 fpOld = 0.618033988749894848204586; //golden ratio!
- Float64 fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
Float64 drySampleL;
@@ -338,27 +332,14 @@ OSStatus Wider::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags,
inputSampleL = (drySampleL * dry) + ((mid+side) * wet);
inputSampleR = (drySampleR * dry) + ((mid-side) * wet);
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((Float32)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacAU/Wider/Wider.h b/plugins/MacAU/Wider/Wider.h
index 8bad13a..5d5608f 100755
--- a/plugins/MacAU/Wider/Wider.h
+++ b/plugins/MacAU/Wider/Wider.h
@@ -118,11 +118,8 @@ public:
private:
Float64 p[4099];
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
- bool flip;
+ long double fpNShapeL;
+ long double fpNShapeR;
int count;
};
diff --git a/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.pbxuser
index 7c2423a..0d5f1a6 100755
--- a/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 364,
+ 450,
20,
48,
43,
@@ -49,23 +49,54 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 546574001;
- PBXWorkspaceStateSaveDate = 546574001;
+ PBXPerProjectTemplateStateSaveDate = 569687155;
+ PBXWorkspaceStateSaveDate = 569687155;
};
perUserProjectItems = {
- 8BC5D08220940F340058B257 /* PBXTextBookmark */ = 8BC5D08220940F340058B257 /* PBXTextBookmark */;
- 8BC5D08320940F340058B257 /* PBXTextBookmark */ = 8BC5D08320940F340058B257 /* PBXTextBookmark */;
+ 8B79328E21F4BD0E006E9731 /* PBXTextBookmark */ = 8B79328E21F4BD0E006E9731 /* PBXTextBookmark */;
+ 8B79329021F4BD0E006E9731 /* PBXTextBookmark */ = 8B79329021F4BD0E006E9731 /* PBXTextBookmark */;
+ 8B79329521F4BD1F006E9731 /* PBXTextBookmark */ = 8B79329521F4BD1F006E9731 /* PBXTextBookmark */;
8BEF337F1D81EAE5008B0B7F /* PBXTextBookmark */ = 8BEF337F1D81EAE5008B0B7F /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
+ 8B79328E21F4BD0E006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* Wider.h */;
+ name = "Wider.h: 123";
+ rLen = 0;
+ rLoc = 5115;
+ rType = 0;
+ vrLen = 1305;
+ vrLoc = 3927;
+ };
+ 8B79329021F4BD0E006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Wider.cpp */;
+ name = "Wider.cpp: 215";
+ rLen = 0;
+ rLoc = 8890;
+ rType = 0;
+ vrLen = 1668;
+ vrLoc = 8634;
+ };
+ 8B79329521F4BD1F006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* Wider.cpp */;
+ name = "Wider.cpp: 215";
+ rLen = 0;
+ rLoc = 8890;
+ rType = 0;
+ vrLen = 1668;
+ vrLoc = 8634;
+ };
8BA05A660720730100365D66 /* Wider.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 4992}}";
- sepNavSelRange = "{14374, 15}";
- sepNavVisRange = "{0, 0}";
+ sepNavIntBoundsRect = "{{0, 0}, {852, 4940}}";
+ sepNavSelRange = "{8890, 0}";
+ sepNavVisRange = "{8634, 1668}";
sepNavWindowFrame = "{{607, 73}, {1021, 800}}";
};
};
@@ -93,31 +124,11 @@
sepNavWindowFrame = "{{424, 78}, {1021, 800}}";
};
};
- 8BC5D08220940F340058B257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Wider.cpp */;
- name = "Wider.cpp: 371";
- rLen = 15;
- rLoc = 14374;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
- 8BC5D08320940F340058B257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* Wider.cpp */;
- name = "Wider.cpp: 371";
- rLen = 15;
- rLoc = 14374;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
8BC6025B073B072D006C4272 /* Wider.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {974, 1716}}";
- sepNavSelRange = "{5049, 18}";
- sepNavVisRange = "{1459, 1999}";
+ sepNavIntBoundsRect = "{{0, 0}, {922, 1781}}";
+ sepNavSelRange = "{5115, 0}";
+ sepNavVisRange = "{3927, 1305}";
sepNavWindowFrame = "{{419, 78}, {1021, 800}}";
};
};
diff --git a/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3
index c4329ad..11f2693 100755
--- a/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>-1</integer>
- <integer>-1</integer>
+ <integer>896</integer>
+ <integer>896</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -307,7 +305,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {185, 428}}</string>
+ <string>{{0, 0}, {185, 685}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -317,14 +315,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {202, 446}}</string>
+ <string>{{0, 0}, {202, 703}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>622 326 810 487 0 0 1440 878 </string>
+ <string>416 108 896 744 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -352,11 +350,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BC5D08320940F340058B257</string>
+ <string>8B79329521F4BD1F006E9731</string>
<key>history</key>
<array>
<string>8BEF337F1D81EAE5008B0B7F</string>
- <string>8BC5D08220940F340058B257</string>
+ <string>8B79328E21F4BD0E006E9731</string>
+ <string>8B79329021F4BD0E006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {689, 547}}</string>
<key>RubberWindowFrame</key>
- <string>622 326 810 487 0 0 1440 878 </string>
+ <string>416 108 896 744 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>547pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>151pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
- <key>RubberWindowFrame</key>
- <string>622 326 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {689, 124}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 31}, {603, 297}}</string>
+ <string>{{10, 27}, {689, 124}}</string>
+ <key>RubberWindowFrame</key>
+ <string>416 108 896 744 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -460,7 +459,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>603pt</string>
+ <string>689pt</string>
</dict>
</array>
<key>Name</key>
@@ -479,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC5D08420940F340058B257</string>
+ <string>8B79329621F4BD1F006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC5D08520940F340058B257</string>
+ <string>8B79329721F4BD1F006E9731</string>
<string>8BEF335B1D81E786008B0B7F</string>
- <string>8BC5D08620940F340058B257</string>
+ <string>8B79329821F4BD1F006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>546574132.41940296</real>
+ <real>569687327.62574196</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +652,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BC5D08720940F340058B257</string>
<string>/Users/christopherjohnson/Desktop/MacAU/Wider/Wider.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>622 326 810 487 0 0 1440 878 </string>
+ <string>416 108 896 744 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/uLawDecode/uLawDecode.cpp b/plugins/MacAU/uLawDecode/uLawDecode.cpp
index 8bf3e5a..3f4581c 100755
--- a/plugins/MacAU/uLawDecode/uLawDecode.cpp
+++ b/plugins/MacAU/uLawDecode/uLawDecode.cpp
@@ -231,23 +231,15 @@ void uLawDecode::uLawDecodeKernel::Process( const Float32 *inSourceP,
}
//Dry/Wet control, defaults to the last slider
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser
index 7c52743..fa546fe 100755
--- a/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 382,
20,
48,
43,
@@ -49,33 +49,54 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561231051;
- PBXWorkspaceStateSaveDate = 561231051;
+ PBXPerProjectTemplateStateSaveDate = 569686304;
+ PBXWorkspaceStateSaveDate = 569686304;
};
perUserProjectItems = {
- 8B2720A82173B5FC00396442 /* PBXTextBookmark */ = 8B2720A82173B5FC00396442 /* PBXTextBookmark */;
+ 8B79321B21F4B952006E9731 /* PBXTextBookmark */ = 8B79321B21F4B952006E9731 /* PBXTextBookmark */;
+ 8B79321D21F4B952006E9731 /* PBXTextBookmark */ = 8B79321D21F4B952006E9731 /* PBXTextBookmark */;
+ 8B79322221F4B963006E9731 /* PBXTextBookmark */ = 8B79322221F4B963006E9731 /* PBXTextBookmark */;
8BE1D69D2145372700D5F5B6 /* PlistBookmark */ = 8BE1D69D2145372700D5F5B6 /* PlistBookmark */;
- 8BE626FE2159745A00E4E476 /* PBXTextBookmark */ = 8BE626FE2159745A00E4E476 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B2720A82173B5FC00396442 /* PBXTextBookmark */ = {
+ 8B79321B21F4B952006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* uLawDecode.h */;
+ name = "uLawDecode.h: 67";
+ rLen = 0;
+ rLoc = 3125;
+ rType = 0;
+ vrLen = 1015;
+ vrLoc = 4252;
+ };
+ 8B79321D21F4B952006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* uLawDecode.cpp */;
+ name = "uLawDecode.cpp: 244";
+ rLen = 0;
+ rLoc = 10226;
+ rType = 0;
+ vrLen = 974;
+ vrLoc = 9255;
+ };
+ 8B79322221F4B963006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* uLawDecode.cpp */;
- name = "uLawDecode.cpp: 224";
+ name = "uLawDecode.cpp: 244";
rLen = 0;
- rLoc = 9598;
+ rLoc = 10226;
rType = 0;
- vrLen = 437;
- vrLoc = 10287;
+ vrLen = 1006;
+ vrLoc = 9223;
};
8BA05A660720730100365D66 /* uLawDecode.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {621, 3471}}";
- sepNavSelRange = "{9598, 0}";
- sepNavVisRange = "{10287, 437}";
+ sepNavIntBoundsRect = "{{0, 0}, {670, 3471}}";
+ sepNavSelRange = "{10226, 0}";
+ sepNavVisRange = "{9223, 1006}";
sepNavWindowFrame = "{{587, 45}, {816, 833}}";
};
};
@@ -89,9 +110,9 @@
};
8BC6025B073B072D006C4272 /* uLawDecode.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {843, 1664}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 1781}}";
sepNavSelRange = "{3125, 0}";
- sepNavVisRange = "{1679, 1855}";
+ sepNavVisRange = "{4252, 1015}";
sepNavWindowFrame = "{{15, 63}, {890, 810}}";
};
};
@@ -121,16 +142,6 @@
rLen = 0;
rLoc = 9223372036854775808;
};
- 8BE626FE2159745A00E4E476 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 8BA05A660720730100365D66 /* uLawDecode.cpp */;
- name = "uLawDecode.cpp: 224";
- rLen = 0;
- rLoc = 9598;
- rType = 0;
- vrLen = 434;
- vrLoc = 10290;
- };
8D01CCC60486CAD60068D4B7 /* uLawDecode */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3
index b412088..a73a00a 100755
--- a/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>198</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -309,7 +307,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {198, 595}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -319,19 +317,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {215, 613}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>198</real>
</array>
<key>RubberWindowFrame</key>
- <string>585 216 841 654 0 0 1440 878 </string>
+ <string>464 204 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>215pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -354,11 +352,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B2720A82173B5FC00396442</string>
+ <string>8B79322221F4B963006E9731</string>
<key>history</key>
<array>
<string>8BE1D69D2145372700D5F5B6</string>
- <string>8BE626FE2159745A00E4E476</string>
+ <string>8B79321B21F4B952006E9731</string>
+ <string>8B79321D21F4B952006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 173}}</string>
+ <string>{{0, 0}, {621, 497}}</string>
<key>RubberWindowFrame</key>
- <string>585 216 841 654 0 0 1440 878 </string>
+ <string>464 204 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>173pt</string>
+ <string>497pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>435pt</string>
+ <string>111pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -397,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 408}}</string>
- <key>RubberWindowFrame</key>
- <string>585 216 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {621, 84}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {621, 84}}</string>
+ <key>RubberWindowFrame</key>
+ <string>464 204 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -462,7 +461,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>621pt</string>
</dict>
</array>
<key>Name</key>
@@ -481,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B2720A92173B5FC00396442</string>
+ <string>8B79322321F4B963006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B2720AA2173B5FC00396442</string>
+ <string>8B79322421F4B963006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B2720AB2173B5FC00396442</string>
+ <string>8B79322521F4B963006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -658,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561231356.44708204</real>
+ <real>569686371.96209395</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -675,11 +674,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B2720AC2173B5FC00396442</string>
<string>/Users/christopherjohnson/Desktop/MacAU/uLawDecode/uLawDecode.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>585 216 841 654 0 0 1440 878 </string>
+ <string>464 204 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacAU/uLawEncode/uLawEncode.cpp b/plugins/MacAU/uLawEncode/uLawEncode.cpp
index 60e0bb1..9c663fb 100755
--- a/plugins/MacAU/uLawEncode/uLawEncode.cpp
+++ b/plugins/MacAU/uLawEncode/uLawEncode.cpp
@@ -229,23 +229,15 @@ void uLawEncode::uLawEncodeKernel::Process( const Float32 *inSourceP,
inputSample = (inputSample * wet) + (drySample * dry);
}
- //noise shaping to 32-bit floating point
- Float32 fpTemp = inputSample;
- fpNShape += (inputSample-fpTemp);
- inputSample += fpNShape;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //32 bit dither, made small and tidy.
+ int expon; frexpf((Float32)inputSample, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSample += (dither-fpNShape); fpNShape = dither;
+ //end 32 bit dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
- fpNShape *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser
index 79aef9a..3d079b0 100755
--- a/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 292,
+ 444,
20,
48,
43,
@@ -49,18 +49,20 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561229885;
- PBXWorkspaceStateSaveDate = 561229885;
+ PBXPerProjectTemplateStateSaveDate = 569686467;
+ PBXWorkspaceStateSaveDate = 569686467;
};
perUserProjectItems = {
- 8B27203D2173B23100396442 /* PlistBookmark */ = 8B27203D2173B23100396442 /* PlistBookmark */;
- 8BE627102159750A00E4E476 /* PlistBookmark */ = 8BE627102159750A00E4E476 /* PlistBookmark */;
+ 8B79323121F4B9E7006E9731 /* PlistBookmark */ = 8B79323121F4B9E7006E9731 /* PlistBookmark */;
+ 8B79323221F4B9E7006E9731 /* PBXTextBookmark */ = 8B79323221F4B9E7006E9731 /* PBXTextBookmark */;
+ 8B79323421F4B9E7006E9731 /* PBXTextBookmark */ = 8B79323421F4B9E7006E9731 /* PBXTextBookmark */;
+ 8B79323921F4BA03006E9731 /* PBXTextBookmark */ = 8B79323921F4BA03006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
- 8B27203D2173B23100396442 /* PlistBookmark */ = {
+ 8B79323121F4B9E7006E9731 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
@@ -72,11 +74,41 @@
rLen = 0;
rLoc = 9223372036854775807;
};
+ 8B79323221F4B9E7006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BC6025B073B072D006C4272 /* uLawEncode.h */;
+ name = "uLawEncode.h: 50";
+ rLen = 1;
+ rLoc = 2740;
+ rType = 0;
+ vrLen = 1139;
+ vrLoc = 4128;
+ };
+ 8B79323421F4B9E7006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* uLawEncode.cpp */;
+ name = "uLawEncode.cpp: 242";
+ rLen = 0;
+ rLoc = 10181;
+ rType = 0;
+ vrLen = 1133;
+ vrLoc = 9051;
+ };
+ 8B79323921F4BA03006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A660720730100365D66 /* uLawEncode.cpp */;
+ name = "uLawEncode.cpp: 242";
+ rLen = 0;
+ rLoc = 10181;
+ rType = 0;
+ vrLen = 1159;
+ vrLoc = 9025;
+ };
8BA05A660720730100365D66 /* uLawEncode.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {824, 3276}}";
- sepNavSelRange = "{9497, 258}";
- sepNavVisRange = "{8738, 1941}";
+ sepNavIntBoundsRect = "{{0, 0}, {670, 3406}}";
+ sepNavSelRange = "{10181, 0}";
+ sepNavVisRange = "{9025, 1159}";
sepNavWindowFrame = "{{684, 45}, {816, 833}}";
};
};
@@ -92,7 +124,7 @@
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {894, 1781}}";
sepNavSelRange = "{2740, 1}";
- sepNavVisRange = "{1993, 1589}";
+ sepNavVisRange = "{4128, 1139}";
sepNavWindowFrame = "{{732, 67}, {890, 810}}";
};
};
@@ -110,18 +142,6 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BE627102159750A00E4E476 /* PlistBookmark */ = {
- isa = PlistBookmark;
- fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
- fallbackIsa = PBXBookmark;
- isK = 0;
- kPath = (
- CFBundleName,
- );
- name = /Users/christopherjohnson/Desktop/MacAU/uLawEncode/Info.plist;
- rLen = 0;
- rLoc = 9223372036854775808;
- };
8D01CCC60486CAD60068D4B7 /* uLawEncode */ = {
activeExec = 0;
};
diff --git a/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3
index 75813d1..663d11c 100755
--- a/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacAU/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3
@@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
- <integer>841</integer>
- <integer>841</integer>
+ <integer>899</integer>
+ <integer>899</integer>
</array>
<key>Perspectives</key>
<array>
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -282,7 +280,7 @@
<dict>
<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
<array>
- <real>288</real>
+ <real>194</real>
</array>
<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
<array>
@@ -309,7 +307,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {288, 595}}</string>
+ <string>{{0, 0}, {194, 656}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -319,19 +317,19 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {305, 613}}</string>
+ <string>{{0, 0}, {211, 674}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
- <real>288</real>
+ <real>194</real>
</array>
<key>RubberWindowFrame</key>
- <string>637 204 841 654 0 0 1440 878 </string>
+ <string>406 163 899 715 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>Proportion</key>
- <string>305pt</string>
+ <string>211pt</string>
</dict>
<dict>
<key>Dock</key>
@@ -342,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Info.plist</string>
+ <string>uLawEncode.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -350,14 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
- <string>Info.plist</string>
+ <string>uLawEncode.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B27203D2173B23100396442</string>
+ <string>8B79323921F4BA03006E9731</string>
<key>history</key>
<array>
- <string>8BE627102159750A00E4E476</string>
+ <string>8B79323121F4B9E7006E9731</string>
+ <string>8B79323221F4B9E7006E9731</string>
+ <string>8B79323421F4B9E7006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 202}}</string>
+ <string>{{0, 0}, {683, 549}}</string>
<key>RubberWindowFrame</key>
- <string>637 204 841 654 0 0 1440 878 </string>
+ <string>406 163 899 715 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>202pt</string>
+ <string>549pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>406pt</string>
+ <string>120pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 379}}</string>
- <key>RubberWindowFrame</key>
- <string>637 204 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {683, 93}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -452,7 +450,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {683, 93}}</string>
+ <key>RubberWindowFrame</key>
+ <string>406 163 899 715 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -461,7 +461,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>531pt</string>
+ <string>683pt</string>
</dict>
</array>
<key>Name</key>
@@ -480,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B27203E2173B23100396442</string>
+ <string>8B79323A21F4BA03006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B27203F2173B23100396442</string>
+ <string>8B79323B21F4BA03006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B2720402173B23100396442</string>
+ <string>8B79323C21F4BA03006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -657,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561230385.17758596</real>
+ <real>569686531.54984498</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,11 +674,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B2720412173B23100396442</string>
<string>/Users/christopherjohnson/Desktop/MacAU/uLawEncode/uLawEncode.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>637 204 841 654 0 0 1440 878 </string>
+ <string>406 163 899 715 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser
index 799d07e..a0c7b52 100755
--- a/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538005027;
- PBXWorkspaceStateSaveDate = 538005027;
+ PBXPerProjectTemplateStateSaveDate = 569707583;
+ PBXWorkspaceStateSaveDate = 569707583;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -82,9 +82,9 @@
};
24D8286F09A914000093AEF8 /* ADClip7Proc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {894, 12142}}";
+ sepNavIntBoundsRect = "{{0, 0}, {894, 12259}}";
sepNavSelRange = "{31114, 0}";
- sepNavVisRange = "{17851, 2149}";
+ sepNavVisRange = "{14613, 1745}";
sepNavWindowFrame = "{{361, 47}, {895, 831}}";
};
};
diff --git a/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3
index c9b5da3..ea91334 100755
--- a/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/ADClip7/ADClip7.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -386,8 +384,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>96 265 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -441,7 +437,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>96 265 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -469,11 +467,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B79CD1820114E3100E8A187</string>
+ <string>8B79332C21F50C74006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B79CD1920114E3100E8A187</string>
+ <string>8B79332D21F50C74006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B79CD1A20114E3100E8A187</string>
+ <string>8B79332E21F50C74006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +624,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538005096.68480003</real>
+ <real>569707636.05000305</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +641,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B79CD2620114E6800E8A187</string>
<string>/Users/christopherjohnson/Desktop/MacVST/ADClip7/ADClip7.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/ADClip7/source/ADClip7.cpp b/plugins/MacVST/ADClip7/source/ADClip7.cpp
index fb6d6c6..7ebc817 100755
--- a/plugins/MacVST/ADClip7/source/ADClip7.cpp
+++ b/plugins/MacVST/ADClip7/source/ADClip7.cpp
@@ -30,11 +30,8 @@ ADClip7::ADClip7(audioMasterCallback audioMaster) :
iirLowsBL = 0.0;
iirLowsBR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/ADClip7/source/ADClip7.h b/plugins/MacVST/ADClip7/source/ADClip7.h
index f20d3fb..f0cde6c 100755
--- a/plugins/MacVST/ADClip7/source/ADClip7.h
+++ b/plugins/MacVST/ADClip7/source/ADClip7.h
@@ -55,11 +55,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
long double lastSampleL;
long double lastSampleR;
diff --git a/plugins/MacVST/ADClip7/source/ADClip7Proc.cpp b/plugins/MacVST/ADClip7/source/ADClip7Proc.cpp
index 2705d61..abc9909 100755
--- a/plugins/MacVST/ADClip7/source/ADClip7Proc.cpp
+++ b/plugins/MacVST/ADClip7/source/ADClip7Proc.cpp
@@ -17,10 +17,8 @@ void ADClip7::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ long double fpNew = 1.0 - fpOld;
double inputGain = pow(10.0,(A*18.0)/20.0);
double softness = B * fpNew;
double hardness = 1.0 - softness;
@@ -449,25 +447,14 @@ void ADClip7::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
if (inputSampleR < -refclipR) inputSampleR = -refclipR;
//final iron bar
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -489,10 +476,8 @@ void ADClip7::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ long double fpNew = 1.0 - fpOld;
double inputGain = pow(10.0,(A*18.0)/20.0);
double softness = B * fpNew;
double hardness = 1.0 - softness;
@@ -922,25 +907,16 @@ void ADClip7::processDoubleReplacing(double **inputs, double **outputs, VstInt32
if (inputSampleR < -refclipR) inputSampleR = -refclipR;
//final iron bar
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.pbxuser
index 883fa84..8d10b59 100755
--- a/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561773367;
- PBXWorkspaceStateSaveDate = 561773367;
+ PBXPerProjectTemplateStateSaveDate = 569707657;
+ PBXWorkspaceStateSaveDate = 569707657;
};
perUserProjectItems = {
- 8B15DB9A21743644007AD769 /* PBXTextBookmark */ = 8B15DB9A21743644007AD769 /* PBXTextBookmark */;
- 8B15DD60217BFB50007AD769 /* PBXTextBookmark */ = 8B15DD60217BFB50007AD769 /* PBXTextBookmark */;
+ 8B79334D21F50CB2006E9731 /* PBXTextBookmark */ = 8B79334D21F50CB2006E9731 /* PBXTextBookmark */;
+ 8B79334E21F50CB2006E9731 /* PBXTextBookmark */ = 8B79334E21F50CB2006E9731 /* PBXTextBookmark */;
+ 8B79334F21F50CB2006E9731 /* PBXTextBookmark */ = 8B79334F21F50CB2006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -62,9 +63,9 @@
};
2407DEB6089929BA00EB68BF /* ADT.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {740, 2093}}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 2002}}";
sepNavSelRange = "{4290, 0}";
- sepNavVisRange = "{3343, 2609}";
+ sepNavVisRange = "{4100, 345}";
sepNavWindowFrame = "{{735, 48}, {705, 830}}";
};
};
@@ -86,9 +87,9 @@
};
24D8286F09A914000093AEF8 /* ADTProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {649, 4875}}";
+ sepNavIntBoundsRect = "{{0, 0}, {782, 4446}}";
sepNavSelRange = "{7166, 0}";
- sepNavVisRange = "{7098, 143}";
+ sepNavVisRange = "{5269, 841}";
sepNavWindowFrame = "{{129, 47}, {895, 831}}";
};
};
@@ -106,25 +107,35 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B15DB9A21743644007AD769 /* PBXTextBookmark */ = {
+ 8B79334D21F50CB2006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2407DEB6089929BA00EB68BF /* ADT.cpp */;
+ name = "ADT.cpp: 121";
+ rLen = 0;
+ rLoc = 4290;
+ rType = 0;
+ vrLen = 345;
+ vrLoc = 4100;
+ };
+ 8B79334E21F50CB2006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ADTProc.cpp */;
- name = "ADTProc.cpp: 207";
+ name = "ADTProc.cpp: 213";
rLen = 0;
rLoc = 7166;
rType = 0;
- vrLen = 178;
- vrLoc = 7098;
+ vrLen = 256;
+ vrLoc = 7031;
};
- 8B15DD60217BFB50007AD769 /* PBXTextBookmark */ = {
+ 8B79334F21F50CB2006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ADTProc.cpp */;
- name = "ADTProc.cpp: 207";
+ name = "ADTProc.cpp: 213";
rLen = 0;
rLoc = 7166;
rType = 0;
- vrLen = 143;
- vrLoc = 7098;
+ vrLen = 841;
+ vrLoc = 5269;
};
8D01CCC60486CAD60068D4B7 /* ADT */ = {
activeExec = 0;
diff --git a/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3
index 1eef004..05aaf68 100755
--- a/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/ADT/ADT.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>5</integer>
+ <integer>6</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -351,10 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B15DD60217BFB50007AD769</string>
+ <string>8B79334F21F50CB2006E9731</string>
<key>history</key>
<array>
- <string>8B15DB9A21743644007AD769</string>
+ <string>8B79334D21F50CB2006E9731</string>
+ <string>8B79334E21F50CB2006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 322}}</string>
<key>RubberWindowFrame</key>
<string>162 338 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>322pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>119pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 92}}</string>
<key>RubberWindowFrame</key>
<string>162 338 810 487 0 0 1440 878 </string>
</dict>
@@ -477,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B15DD52217BFB50007AD769</string>
+ <string>8B79335021F50CB2006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B15DD53217BFB50007AD769</string>
+ <string>8B79335121F50CB2006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B15DD54217BFB50007AD769</string>
+ <string>8B79335221F50CB2006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561773392.88148701</real>
+ <real>569707698.51112998</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +652,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B15DD55217BFB50007AD769</string>
<string>/Users/christopherjohnson/Desktop/MacVST/ADT/ADT.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/ADT/source/ADTProc.cpp b/plugins/MacVST/ADT/source/ADTProc.cpp
index f963f2f..74d23dd 100755
--- a/plugins/MacVST/ADT/source/ADTProc.cpp
+++ b/plugins/MacVST/ADT/source/ADTProc.cpp
@@ -156,18 +156,14 @@ void ADT::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
if (output < 1.0) {inputSampleL *= output; inputSampleR *= output;}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -177,12 +173,6 @@ void ADT::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -334,18 +324,16 @@ void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
if (output < 1.0) {inputSampleL *= output; inputSampleR *= output;}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -355,10 +343,4 @@ void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser
index 9ff059e..56e51e7 100755
--- a/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528459055;
- PBXWorkspaceStateSaveDate = 528459055;
+ PBXPerProjectTemplateStateSaveDate = 569707744;
+ PBXWorkspaceStateSaveDate = 569707744;
};
perUserProjectItems = {
- 8B1949391F0F1A0500C5FAB9 /* PBXTextBookmark */ = 8B1949391F0F1A0500C5FAB9 /* PBXTextBookmark */;
+ 8B79338421F50CE8006E9731 /* PBXTextBookmark */ = 8B79338421F50CE8006E9731 /* PBXTextBookmark */;
8B9D774E1F7FA54A007AB60F /* PBXTextBookmark */ = 8B9D774E1F7FA54A007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -70,7 +70,7 @@
};
245463B80991757100464AD3 /* AQuickVoiceClip.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 1976}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 1690}}";
sepNavSelRange = "{3742, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{514, 47}, {895, 831}}";
@@ -106,7 +106,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B1949391F0F1A0500C5FAB9 /* PBXTextBookmark */ = {
+ 8B79338421F50CE8006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* AQuickVoiceClip.h */;
name = "AQuickVoiceClip.h: 117";
diff --git a/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3
index 57c47dc..ce95340 100755
--- a/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -351,10 +349,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D774E1F7FA54A007AB60F</string>
+ <string>8B79338421F50CE8006E9731</string>
<key>history</key>
<array>
- <string>8B1949391F0F1A0500C5FAB9</string>
+ <string>8B9D774E1F7FA54A007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -394,8 +392,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>384 225 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -449,7 +445,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>384 225 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -477,11 +475,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D774F1F7FA54A007AB60F</string>
+ <string>8B79338521F50CE8006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D77501F7FA54A007AB60F</string>
+ <string>8B79338621F50CE8006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D77511F7FA54A007AB60F</string>
+ <string>8B79338721F50CE8006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +632,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528459082.86255097</real>
+ <real>569707752.54956698</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +649,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D77521F7FA54A007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.cpp b/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.cpp
index 9b5ea81..9b84221 100755
--- a/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.cpp
+++ b/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.cpp
@@ -57,11 +57,8 @@ AQuickVoiceClip::AQuickVoiceClip(audioMasterCallback audioMaster) :
ataK4 = 0.886; //remainder of interpolated dry, adds up to 1.0
ataK5 = 0.431; //subtract this much prev. diff sample, brightens. 0.431 becomes flat
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.h b/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.h
index dc8f5fa..40cfab2 100755
--- a/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.h
+++ b/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClip.h
@@ -115,11 +115,8 @@ private:
double RiirSampleD;
bool flip;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClipProc.cpp b/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClipProc.cpp
index 69dc283..cc282b6 100755
--- a/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClipProc.cpp
+++ b/plugins/MacVST/AQuickVoiceClip/source/AQuickVoiceClipProc.cpp
@@ -41,9 +41,6 @@ void AQuickVoiceClip::processReplacing(float **inputs, float **outputs, VstInt32
double RoutputSample;
double RdrySample;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -410,25 +407,14 @@ void AQuickVoiceClip::processReplacing(float **inputs, float **outputs, VstInt32
if (LlpDepth < 0.0) LlpDepth = 0.0;
if (RlpDepth < 0.0) RlpDepth = 0.0;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
inputSampleL *= (1.0-LmaxRecent);
inputSampleR *= (1.0-RmaxRecent);
@@ -487,9 +473,6 @@ void AQuickVoiceClip::processDoubleReplacing(double **inputs, double **outputs,
double RoutputSample;
double RdrySample;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -856,25 +839,16 @@ void AQuickVoiceClip::processDoubleReplacing(double **inputs, double **outputs,
if (LlpDepth < 0.0) LlpDepth = 0.0;
if (RlpDepth < 0.0) RlpDepth = 0.0;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
inputSampleL *= (1.0-LmaxRecent);
inputSampleR *= (1.0-RmaxRecent);
diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser
index 6146ccc..de2e9ea 100644..100755
--- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 539484698;
- PBXWorkspaceStateSaveDate = 539484698;
+ PBXPerProjectTemplateStateSaveDate = 569706438;
+ PBXWorkspaceStateSaveDate = 569706438;
};
perUserProjectItems = {
- 8BCA6F6E2027E22B00D92BAD /* PBXTextBookmark */ = 8BCA6F6E2027E22B00D92BAD /* PBXTextBookmark */;
- 8BCA6F6F2027E22B00D92BAD /* PBXTextBookmark */ = 8BCA6F6F2027E22B00D92BAD /* PBXTextBookmark */;
+ 8B7932FD21F507DF006E9731 /* XCBuildMessageTextBookmark */ = 8B7932FD21F507DF006E9731 /* XCBuildMessageTextBookmark */;
+ 8B79330721F50B3A006E9731 /* PBXTextBookmark */ = 8B79330721F50B3A006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -63,16 +63,16 @@
2407DEB6089929BA00EB68BF /* Acceleration.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {848, 1820}}";
- sepNavSelRange = "{671, 0}";
- sepNavVisRange = "{2909, 2099}";
+ sepNavSelRange = "{681, 92}";
+ sepNavVisRange = "{0, 2007}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Acceleration.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 1157}}";
- sepNavSelRange = "{2833, 0}";
- sepNavVisRange = "{720, 2154}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 1118}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRange = "{661, 2147}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
@@ -86,9 +86,9 @@
};
24D8286F09A914000093AEF8 /* AccelerationProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 4277}}";
- sepNavSelRange = "{5841, 0}";
- sepNavVisRange = "{5761, 137}";
+ sepNavIntBoundsRect = "{{0, 0}, {621, 3822}}";
+ sepNavSelRange = "{9506, 0}";
+ sepNavVisRange = "{4212, 165}";
sepNavWindowFrame = "{{25, 47}, {895, 831}}";
};
};
@@ -106,25 +106,24 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BCA6F6E2027E22B00D92BAD /* PBXTextBookmark */ = {
+ 8B7932FD21F507DF006E9731 /* XCBuildMessageTextBookmark */ = {
isa = PBXTextBookmark;
+ comments = "'Float32' was not declared in this scope";
fRef = 24D8286F09A914000093AEF8 /* AccelerationProc.cpp */;
- name = "AccelerationProc.cpp: 196";
- rLen = 0;
- rLoc = 5841;
- rType = 0;
- vrLen = 137;
- vrLoc = 5761;
+ fallbackIsa = XCBuildMessageTextBookmark;
+ rLen = 1;
+ rLoc = 135;
+ rType = 1;
};
- 8BCA6F6F2027E22B00D92BAD /* PBXTextBookmark */ = {
+ 8B79330721F50B3A006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* AccelerationProc.cpp */;
- name = "AccelerationProc.cpp: 196";
+ name = "AccelerationProc.cpp: 298";
rLen = 0;
- rLoc = 5841;
+ rLoc = 9506;
rType = 0;
- vrLen = 137;
- vrLoc = 5761;
+ vrLen = 165;
+ vrLoc = 4212;
};
8D01CCC60486CAD60068D4B7 /* Acceleration */ = {
activeExec = 0;
diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3
index c17455b..6330e85 100644..100755
--- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>9 374 810 487 0 0 1440 878 </string>
+ <string>7 375 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BCA6F6F2027E22B00D92BAD</string>
+ <string>8B79330721F50B3A006E9731</string>
<key>history</key>
<array>
- <string>8BCA6F6E2027E22B00D92BAD</string>
+ <string>8B7932FD21F507DF006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 86}}</string>
<key>RubberWindowFrame</key>
- <string>9 374 810 487 0 0 1440 878 </string>
+ <string>7 375 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>86pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>355pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
- <key>RubberWindowFrame</key>
- <string>9 374 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 328}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -449,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 328}}</string>
+ <key>RubberWindowFrame</key>
+ <string>7 375 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BCA6F702027E22B00D92BAD</string>
+ <string>8B7932EA21F507C8006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BCA6F712027E22B00D92BAD</string>
+ <string>8B7932EB21F507C8006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BCA6F722027E22B00D92BAD</string>
+ <string>8B7932EC21F507C8006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>539484715.52542996</real>
+ <real>569707322.35574102</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,11 +651,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BCA6F732027E22B00D92BAD</string>
+ <string>8B79330821F50B3A006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Acceleration/Acceleration.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>9 374 810 487 0 0 1440 878 </string>
+ <string>7 375 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index a80c038..a80c038 100644..100755
--- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
index 5c38f94..5c38f94 100644..100755
--- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
index 314de0f..314de0f 100644..100755
--- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.mode1v3
index c572326..c572326 100644..100755
--- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.mode1v3
+++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.mode1v3
diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.pbxuser
index df94780..df94780 100644..100755
--- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.pbxuser
+++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.pbxuser
diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
index 8ee693f..8ee693f 100644..100755
--- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
+++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
index 5bccbcb..5bccbcb 100644..100755
--- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
index a7bdd62..a7bdd62 100644..100755
--- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
index 0df2de4..0df2de4 100644..100755
--- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
+++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
diff --git a/plugins/MacVST/Acceleration/source/Acceleration.cpp b/plugins/MacVST/Acceleration/source/Acceleration.cpp
index f20c8f2..b2721d9 100755
--- a/plugins/MacVST/Acceleration/source/Acceleration.cpp
+++ b/plugins/MacVST/Acceleration/source/Acceleration.cpp
@@ -23,11 +23,8 @@ Acceleration::Acceleration(audioMasterCallback audioMaster) :
o1R = o2R = o3R = 0.0;
m1R = m2R = desR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Acceleration/source/Acceleration.h b/plugins/MacVST/Acceleration/source/Acceleration.h
index a152e25..02a3760 100755
--- a/plugins/MacVST/Acceleration/source/Acceleration.h
+++ b/plugins/MacVST/Acceleration/source/Acceleration.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double ataLastOutL;
double s1L;
diff --git a/plugins/MacVST/Acceleration/source/AccelerationProc.cpp b/plugins/MacVST/Acceleration/source/AccelerationProc.cpp
index 4785e37..0151dbe 100755
--- a/plugins/MacVST/Acceleration/source/AccelerationProc.cpp
+++ b/plugins/MacVST/Acceleration/source/AccelerationProc.cpp
@@ -17,9 +17,6 @@ void Acceleration::processReplacing(float **inputs, float **outputs, VstInt32 sa
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = pow(A,3)*(32/overallscale);
double wet = B;
@@ -135,25 +132,14 @@ void Acceleration::processReplacing(float **inputs, float **outputs, VstInt32 sa
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -175,9 +161,6 @@ void Acceleration::processDoubleReplacing(double **inputs, double **outputs, Vst
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = pow(A,3)*(32/overallscale);
double wet = B;
@@ -293,25 +276,16 @@ void Acceleration::processDoubleReplacing(double **inputs, double **outputs, Vst
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.pbxuser
index f47bee4..1d6d131 100755
--- a/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* Air */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528459012;
- PBXWorkspaceStateSaveDate = 528459012;
+ PBXPerProjectTemplateStateSaveDate = 569707718;
+ PBXWorkspaceStateSaveDate = 569707718;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* Air */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.perspectivev3
index 51c8a58..fc2db00 100755
--- a/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Air/Air.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -323,7 +321,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 108 810 487 0 0 1440 878 </string>
+ <string>172 221 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -362,7 +360,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>630 108 810 487 0 0 1440 878 </string>
+ <string>172 221 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -386,8 +384,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>630 108 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -441,7 +437,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>172 221 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -469,11 +467,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D77391F7FA524007AB60F</string>
+ <string>8B79336521F50CD1006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D773A1F7FA524007AB60F</string>
+ <string>8B79336621F50CD1006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D773B1F7FA524007AB60F</string>
+ <string>8B79336721F50CD1006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +624,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528459044.96789801</real>
+ <real>569707729.79363501</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,11 +641,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D773C1F7FA524007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Air/Air.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 108 810 487 0 0 1440 878 </string>
+ <string>172 221 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Air/Air.xcodeproj/project.pbxproj b/plugins/MacVST/Air/Air.xcodeproj/project.pbxproj
index 014f5ac..6f03014 100755
--- a/plugins/MacVST/Air/Air.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/Air/Air.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* Air */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Air" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* Air */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/Air/source/Air.cpp b/plugins/MacVST/Air/source/Air.cpp
index ebe8adc..ea52c26 100755
--- a/plugins/MacVST/Air/source/Air.cpp
+++ b/plugins/MacVST/Air/source/Air.cpp
@@ -61,11 +61,8 @@ Air::Air(audioMasterCallback audioMaster) :
D = 0.0;
E = 1.0;
F = 1.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Air/source/Air.h b/plugins/MacVST/Air/source/Air.h
index 00c0b76..a713cf2 100755
--- a/plugins/MacVST/Air/source/Air.h
+++ b/plugins/MacVST/Air/source/Air.h
@@ -100,11 +100,8 @@ private:
bool flop;
int count;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Air/source/AirProc.cpp b/plugins/MacVST/Air/source/AirProc.cpp
index f73e7d8..f5eb39f 100755
--- a/plugins/MacVST/Air/source/AirProc.cpp
+++ b/plugins/MacVST/Air/source/AirProc.cpp
@@ -22,9 +22,6 @@ void Air::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
double wet = F;
double dry = 1.0-wet;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -260,25 +257,14 @@ void Air::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -305,9 +291,6 @@ void Air::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
double wet = F;
double dry = 1.0-wet;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -543,25 +526,16 @@ void Air::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser
index e6a5761..5640742 100755
--- a/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 546567340;
- PBXWorkspaceStateSaveDate = 546567340;
+ PBXPerProjectTemplateStateSaveDate = 569718087;
+ PBXWorkspaceStateSaveDate = 569718087;
};
perUserProjectItems = {
+ 8B7933A421F53550006E9731 /* PBXTextBookmark */ = 8B7933A421F53550006E9731 /* PBXTextBookmark */;
8BC5CF342093F49F0058B257 /* PBXTextBookmark */ = 8BC5CF342093F49F0058B257 /* PBXTextBookmark */;
- 8BC5CF692093F4CF0058B257 /* PBXTextBookmark */ = 8BC5CF692093F4CF0058B257 /* PBXTextBookmark */;
8BC5CF6A2093F4CF0058B257 /* PBXTextBookmark */ = 8BC5CF6A2093F4CF0058B257 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -87,9 +87,9 @@
};
24D8286F09A914000093AEF8 /* AtmosphereBussProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {670, 7397}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 6929}}";
sepNavSelRange = "{13569, 0}";
- sepNavVisRange = "{1515, 154}";
+ sepNavVisRange = "{1538, 131}";
sepNavWindowFrame = "{{15, 47}, {895, 831}}";
};
};
@@ -107,6 +107,16 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
+ 8B7933A421F53550006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* AtmosphereBussProc.cpp */;
+ name = "AtmosphereBussProc.cpp: 378";
+ rLen = 0;
+ rLoc = 13569;
+ rType = 0;
+ vrLen = 131;
+ vrLoc = 1538;
+ };
8BC5CF342093F49F0058B257 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* AtmosphereBuss.cpp */;
@@ -117,16 +127,6 @@
vrLen = 421;
vrLoc = 2085;
};
- 8BC5CF692093F4CF0058B257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 24D8286F09A914000093AEF8 /* AtmosphereBussProc.cpp */;
- name = "AtmosphereBussProc.cpp: 379";
- rLen = 0;
- rLoc = 13569;
- rType = 0;
- vrLen = 154;
- vrLoc = 1515;
- };
8BC5CF6A2093F4CF0058B257 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* AtmosphereBussProc.cpp */;
diff --git a/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3
index 9bbfe98..16bcc2b 100755
--- a/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj/christopherjohnson.perspectivev3
@@ -349,11 +349,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BC5CF6A2093F4CF0058B257</string>
+ <string>8B7933A421F53550006E9731</string>
<key>history</key>
<array>
<string>8BC5CF342093F49F0058B257</string>
- <string>8BC5CF692093F4CF0058B257</string>
+ <string>8BC5CF6A2093F4CF0058B257</string>
</array>
</dict>
<key>SplitCount</key>
@@ -367,18 +367,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 102}}</string>
<key>RubberWindowFrame</key>
<string>11 221 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>102pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>339pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,7 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 312}}</string>
<key>RubberWindowFrame</key>
<string>11 221 810 487 0 0 1440 878 </string>
</dict>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC5CF6B2093F4CF0058B257</string>
+ <string>8B7933A521F53550006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC5CF6C2093F4CF0058B257</string>
+ <string>8B7933A621F53550006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BC5CF6D2093F4CF0058B257</string>
+ <string>8B7933A721F53550006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>546567375.58979297</real>
+ <real>569718096.20929098</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,7 +652,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/AtmosphereBuss/AtmosphereBuss.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj</string>
</array>
<key>WindowString</key>
<string>11 221 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/AtmosphereBuss/source/AtmosphereBussProc.cpp b/plugins/MacVST/AtmosphereBuss/source/AtmosphereBussProc.cpp
index 6530a7e..16d7a31 100755
--- a/plugins/MacVST/AtmosphereBuss/source/AtmosphereBussProc.cpp
+++ b/plugins/MacVST/AtmosphereBuss/source/AtmosphereBussProc.cpp
@@ -13,7 +13,6 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
@@ -250,18 +249,14 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32
lastSampleAR = drySampleR;
//store the raw R input sample again for use next time
- //noise shaping to 32-bit floating point
- fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -271,12 +266,6 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -285,7 +274,6 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
@@ -522,18 +510,16 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V
lastSampleAR = drySampleR;
//store the raw R input sample again for use next time
- //noise shaping to 64-bit floating point
- fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -543,10 +529,4 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
} \ No newline at end of file
diff --git a/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser
index f90657e..2f73690 100755
--- a/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 546562888;
- PBXWorkspaceStateSaveDate = 546562888;
+ PBXPerProjectTemplateStateSaveDate = 569718117;
+ PBXWorkspaceStateSaveDate = 569718117;
};
perUserProjectItems = {
- 8BC5CF292093F3420058B257 /* PBXTextBookmark */ = 8BC5CF292093F3420058B257 /* PBXTextBookmark */;
- 8BC5CF5A2093F4C50058B257 /* PBXTextBookmark */ = 8BC5CF5A2093F4C50058B257 /* PBXTextBookmark */;
+ 8B7933C421F5356E006E9731 /* PBXTextBookmark */ = 8B7933C421F5356E006E9731 /* PBXTextBookmark */;
+ 8B904B70209D2FF5008CBAD8 /* PBXTextBookmark */ = 8B904B70209D2FF5008CBAD8 /* PBXTextBookmark */;
+ 8B904BB3209D3409008CBAD8 /* PBXTextBookmark */ = 8B904BB3209D3409008CBAD8 /* PBXTextBookmark */;
+ 8BFBE952209D206700E1438C /* PBXTextBookmark */ = 8BFBE952209D206700E1438C /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -62,17 +64,17 @@
};
2407DEB6089929BA00EB68BF /* AtmosphereChannel.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {754, 1716}}";
+ sepNavIntBoundsRect = "{{0, 0}, {754, 1976}}";
sepNavSelRange = "{4879, 0}";
- sepNavVisRange = "{2108, 329}";
+ sepNavVisRange = "{2134, 303}";
sepNavWindowFrame = "{{291, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* AtmosphereChannel.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 1391}}";
+ sepNavIntBoundsRect = "{{0, 0}, {817, 1378}}";
sepNavSelRange = "{2886, 0}";
- sepNavVisRange = "{0, 2464}";
+ sepNavVisRange = "{2348, 116}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
@@ -86,10 +88,10 @@
};
24D8286F09A914000093AEF8 /* AtmosphereChannelProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 7046}}";
- sepNavSelRange = "{10357, 9646}";
- sepNavVisRange = "{9730, 1796}";
- sepNavWindowFrame = "{{570, 47}, {895, 831}}";
+ sepNavIntBoundsRect = "{{0, 0}, {747, 6825}}";
+ sepNavSelRange = "{9679, 0}";
+ sepNavVisRange = "{9613, 109}";
+ sepNavWindowFrame = "{{545, 45}, {895, 831}}";
};
};
8B02375E1D42B1C400E1E8C8 /* Source Control */ = {
@@ -106,25 +108,45 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BC5CF292093F3420058B257 /* PBXTextBookmark */ = {
+ 8B7933C421F5356E006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 2407DEB6089929BA00EB68BF /* AtmosphereChannel.cpp */;
- name = "AtmosphereChannel.cpp: 146";
+ fRef = 24D8286F09A914000093AEF8 /* AtmosphereChannelProc.cpp */;
+ name = "AtmosphereChannelProc.cpp: 266";
rLen = 0;
- rLoc = 4879;
+ rLoc = 9679;
+ rType = 0;
+ vrLen = 109;
+ vrLoc = 9613;
+ };
+ 8B904B70209D2FF5008CBAD8 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 245463B80991757100464AD3 /* AtmosphereChannel.h */;
+ name = "AtmosphereChannel.h: 73";
+ rLen = 0;
+ rLoc = 2886;
+ rType = 0;
+ vrLen = 116;
+ vrLoc = 2348;
+ };
+ 8B904BB3209D3409008CBAD8 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* AtmosphereChannelProc.cpp */;
+ name = "AtmosphereChannelProc.cpp: 262";
+ rLen = 0;
+ rLoc = 9679;
rType = 0;
- vrLen = 329;
- vrLoc = 2108;
+ vrLen = 52;
+ vrLoc = 9647;
};
- 8BC5CF5A2093F4C50058B257 /* PBXTextBookmark */ = {
+ 8BFBE952209D206700E1438C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* AtmosphereChannel.cpp */;
name = "AtmosphereChannel.cpp: 146";
rLen = 0;
rLoc = 4879;
rType = 0;
- vrLen = 329;
- vrLoc = 2108;
+ vrLen = 303;
+ vrLoc = 2134;
};
8D01CCC60486CAD60068D4B7 /* AtmosphereChannel */ = {
activeExec = 0;
diff --git a/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3
index 3cbeff8..75a73d9 100755
--- a/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -298,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>7</integer>
+ <integer>6</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -321,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>17 313 810 487 0 0 1440 878 </string>
+ <string>630 297 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -337,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>AtmosphereChannel.cpp</string>
+ <string>AtmosphereChannelProc.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -345,14 +347,16 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>AtmosphereChannel.cpp</string>
+ <string>AtmosphereChannelProc.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BC5CF5A2093F4C50058B257</string>
+ <string>8B7933C421F5356E006E9731</string>
<key>history</key>
<array>
- <string>8BC5CF292093F3420058B257</string>
+ <string>8BFBE952209D206700E1438C</string>
+ <string>8B904B70209D2FF5008CBAD8</string>
+ <string>8B904BB3209D3409008CBAD8</string>
</array>
</dict>
<key>SplitCount</key>
@@ -366,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 51}}</string>
<key>RubberWindowFrame</key>
- <string>17 313 810 487 0 0 1440 878 </string>
+ <string>630 297 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>390pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -391,7 +395,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 363}}</string>
+ <key>RubberWindowFrame</key>
+ <string>630 297 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -446,8 +452,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 297}}</string>
- <key>RubberWindowFrame</key>
- <string>17 313 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -475,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC5CECB2093E3520058B257</string>
+ <string>8B7933C521F5356E006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC5CECC2093E3520058B257</string>
+ <string>8B7933C621F5356E006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BC5CECD2093E3520058B257</string>
+ <string>8B7933C721F5356E006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -632,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>546567365.81376398</real>
+ <real>569718126.81761706</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -649,10 +653,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/AtmosphereChannel/AtmosphereChannel.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>17 313 810 487 0 0 1440 878 </string>
+ <string>630 297 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/AtmosphereChannel/source/AtmosphereChannelProc.cpp b/plugins/MacVST/AtmosphereChannel/source/AtmosphereChannelProc.cpp
index 97038e8..bbdf44c 100755
--- a/plugins/MacVST/AtmosphereChannel/source/AtmosphereChannelProc.cpp
+++ b/plugins/MacVST/AtmosphereChannel/source/AtmosphereChannelProc.cpp
@@ -13,7 +13,6 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
@@ -245,18 +244,14 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt
lastSampleAR = drySampleR;
//store the raw R input sample again for use next time
- //noise shaping to 32-bit floating point
- fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -266,12 +261,6 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -280,7 +269,6 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
@@ -512,18 +500,16 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs
lastSampleAR = drySampleR;
//store the raw R input sample again for use next time
- //noise shaping to 64-bit floating point
- fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -533,10 +519,4 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
} \ No newline at end of file
diff --git a/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.pbxuser
index 37c0976..ae8beb8 100755
--- a/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 546126715;
- PBXWorkspaceStateSaveDate = 546126715;
+ PBXPerProjectTemplateStateSaveDate = 569718158;
+ PBXWorkspaceStateSaveDate = 569718158;
};
perUserProjectItems = {
- 8BC5CC52208D3DCE0058B257 /* PBXTextBookmark */ = 8BC5CC52208D3DCE0058B257 /* PBXTextBookmark */;
+ 8B7933E421F53595006E9731 /* PBXTextBookmark */ = 8B7933E421F53595006E9731 /* PBXTextBookmark */;
8BC5CEBA208D734A0058B257 /* PBXTextBookmark */ = 8BC5CEBA208D734A0058B257 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -86,9 +86,9 @@
};
24D8286F09A914000093AEF8 /* AuraProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 6305}}";
- sepNavSelRange = "{18235, 0}";
- sepNavVisRange = "{17720, 259}";
+ sepNavIntBoundsRect = "{{0, 0}, {621, 5967}}";
+ sepNavSelRange = "{17733, 0}";
+ sepNavVisRange = "{17681, 52}";
sepNavWindowFrame = "{{7, 47}, {877, 831}}";
};
};
@@ -106,24 +106,24 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BC5CC52208D3DCE0058B257 /* PBXTextBookmark */ = {
+ 8B7933E421F53595006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* AuraProc.cpp */;
- name = "AuraProc.cpp: 446";
+ name = "AuraProc.cpp: 450";
rLen = 0;
- rLoc = 14170;
+ rLoc = 17733;
rType = 0;
- vrLen = 285;
- vrLoc = 17613;
+ vrLen = 52;
+ vrLoc = 17681;
};
8BC5CEBA208D734A0058B257 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* AuraProc.cpp */;
name = "AuraProc.cpp: 475";
rLen = 0;
- rLoc = 18235;
+ rLoc = 17733;
rType = 0;
- vrLen = 259;
+ vrLen = 13;
vrLoc = 17720;
};
8D01CCC60486CAD60068D4B7 /* Aura */ = {
diff --git a/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3
index bc4d2cf..7f62a6d 100755
--- a/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Aura/Aura.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BC5CEBA208D734A0058B257</string>
+ <string>8B7933E421F53595006E9731</string>
<key>history</key>
<array>
- <string>8BC5CC52208D3DCE0058B257</string>
+ <string>8BC5CEBA208D734A0058B257</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
<string>36 294 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>36 294 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -448,8 +450,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>36 294 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC5CC5D208D3E220058B257</string>
+ <string>8B7933E521F53595006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC5CC5E208D3E220058B257</string>
+ <string>8B7933E621F53595006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BC5CC5F208D3E220058B257</string>
+ <string>8B7933E721F53595006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>546141002.76876497</real>
+ <real>569718165.96792996</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,8 +651,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BC5CD63208D5C950058B257</string>
- <string>/Users/christopherjohnson/Desktop/Aura/Aura.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/Aura/Aura.xcodeproj</string>
</array>
<key>WindowString</key>
<string>36 294 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/Aura/source/Aura.cpp b/plugins/MacVST/Aura/source/Aura.cpp
index d011564..8663d3b 100755
--- a/plugins/MacVST/Aura/source/Aura.cpp
+++ b/plugins/MacVST/Aura/source/Aura.cpp
@@ -24,11 +24,8 @@ Aura::Aura(audioMasterCallback audioMaster) :
lastSampleR = 0.0;
previousVelocityR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Aura/source/Aura.h b/plugins/MacVST/Aura/source/Aura.h
index 557169d..22d4653 100755
--- a/plugins/MacVST/Aura/source/Aura.h
+++ b/plugins/MacVST/Aura/source/Aura.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
long double lastSampleL;
double previousVelocityL;
diff --git a/plugins/MacVST/Aura/source/AuraProc.cpp b/plugins/MacVST/Aura/source/AuraProc.cpp
index daf54d6..089a873 100755
--- a/plugins/MacVST/Aura/source/AuraProc.cpp
+++ b/plugins/MacVST/Aura/source/AuraProc.cpp
@@ -14,9 +14,6 @@ void Aura::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double correctionL;
double correctionR;
@@ -211,25 +208,14 @@ void Aura::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -248,9 +234,6 @@ void Aura::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double correctionL;
double correctionR;
@@ -445,25 +428,16 @@ void Aura::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.pbxuser
index cede59c..1b8551b 100755
--- a/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* Average */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 530376878;
- PBXWorkspaceStateSaveDate = 530376878;
+ PBXPerProjectTemplateStateSaveDate = 569718186;
+ PBXWorkspaceStateSaveDate = 569718186;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -82,9 +82,9 @@
};
24D8286F09A914000093AEF8 /* AverageProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 4719}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 4329}}";
sepNavSelRange = "{9111, 0}";
- sepNavVisRange = "{8668, 2468}";
+ sepNavVisRange = "{4985, 1917}";
sepNavWindowFrame = "{{460, 41}, {895, 831}}";
};
};
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* Average */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.perspectivev3
index 01ca524..53bb902 100755
--- a/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Average/Average.xcodeproj/christopherjohnson.perspectivev3
@@ -300,8 +300,9 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>10</integer>
- <integer>9</integer>
+ <integer>6</integer>
+ <integer>4</integer>
+ <integer>0</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
@@ -468,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BB863411F9CE8E100FC8156</string>
+ <string>8B79340521F535C0006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BB863421F9CE8E100FC8156</string>
+ <string>8B79340621F535C0006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BB863431F9CE8E100FC8156</string>
+ <string>8B79340721F535C0006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -625,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>530376929.99594998</real>
+ <real>569718208.35486102</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
diff --git a/plugins/MacVST/Average/Average.xcodeproj/project.pbxproj b/plugins/MacVST/Average/Average.xcodeproj/project.pbxproj
index a4f3ebf..b01e8d9 100755
--- a/plugins/MacVST/Average/Average.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/Average/Average.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* Average */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Average" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* Average */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/Average/source/Average.cpp b/plugins/MacVST/Average/source/Average.cpp
index 945c76c..2f39ca1 100755
--- a/plugins/MacVST/Average/source/Average.cpp
+++ b/plugins/MacVST/Average/source/Average.cpp
@@ -17,11 +17,8 @@ Average::Average(audioMasterCallback audioMaster) :
for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;}
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Average/source/Average.h b/plugins/MacVST/Average/source/Average.h
index 7e4b25e..9932e99 100755
--- a/plugins/MacVST/Average/source/Average.h
+++ b/plugins/MacVST/Average/source/Average.h
@@ -57,11 +57,8 @@ private:
double f[11];
double bR[11];
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Average/source/AverageProc.cpp b/plugins/MacVST/Average/source/AverageProc.cpp
index 2b1c355..17f4783 100755
--- a/plugins/MacVST/Average/source/AverageProc.cpp
+++ b/plugins/MacVST/Average/source/AverageProc.cpp
@@ -14,9 +14,6 @@ void Average::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double correctionSample;
double accumulatorSampleL;
@@ -154,25 +151,14 @@ void Average::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
//in the floating point system.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -189,12 +175,7 @@ void Average::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double* in1 = inputs[0];
double* in2 = inputs[1];
double* out1 = outputs[0];
- double* out2 = outputs[1];
-
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ double* out2 = outputs[1];
double correctionSample;
double accumulatorSampleL;
double accumulatorSampleR;
@@ -330,25 +311,16 @@ void Average::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//if it 'won't change anything' but our sample might be at a very different scaling
//in the floating point system.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser
index 7a8a384..71471a7 100755
--- a/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561849688;
- PBXWorkspaceStateSaveDate = 561849688;
+ PBXPerProjectTemplateStateSaveDate = 569718226;
+ PBXWorkspaceStateSaveDate = 569718226;
};
perUserProjectItems = {
- 8B15DC872178931A007AD769 /* PBXTextBookmark */ = 8B15DC872178931A007AD769 /* PBXTextBookmark */;
- 8B15DC8A2178931A007AD769 /* PBXTextBookmark */ = 8B15DC8A2178931A007AD769 /* PBXTextBookmark */;
+ 8B79342421F535E6006E9731 /* PBXTextBookmark */ = 8B79342421F535E6006E9731 /* PBXTextBookmark */;
8BC3BC31217D257A0043A8B7 /* PBXTextBookmark */ = 8BC3BC31217D257A0043A8B7 /* PBXTextBookmark */;
- 8BC3BC35217D257A0043A8B7 /* PBXTextBookmark */ = 8BC3BC35217D257A0043A8B7 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -80,7 +78,7 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}";
+ sepNavIntBoundsRect = "{{0, 0}, {838, 19864}}";
sepNavSelRange = "{10616, 0}";
sepNavVisRange = "{10459, 280}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
@@ -88,9 +86,9 @@
};
24D8286F09A914000093AEF8 /* BassKitProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {901, 6097}}";
+ sepNavIntBoundsRect = "{{0, 0}, {901, 5759}}";
sepNavSelRange = "{3023, 0}";
- sepNavVisRange = "{1492, 2701}";
+ sepNavVisRange = "{16984, 1948}";
sepNavWindowFrame = "{{41, 39}, {895, 831}}";
};
};
@@ -108,26 +106,16 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B15DC872178931A007AD769 /* PBXTextBookmark */ = {
+ 8B79342421F535E6006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
rLen = 0;
rLoc = 10616;
rType = 0;
- vrLen = 399;
+ vrLen = 280;
vrLoc = 10459;
};
- 8B15DC8A2178931A007AD769 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 24D8286F09A914000093AEF8 /* BassKitProc.cpp */;
- name = "BassKitProc.cpp: 259";
- rLen = 0;
- rLoc = 10702;
- rType = 0;
- vrLen = 1721;
- vrLoc = 9607;
- };
8BC3BC31217D257A0043A8B7 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
@@ -138,16 +126,6 @@
vrLen = 280;
vrLoc = 10459;
};
- 8BC3BC35217D257A0043A8B7 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 24D8286F09A914000093AEF8 /* BassKitProc.cpp */;
- name = "BassKitProc.cpp: 91";
- rLen = 0;
- rLoc = 3023;
- rType = 0;
- vrLen = 2701;
- vrLoc = 1492;
- };
8D01CCC60486CAD60068D4B7 /* BassKit */ = {
activeExec = 0;
};
diff --git a/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3
index f720cd0..4925ffa 100755
--- a/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/BassKit/BassKit.xcodeproj/christopherjohnson.perspectivev3
@@ -222,48 +222,7 @@
</dict>
</array>
<key>OpenEditors</key>
- <array>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B15DC882178931A007AD769</string>
- <key>PBXProjectModuleLabel</key>
- <string>BassKitProc.cpp</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B15DC892178931A007AD769</string>
- <key>PBXProjectModuleLabel</key>
- <string>BassKitProc.cpp</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>8BC3BC35217D257A0043A8B7</string>
- <key>history</key>
- <array>
- <string>8B15DC8A2178931A007AD769</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {895, 734}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>41 95 895 775 0 0 1440 878 </string>
- </dict>
- </dict>
- </array>
+ <array/>
<key>PerspectiveWidths</key>
<array>
<integer>810</integer>
@@ -392,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BC3BC31217D257A0043A8B7</string>
+ <string>8B79342421F535E6006E9731</string>
<key>history</key>
<array>
- <string>8B15DC872178931A007AD769</string>
+ <string>8BC3BC31217D257A0043A8B7</string>
</array>
</dict>
<key>SplitCount</key>
@@ -409,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 102}}</string>
<key>RubberWindowFrame</key>
<string>103 354 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>102pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>339pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -434,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 312}}</string>
<key>RubberWindowFrame</key>
<string>103 354 810 487 0 0 1440 878 </string>
</dict>
@@ -518,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC3BC32217D257A0043A8B7</string>
+ <string>8B79342521F535E6006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC3BC33217D257A0043A8B7</string>
+ <string>8B79342621F535E6006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BC3BC34217D257A0043A8B7</string>
+ <string>8B79342721F535E6006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -675,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561849722.95006502</real>
+ <real>569718246.60174298</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -693,7 +652,6 @@
<key>WindowOrderList</key>
<array>
<string>/Users/christopherjohnson/Desktop/MacVST/BassKit/BassKit.xcodeproj</string>
- <string>8B15DC882178931A007AD769</string>
</array>
<key>WindowString</key>
<string>103 354 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/BassKit/source/BassKitProc.cpp b/plugins/MacVST/BassKit/source/BassKitProc.cpp
index df3310e..9199c82 100755
--- a/plugins/MacVST/BassKit/source/BassKitProc.cpp
+++ b/plugins/MacVST/BassKit/source/BassKitProc.cpp
@@ -204,18 +204,14 @@ void BassKit::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -225,12 +221,6 @@ void BassKit::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -430,18 +420,16 @@ void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -451,10 +439,4 @@ void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser
index 04c5006..eadf6da 100755
--- a/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.pbxuser
@@ -51,8 +51,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553994307;
- PBXWorkspaceStateSaveDate = 553994307;
+ PBXPerProjectTemplateStateSaveDate = 569718310;
+ PBXWorkspaceStateSaveDate = 569718310;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -60,17 +60,17 @@
};
2407DEB6089929BA00EB68BF /* BitGlitter.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 2249}}";
- sepNavSelRange = "{842, 0}";
- sepNavVisRange = "{1388, 1919}";
- sepNavWindowFrame = "{{891, 27}, {895, 831}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 2158}}";
+ sepNavSelRange = "{533, 0}";
+ sepNavVisRange = "{0, 1600}";
+ sepNavWindowFrame = "{{333, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* BitGlitter.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 1118}}";
- sepNavSelRange = "{2943, 0}";
- sepNavVisRange = "{652, 2357}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 1157}}";
+ sepNavSelRange = "{2511, 0}";
+ sepNavVisRange = "{652, 2399}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
@@ -84,10 +84,10 @@
};
24D8286F09A914000093AEF8 /* BitGlitterProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 5200}}";
- sepNavSelRange = "{7162, 0}";
- sepNavVisRange = "{6302, 1605}";
- sepNavWindowFrame = "{{37, 33}, {895, 831}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 5902}}";
+ sepNavSelRange = "{13421, 0}";
+ sepNavVisRange = "{11871, 1722}";
+ sepNavWindowFrame = "{{169, 47}, {895, 831}}";
};
};
8B02375E1D42B1C400E1E8C8 /* Source Control */ = {
diff --git a/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3
index 9b744d3..b2c5d8c 100755
--- a/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/BitGlitter/BitGlitter.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -298,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>5</integer>
+ <integer>6</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -321,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>129 148 810 487 0 0 1440 878 </string>
+ <string>144 271 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -360,7 +362,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>129 148 810 487 0 0 1440 878 </string>
+ <string>144 271 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -384,6 +386,8 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>144 271 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -438,8 +442,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>129 148 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -467,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBD19152105484B0015A233</string>
+ <string>8B79347521F5371F006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBD19162105484B0015A233</string>
+ <string>8B79347621F5371F006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBD19172105484B0015A233</string>
+ <string>8B79347721F5371F006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -644,7 +646,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553998201.254879</real>
+ <real>569718559.741974</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -661,10 +663,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/BitGlitter/BitGlitter.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/BitGlitter/BitGlitter.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>129 148 810 487 0 0 1440 878 </string>
+ <string>144 271 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/BitGlitter/source/BitGlitter.cpp b/plugins/MacVST/BitGlitter/source/BitGlitter.cpp
index 7e9cfdb..a1e1a9b 100755
--- a/plugins/MacVST/BitGlitter/source/BitGlitter.cpp
+++ b/plugins/MacVST/BitGlitter/source/BitGlitter.cpp
@@ -17,6 +17,9 @@ BitGlitter::BitGlitter(audioMasterCallback audioMaster) :
C = 0.5;
D = 1.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+
ataLastSampleL = 0.0;
ataHalfwaySampleL = 0.0;
lastSampleL = 0.0;
diff --git a/plugins/MacVST/BitGlitter/source/BitGlitter.h b/plugins/MacVST/BitGlitter/source/BitGlitter.h
index d87e277..4f108cd 100755
--- a/plugins/MacVST/BitGlitter/source/BitGlitter.h
+++ b/plugins/MacVST/BitGlitter/source/BitGlitter.h
@@ -55,6 +55,9 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
+ long double fpNShapeL;
+ long double fpNShapeR;
+
double ataLastSampleL;
double ataHalfwaySampleL;
double ataDrySampleL;
diff --git a/plugins/MacVST/BitGlitter/source/BitGlitterProc.cpp b/plugins/MacVST/BitGlitter/source/BitGlitterProc.cpp
index 321d0b6..ff2968c 100755
--- a/plugins/MacVST/BitGlitter/source/BitGlitterProc.cpp
+++ b/plugins/MacVST/BitGlitter/source/BitGlitterProc.cpp
@@ -202,6 +202,14 @@ void BitGlitter::processReplacing(float **inputs, float **outputs, VstInt32 samp
outputSampleL = (drySampleL * (1.0-wet)) + (outputSampleL * wet);
outputSampleR = (drySampleR * (1.0-wet)) + (outputSampleR * wet);
}
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)outputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ outputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)outputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ outputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
@@ -408,6 +416,17 @@ void BitGlitter::processDoubleReplacing(double **inputs, double **outputs, VstIn
outputSampleR = (drySampleR * (1.0-wet)) + (outputSampleR * wet);
}
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)outputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ outputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)outputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ outputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
+
*out1 = outputSampleL;
*out2 = outputSampleR;
diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser
index 073b4c5..5810e3f 100644..100755
--- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser
@@ -10,7 +10,7 @@
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
- 199,
+ 389,
20,
48,
43,
@@ -49,13 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528459201;
- PBXWorkspaceStateSaveDate = 528459201;
+ PBXPerProjectTemplateStateSaveDate = 569802073;
+ PBXWorkspaceStateSaveDate = 569802073;
};
perUserProjectItems = {
- 8B9D692D1F7EDCD2007AB60F /* PBXTextBookmark */ = 8B9D692D1F7EDCD2007AB60F /* PBXTextBookmark */;
- 8B9D77B71F7FA5E4007AB60F /* PBXTextBookmark */ = 8B9D77B71F7FA5E4007AB60F /* PBXTextBookmark */;
- 8BD42AEE1DE22B3A00869065 /* PBXTextBookmark */ = 8BD42AEE1DE22B3A00869065 /* PBXTextBookmark */;
+ 8BEF858D21F67E1D00FEF113 /* PBXTextBookmark */ = 8BEF858D21F67E1D00FEF113 /* PBXTextBookmark */;
+ 8BEF858E21F67E1D00FEF113 /* PBXTextBookmark */ = 8BEF858E21F67E1D00FEF113 /* PBXTextBookmark */;
+ 8BEF858F21F67E1D00FEF113 /* PBXTextBookmark */ = 8BEF858F21F67E1D00FEF113 /* PBXTextBookmark */;
+ 8BEF859021F67E1D00FEF113 /* PBXTextBookmark */ = 8BEF859021F67E1D00FEF113 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -63,9 +64,9 @@
};
2407DEB6089929BA00EB68BF /* BitShiftGain.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {754, 1482}}";
- sepNavSelRange = "{1650, 0}";
- sepNavVisRange = "{1613, 753}";
+ sepNavIntBoundsRect = "{{0, 0}, {754, 1534}}";
+ sepNavSelRange = "{3361, 19}";
+ sepNavVisRange = "{2730, 1669}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
@@ -79,17 +80,17 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {859, 20033}}";
+ sepNavIntBoundsRect = "{{0, 0}, {859, 20046}}";
sepNavSelRange = "{10616, 0}";
- sepNavVisRange = "{10195, 852}";
+ sepNavVisRange = "{10195, 759}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
24D8286F09A914000093AEF8 /* BitShiftGainProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1638}}";
- sepNavSelRange = "{1754, 0}";
- sepNavVisRange = "{395, 1500}";
+ sepNavIntBoundsRect = "{{0, 0}, {712, 1586}}";
+ sepNavSelRange = "{476, 8}";
+ sepNavVisRange = "{1474, 1209}";
sepNavWindowFrame = "{{476, 47}, {895, 831}}";
};
};
@@ -107,35 +108,45 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D692D1F7EDCD2007AB60F /* PBXTextBookmark */ = {
+ 8BEF858D21F67E1D00FEF113 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
rLen = 0;
rLoc = 10616;
rType = 0;
- vrLen = 852;
+ vrLen = 759;
vrLoc = 10195;
};
- 8B9D77B71F7FA5E4007AB60F /* PBXTextBookmark */ = {
+ 8BEF858E21F67E1D00FEF113 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
- name = "audioeffectx.cpp: 307";
- rLen = 0;
- rLoc = 10616;
+ fRef = 2407DEB6089929BA00EB68BF /* BitShiftGain.cpp */;
+ name = "BitShiftGain.cpp: 90";
+ rLen = 19;
+ rLoc = 3361;
rType = 0;
- vrLen = 849;
- vrLoc = 10195;
+ vrLen = 1669;
+ vrLoc = 2730;
};
- 8BD42AEE1DE22B3A00869065 /* PBXTextBookmark */ = {
+ 8BEF858F21F67E1D00FEF113 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 2407DEB6089929BA00EB68BF /* BitShiftGain.cpp */;
- name = "BitShiftGain.cpp: 37";
+ fRef = 24D8286F09A914000093AEF8 /* BitShiftGainProc.cpp */;
+ name = "BitShiftGainProc.cpp: 56";
rLen = 0;
- rLoc = 1650;
+ rLoc = 1754;
+ rType = 0;
+ vrLen = 1226;
+ vrLoc = 1820;
+ };
+ 8BEF859021F67E1D00FEF113 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* BitShiftGainProc.cpp */;
+ name = "BitShiftGainProc.cpp: 17";
+ rLen = 8;
+ rLoc = 476;
rType = 0;
- vrLen = 753;
- vrLoc = 1613;
+ vrLen = 1209;
+ vrLoc = 1474;
};
8D01CCC60486CAD60068D4B7 /* BitShiftGain */ = {
activeExec = 0;
diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3
index 1b7af95..b5d4e93 100644..100755
--- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -306,7 +304,7 @@
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {185, 716}}</string>
+ <string>{{0, 0}, {185, 711}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -316,14 +314,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {202, 734}}</string>
+ <string>{{0, 0}, {202, 729}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>MainColumn</string>
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>434 99 645 775 0 0 1440 878 </string>
+ <string>493 108 835 770 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -334,12 +332,14 @@
<key>Dock</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>audioeffectx.cpp</string>
+ <string>BitShiftGainProc.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -347,15 +347,16 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>audioeffectx.cpp</string>
+ <string>BitShiftGainProc.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D77B71F7FA5E4007AB60F</string>
+ <string>8BEF859021F67E1D00FEF113</string>
<key>history</key>
<array>
- <string>8BD42AEE1DE22B3A00869065</string>
- <string>8B9D692D1F7EDCD2007AB60F</string>
+ <string>8BEF858D21F67E1D00FEF113</string>
+ <string>8BEF858E21F67E1D00FEF113</string>
+ <string>8BEF858F21F67E1D00FEF113</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {438, 312}}</string>
+ <string>{{0, 0}, {628, 592}}</string>
<key>RubberWindowFrame</key>
- <string>434 99 645 775 0 0 1440 878 </string>
+ <string>493 108 835 770 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>312pt</string>
+ <string>592pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>417pt</string>
+ <string>132pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +395,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {438, 390}}</string>
+ <string>{{10, 27}, {628, 105}}</string>
<key>RubberWindowFrame</key>
- <string>434 99 645 775 0 0 1440 878 </string>
+ <string>493 108 835 770 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -459,7 +460,7 @@
</dict>
</array>
<key>Proportion</key>
- <string>438pt</string>
+ <string>628pt</string>
</dict>
</array>
<key>Name</key>
@@ -478,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D77B81F7FA5E4007AB60F</string>
+ <string>8BEF859121F67E1D00FEF113</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D77B91F7FA5E4007AB60F</string>
+ <string>8BEF859221F67E1D00FEF113</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D77BA1F7FA5E4007AB60F</string>
+ <string>8BEF859321F67E1D00FEF113</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528459236.94347501</real>
+ <real>569802269.42069495</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +653,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D77BB1F7FA5E4007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/BitShiftGain/BitShiftGain.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>434 99 645 775 0 0 1440 878 </string>
+ <string>493 108 835 770 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index a80c038..a80c038 100644..100755
--- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
index 5c38f94..5c38f94 100644..100755
--- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
index 314de0f..314de0f 100644..100755
--- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.mode1v3
index c572326..c572326 100644..100755
--- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.mode1v3
+++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.mode1v3
diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.pbxuser
index df94780..df94780 100644..100755
--- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.pbxuser
+++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.pbxuser
diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
index 8ee693f..8ee693f 100644..100755
--- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
+++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
index 5bccbcb..5bccbcb 100644..100755
--- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
index a7bdd62..a7bdd62 100644..100755
--- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
index 0df2de4..0df2de4 100644..100755
--- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
+++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
diff --git a/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.pbxuser
index 110bab7..70f9ad3 100755
--- a/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528459162;
- PBXWorkspaceStateSaveDate = 528459162;
+ PBXPerProjectTemplateStateSaveDate = 569718265;
+ PBXWorkspaceStateSaveDate = 569718265;
};
perUserProjectItems = {
+ 8B79344521F53610006E9731 /* PBXTextBookmark */ = 8B79344521F53610006E9731 /* PBXTextBookmark */;
8B9D778D1F7FA5B8007AB60F /* PBXTextBookmark */ = 8B9D778D1F7FA5B8007AB60F /* PBXTextBookmark */;
- 8BCA84A31EC2586000521D27 /* PBXTextBookmark */ = 8BCA84A31EC2586000521D27 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -78,7 +78,7 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {747, 19877}}";
+ sepNavIntBoundsRect = "{{0, 0}, {747, 19864}}";
sepNavSelRange = "{10616, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
@@ -86,9 +86,9 @@
};
24D8286F09A914000093AEF8 /* BiteProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 3783}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 3458}}";
sepNavSelRange = "{4277, 0}";
- sepNavVisRange = "{0, 0}";
+ sepNavVisRange = "{0, 1351}";
sepNavWindowFrame = "{{205, 46}, {895, 831}}";
};
};
@@ -106,7 +106,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D778D1F7FA5B8007AB60F /* PBXTextBookmark */ = {
+ 8B79344521F53610006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
@@ -116,7 +116,7 @@
vrLen = 0;
vrLoc = 0;
};
- 8BCA84A31EC2586000521D27 /* PBXTextBookmark */ = {
+ 8B9D778D1F7FA5B8007AB60F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
diff --git a/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3
index 991888c..58ed0f1 100755
--- a/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Bite/Bite.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D778D1F7FA5B8007AB60F</string>
+ <string>8B79344521F53610006E9731</string>
<key>history</key>
<array>
- <string>8BCA84A31EC2586000521D27</string>
+ <string>8B9D778D1F7FA5B8007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D778E1F7FA5B8007AB60F</string>
+ <string>8B79344621F53610006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D778F1F7FA5B8007AB60F</string>
+ <string>8B79344721F53610006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D77901F7FA5B8007AB60F</string>
+ <string>8B79344821F53610006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528459192.24507099</real>
+ <real>569718288.19823003</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D77911F7FA5B8007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Bite/Bite.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Bite/source/Bite.cpp b/plugins/MacVST/Bite/source/Bite.cpp
index b563f54..c9d0fcb 100755
--- a/plugins/MacVST/Bite/source/Bite.cpp
+++ b/plugins/MacVST/Bite/source/Bite.cpp
@@ -34,11 +34,8 @@ Bite::Bite(audioMasterCallback audioMaster) :
sampleHR = 0.0;
sampleIR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Bite/source/Bite.h b/plugins/MacVST/Bite/source/Bite.h
index d6f9e44..288ac7f 100755
--- a/plugins/MacVST/Bite/source/Bite.h
+++ b/plugins/MacVST/Bite/source/Bite.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double sampleAL;
double sampleBL;
diff --git a/plugins/MacVST/Bite/source/BiteProc.cpp b/plugins/MacVST/Bite/source/BiteProc.cpp
index 690a998..64e0ac4 100755
--- a/plugins/MacVST/Bite/source/BiteProc.cpp
+++ b/plugins/MacVST/Bite/source/BiteProc.cpp
@@ -17,9 +17,6 @@ void Bite::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
double overallscale = 1.3;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double gain = ((A*2.0)-1.0)*overallscale;
double outputgain = B;
@@ -119,25 +116,14 @@ void Bite::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
inputSampleR *= outputgain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -159,9 +145,6 @@ void Bite::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
double overallscale = 1.3;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double gain = ((A*2.0)-1.0)*overallscale;
double outputgain = B;
@@ -261,25 +244,16 @@ void Bite::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
inputSampleR *= outputgain;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser
index 874e77e..56965b2 100755
--- a/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553995952;
- PBXWorkspaceStateSaveDate = 553995952;
+ PBXPerProjectTemplateStateSaveDate = 569718632;
+ PBXWorkspaceStateSaveDate = 569718632;
};
perUserProjectItems = {
- 8BBD1972210550260015A233 /* PBXTextBookmark */ = 8BBD1972210550260015A233 /* PBXTextBookmark */;
+ 8B7934BC21F53792006E9731 /* PBXTextBookmark */ = 8B7934BC21F53792006E9731 /* PBXTextBookmark */;
8BBD1973210550260015A233 /* PBXTextBookmark */ = 8BBD1973210550260015A233 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -62,9 +62,9 @@
};
2407DEB6089929BA00EB68BF /* BussColors4.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {747, 2613}}";
+ sepNavIntBoundsRect = "{{0, 0}, {747, 2392}}";
sepNavSelRange = "{6740, 15}";
- sepNavVisRange = "{44, 192}";
+ sepNavVisRange = "{44, 191}";
sepNavWindowFrame = "{{545, 42}, {895, 831}}";
};
};
@@ -86,10 +86,10 @@
};
24D8286F09A914000093AEF8 /* BussColors4Proc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 22958}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 21840}}";
sepNavSelRange = "{2156, 16}";
- sepNavVisRange = "{2297, 2204}";
- sepNavWindowFrame = "{{529, 47}, {895, 831}}";
+ sepNavVisRange = "{114530, 2497}";
+ sepNavWindowFrame = "{{399, 47}, {895, 831}}";
};
};
8B02375E1D42B1C400E1E8C8 /* Source Control */ = {
@@ -106,14 +106,14 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BBD1972210550260015A233 /* PBXTextBookmark */ = {
+ 8B7934BC21F53792006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* BussColors4.cpp */;
name = "BussColors4.cpp: 167";
rLen = 15;
rLoc = 6740;
rType = 0;
- vrLen = 328;
+ vrLen = 191;
vrLoc = 44;
};
8BBD1973210550260015A233 /* PBXTextBookmark */ = {
diff --git a/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3
index dff2c57..38ff207 100755
--- a/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/BussColors4/BussColors4.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>567 362 810 487 0 0 1440 878 </string>
+ <string>567 361 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBD1973210550260015A233</string>
+ <string>8B7934BC21F53792006E9731</string>
<key>history</key>
<array>
- <string>8BBD1972210550260015A233</string>
+ <string>8BBD1973210550260015A233</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>567 362 810 487 0 0 1440 878 </string>
+ <string>567 361 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,9 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
<key>RubberWindowFrame</key>
- <string>567 362 810 487 0 0 1440 878 </string>
+ <string>567 361 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBD1974210550260015A233</string>
+ <string>8B7934AA21F5376C006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBD1975210550260015A233</string>
+ <string>8B7934AB21F5376C006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBD1976210550260015A233</string>
+ <string>8B7934AC21F5376C006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553996326.29762602</real>
+ <real>569718674.56684196</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,11 +651,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBD1977210550260015A233</string>
+ <string>8B7934BD21F53792006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacVST/BussColors4/BussColors4.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>567 362 810 487 0 0 1440 878 </string>
+ <string>567 361 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/BussColors4/source/BussColors4.cpp b/plugins/MacVST/BussColors4/source/BussColors4.cpp
index 720dbf9..c7de380 100755
--- a/plugins/MacVST/BussColors4/source/BussColors4.cpp
+++ b/plugins/MacVST/BussColors4/source/BussColors4.cpp
@@ -44,11 +44,8 @@ BussColors4::BussColors4(audioMasterCallback audioMaster) :
slowdynR = 0;
gcount = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
@@ -114,21 +111,6 @@ void BussColors4::setParameter(VstInt32 index, float value) {
case kParamD: D = value; break; //this is the popup, stored as a float
default: throw; // unknown parameter, shouldn't happen!
}
- //we can also set other defaults here, and do calculations that only have to happen
- //once when parameters actually change. Here is the 'popup' setting its (global) values.
- //variables can also be set in the processreplacing loop, and there they'll be set every buffersize
- //here they're set when a parameter's actually changed, which should be less frequent, but
- //you must use global variables in the BussColors4.h file to do it.
- switch((VstInt32)( D * 3.999 ))
- {
- case 0: fpFlip = true; break; //choice A
- case 1: fpFlip = false; break; //choice B
- case 2: break; //choice C
- case 3: break; //choice D
- default: break; //should not happen
- }
- //this relates to using D as a 'popup' and changing things based on that switch.
- //we are using fpFlip just because it's already there globally, as an example.
}
float BussColors4::getParameter(VstInt32 index) {
diff --git a/plugins/MacVST/BussColors4/source/BussColors4.h b/plugins/MacVST/BussColors4/source/BussColors4.h
index d07460e..6452555 100755
--- a/plugins/MacVST/BussColors4/source/BussColors4.h
+++ b/plugins/MacVST/BussColors4/source/BussColors4.h
@@ -68,11 +68,8 @@ private:
double slowdynR;
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/BussColors4/source/BussColors4Proc.cpp b/plugins/MacVST/BussColors4/source/BussColors4Proc.cpp
index 2629ee8..b1b9451 100755
--- a/plugins/MacVST/BussColors4/source/BussColors4Proc.cpp
+++ b/plugins/MacVST/BussColors4/source/BussColors4Proc.cpp
@@ -31,9 +31,6 @@ void BussColors4::processReplacing(float **inputs, float **outputs, VstInt32 sam
double gain = 0.436;
double outgain = 1.0;
double bridgerectifier;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -795,25 +792,14 @@ void BussColors4::processReplacing(float **inputs, float **outputs, VstInt32 sam
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -849,9 +835,6 @@ void BussColors4::processDoubleReplacing(double **inputs, double **outputs, VstI
double gain = 0.436;
double outgain = 1.0;
double bridgerectifier;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -1613,25 +1596,16 @@ void BussColors4::processDoubleReplacing(double **inputs, double **outputs, VstI
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser
index 00c7e3d..4e51591 100755
--- a/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 559962503;
- PBXWorkspaceStateSaveDate = 559962503;
+ PBXPerProjectTemplateStateSaveDate = 569718696;
+ PBXWorkspaceStateSaveDate = 569718696;
};
perUserProjectItems = {
8B42FD78216053420092969A /* PBXTextBookmark */ = 8B42FD78216053420092969A /* PBXTextBookmark */;
8B42FDE121605A6A0092969A /* PBXTextBookmark */ = 8B42FDE121605A6A0092969A /* PBXTextBookmark */;
- 8B42FDE221605A6A0092969A /* PBXBookmark */ = 8B42FDE221605A6A0092969A /* PBXBookmark */;
8B42FDE321605A6A0092969A /* PBXTextBookmark */ = 8B42FDE321605A6A0092969A /* PBXTextBookmark */;
+ 8B7934D121F537BA006E9731 /* PBXTextBookmark */ = 8B7934D121F537BA006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -72,9 +72,9 @@
};
245463B80991757100464AD3 /* ButterComp.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 910}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 1079}}";
sepNavSelRange = "{2665, 0}";
- sepNavVisRange = "{2626, 65}";
+ sepNavVisRange = "{2626, 64}";
sepNavWindowFrame = "{{545, 47}, {895, 831}}";
};
};
@@ -88,9 +88,9 @@
};
24D8286F09A914000093AEF8 /* ButterCompProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 5499}}";
- sepNavSelRange = "{11857, 0}";
- sepNavVisRange = "{11491, 1545}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 5070}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRange = "{10841, 1686}";
sepNavWindowFrame = "{{545, 47}, {895, 831}}";
};
};
@@ -125,12 +125,8 @@
rLen = 0;
rLoc = 12160;
rType = 0;
- vrLen = 83;
- vrLoc = 13577;
- };
- 8B42FDE221605A6A0092969A /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 245463B80991757100464AD3 /* ButterComp.h */;
+ vrLen = 0;
+ vrLoc = 12527;
};
8B42FDE321605A6A0092969A /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
@@ -142,6 +138,16 @@
vrLen = 65;
vrLoc = 2626;
};
+ 8B7934D121F537BA006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 245463B80991757100464AD3 /* ButterComp.h */;
+ name = "ButterComp.h: 67";
+ rLen = 0;
+ rLoc = 2665;
+ rType = 0;
+ vrLen = 64;
+ vrLoc = 2626;
+ };
8D01CCC60486CAD60068D4B7 /* ButterComp */ = {
activeExec = 0;
};
diff --git a/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3
index 240ab99..5148f75 100755
--- a/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/ButterComp/ButterComp.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 353 810 487 0 0 1440 878 </string>
+ <string>544 355 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,12 +351,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B42FDE321605A6A0092969A</string>
+ <string>8B7934D121F537BA006E9731</string>
<key>history</key>
<array>
<string>8B42FD78216053420092969A</string>
<string>8B42FDE121605A6A0092969A</string>
- <string>8B42FDE221605A6A0092969A</string>
+ <string>8B42FDE321605A6A0092969A</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {603, 51}}</string>
<key>RubberWindowFrame</key>
- <string>630 353 810 487 0 0 1440 878 </string>
+ <string>544 355 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>390pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 363}}</string>
<key>RubberWindowFrame</key>
- <string>630 353 810 487 0 0 1440 878 </string>
+ <string>544 355 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B42FDE421605A6A0092969A</string>
+ <string>8B7934D221F537BA006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B42FDE521605A6A0092969A</string>
+ <string>8B7934D321F537BA006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B42FDE621605A6A0092969A</string>
+ <string>8B7934D421F537BA006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>559962730.75885105</real>
+ <real>569718714.80265605</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +653,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B42FDE721605A6A0092969A</string>
+ <string>8B7934D521F537BA006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacVST/ButterComp/ButterComp.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 353 810 487 0 0 1440 878 </string>
+ <string>544 355 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/ButterComp/source/ButterComp.cpp b/plugins/MacVST/ButterComp/source/ButterComp.cpp
index e6a33f7..b3123e2 100755
--- a/plugins/MacVST/ButterComp/source/ButterComp.cpp
+++ b/plugins/MacVST/ButterComp/source/ButterComp.cpp
@@ -26,11 +26,8 @@ ButterComp::ButterComp(audioMasterCallback audioMaster) :
controlBnegR = 1.0;
targetposR = 1.0;
targetnegR = 1.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/ButterComp/source/ButterComp.h b/plugins/MacVST/ButterComp/source/ButterComp.h
index af6df66..5c9862b 100755
--- a/plugins/MacVST/ButterComp/source/ButterComp.h
+++ b/plugins/MacVST/ButterComp/source/ButterComp.h
@@ -65,11 +65,8 @@ private:
double controlBnegR;
double targetposR;
double targetnegR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/ButterComp/source/ButterCompProc.cpp b/plugins/MacVST/ButterComp/source/ButterCompProc.cpp
index ea52946..d87030c 100755
--- a/plugins/MacVST/ButterComp/source/ButterCompProc.cpp
+++ b/plugins/MacVST/ButterComp/source/ButterCompProc.cpp
@@ -17,9 +17,6 @@ void ButterComp::processReplacing(float **inputs, float **outputs, VstInt32 samp
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputposL;
double inputnegL;
@@ -181,25 +178,14 @@ void ButterComp::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -221,9 +207,6 @@ void ButterComp::processDoubleReplacing(double **inputs, double **outputs, VstIn
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputposL;
double inputnegL;
@@ -385,25 +368,16 @@ void ButterComp::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser
index e8a1ebf..26154bb 100755
--- a/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 559961907;
- PBXWorkspaceStateSaveDate = 559961907;
+ PBXPerProjectTemplateStateSaveDate = 569718749;
+ PBXWorkspaceStateSaveDate = 569718749;
};
perUserProjectItems = {
- 8B42FDBF216057860092969A /* PBXTextBookmark */ = 8B42FDBF216057860092969A /* PBXTextBookmark */;
8B42FDC0216057860092969A /* PBXTextBookmark */ = 8B42FDC0216057860092969A /* PBXTextBookmark */;
- 8B42FDC4216057860092969A /* PBXTextBookmark */ = 8B42FDC4216057860092969A /* PBXTextBookmark */;
8B42FDC5216057860092969A /* PBXTextBookmark */ = 8B42FDC5216057860092969A /* PBXTextBookmark */;
+ 8B7934F221F537F3006E9731 /* PBXTextBookmark */ = 8B7934F221F537F3006E9731 /* PBXTextBookmark */;
+ 8B7934F621F537F3006E9731 /* PBXTextBookmark */ = 8B7934F621F537F3006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -88,9 +88,9 @@
};
24D8286F09A914000093AEF8 /* ButterComp2Proc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 6643}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 6292}}";
sepNavSelRange = "{7880, 0}";
- sepNavVisRange = "{7074, 1753}";
+ sepNavVisRange = "{7052, 1652}";
sepNavWindowFrame = "{{394, 47}, {895, 831}}";
};
};
@@ -108,7 +108,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B42FDBF216057860092969A /* PBXTextBookmark */ = {
+ 8B42FDC0216057860092969A /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ButterComp2Proc.cpp */;
name = "ButterComp2Proc.cpp: 382";
@@ -116,37 +116,37 @@
rLoc = 11279;
rType = 0;
vrLen = 322;
- vrLoc = 11165;
+ vrLoc = 11177;
};
- 8B42FDC0216057860092969A /* PBXTextBookmark */ = {
+ 8B42FDC5216057860092969A /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ButterComp2Proc.cpp */;
- name = "ButterComp2Proc.cpp: 382";
+ name = "ButterComp2Proc.cpp: 268";
rLen = 0;
- rLoc = 11279;
+ rLoc = 7880;
rType = 0;
- vrLen = 322;
- vrLoc = 11177;
+ vrLen = 1753;
+ vrLoc = 7074;
};
- 8B42FDC4216057860092969A /* PBXTextBookmark */ = {
+ 8B7934F221F537F3006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ButterComp2Proc.cpp */;
- name = "ButterComp2Proc.cpp: 382";
+ name = "ButterComp2Proc.cpp: 387";
rLen = 0;
rLoc = 11279;
rType = 0;
- vrLen = 1480;
- vrLoc = 10666;
+ vrLen = 365;
+ vrLoc = 6402;
};
- 8B42FDC5216057860092969A /* PBXTextBookmark */ = {
+ 8B7934F621F537F3006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ButterComp2Proc.cpp */;
- name = "ButterComp2Proc.cpp: 268";
+ name = "ButterComp2Proc.cpp: 278";
rLen = 0;
rLoc = 7880;
rType = 0;
- vrLen = 1753;
- vrLoc = 7074;
+ vrLen = 1652;
+ vrLoc = 7052;
};
8D01CCC60486CAD60068D4B7 /* ButterComp2 */ = {
activeExec = 0;
diff --git a/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3
index 67bfac5..4fb4fe4 100755
--- a/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/ButterComp2/ButterComp2.xcodeproj/christopherjohnson.perspectivev3
@@ -241,10 +241,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B42FDC5216057860092969A</string>
+ <string>8B7934F621F537F3006E9731</string>
<key>history</key>
<array>
- <string>8B42FDC4216057860092969A</string>
+ <string>8B42FDC5216057860092969A</string>
</array>
</dict>
<key>SplitCount</key>
@@ -392,10 +392,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B42FDC0216057860092969A</string>
+ <string>8B7934F221F537F3006E9731</string>
<key>history</key>
<array>
- <string>8B42FDBF216057860092969A</string>
+ <string>8B42FDC0216057860092969A</string>
</array>
</dict>
<key>SplitCount</key>
@@ -409,18 +409,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
<string>138 241 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -434,7 +434,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
<key>RubberWindowFrame</key>
<string>138 241 810 487 0 0 1440 878 </string>
</dict>
@@ -518,11 +518,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B42FDC1216057860092969A</string>
+ <string>8B7934F321F537F3006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B42FDC2216057860092969A</string>
+ <string>8B7934F421F537F3006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B42FDC3216057860092969A</string>
+ <string>8B7934F521F537F3006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -675,7 +675,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>559961990.80278695</real>
+ <real>569718771.40327895</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -693,7 +693,7 @@
<key>WindowOrderList</key>
<array>
<string>8B42FD99216056C30092969A</string>
- <string>/Users/christopherjohnson/Desktop/ButterComp2/ButterComp2.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/ButterComp2/ButterComp2.xcodeproj</string>
</array>
<key>WindowString</key>
<string>138 241 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/ButterComp2/source/ButterComp2Proc.cpp b/plugins/MacVST/ButterComp2/source/ButterComp2Proc.cpp
index 55ce488..67a6367 100755
--- a/plugins/MacVST/ButterComp2/source/ButterComp2Proc.cpp
+++ b/plugins/MacVST/ButterComp2/source/ButterComp2Proc.cpp
@@ -223,18 +223,14 @@ void ButterComp2::processReplacing(float **inputs, float **outputs, VstInt32 sam
flip = !flip;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -244,12 +240,6 @@ void ButterComp2::processReplacing(float **inputs, float **outputs, VstInt32 sam
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -468,18 +458,16 @@ void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstI
flip = !flip;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -489,10 +477,4 @@ void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstI
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser
index c0464d7..32a7430 100755
--- a/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538698967;
- PBXWorkspaceStateSaveDate = 538698967;
+ PBXPerProjectTemplateStateSaveDate = 569733207;
+ PBXWorkspaceStateSaveDate = 569733207;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -82,9 +82,9 @@
};
24D8286F09A914000093AEF8 /* C5RawBussProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3744}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 3250}}";
sepNavSelRange = "{9641, 0}";
- sepNavVisRange = "{4872, 1806}";
+ sepNavVisRange = "{3352, 1921}";
sepNavWindowFrame = "{{9, 47}, {895, 831}}";
};
};
diff --git a/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3
index 672431d..05bb702 100755
--- a/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/C5RawBuss/C5RawBuss.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -321,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>21 469 688 404 0 0 1440 878 </string>
+ <string>488 410 688 404 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -360,7 +362,7 @@
<key>Frame</key>
<string>{{0, 0}, {481, 0}}</string>
<key>RubberWindowFrame</key>
- <string>21 469 688 404 0 0 1440 878 </string>
+ <string>488 410 688 404 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -384,6 +386,8 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {481, 331}}</string>
+ <key>RubberWindowFrame</key>
+ <string>488 410 688 404 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -438,8 +442,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {481, 331}}</string>
- <key>RubberWindowFrame</key>
- <string>21 469 688 404 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -467,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E5763201BE4DB00B5DC2A</string>
+ <string>8B79351E21F57085006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E5764201BE4DB00B5DC2A</string>
+ <string>8B79351F21F57085006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B4E5765201BE4DB00B5DC2A</string>
+ <string>8B79352021F57085006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -624,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538701942.76463199</real>
+ <real>569733253.24398398</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -641,11 +643,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B4E57C7201BF07600B5DC2A</string>
- <string>/Users/christopherjohnson/Desktop/C5RawBuss/C5RawBuss.xcodeproj</string>
+ <string>8B79352121F57085006E9731</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/C5RawBuss/C5RawBuss.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>21 469 688 404 0 0 1440 878 </string>
+ <string>488 410 688 404 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/C5RawBuss/source/C5RawBuss.cpp b/plugins/MacVST/C5RawBuss/source/C5RawBuss.cpp
index 14b4dc5..8fba0ef 100755
--- a/plugins/MacVST/C5RawBuss/source/C5RawBuss.cpp
+++ b/plugins/MacVST/C5RawBuss/source/C5RawBuss.cpp
@@ -17,11 +17,8 @@ C5RawBuss::C5RawBuss(audioMasterCallback audioMaster) :
lastSampleBussL = 0.0;
lastFXBussR = 0.0;
lastSampleBussR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/C5RawBuss/source/C5RawBuss.h b/plugins/MacVST/C5RawBuss/source/C5RawBuss.h
index 5a409bc..f4d01fe 100755
--- a/plugins/MacVST/C5RawBuss/source/C5RawBuss.h
+++ b/plugins/MacVST/C5RawBuss/source/C5RawBuss.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastFXBussL;
double lastSampleBussL;
diff --git a/plugins/MacVST/C5RawBuss/source/C5RawBussProc.cpp b/plugins/MacVST/C5RawBuss/source/C5RawBussProc.cpp
index 1bf5eec..fab4612 100755
--- a/plugins/MacVST/C5RawBuss/source/C5RawBussProc.cpp
+++ b/plugins/MacVST/C5RawBuss/source/C5RawBussProc.cpp
@@ -14,9 +14,6 @@ void C5RawBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = A * 0.5;
centering = 1.0 - pow(centering,5);
@@ -111,25 +108,14 @@ void C5RawBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampl
//build new signal off what was present in output last time
//slew aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -148,9 +134,6 @@ void C5RawBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = A * 0.5;
centering = 1.0 - pow(centering,5);
@@ -245,25 +228,16 @@ void C5RawBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt
//build new signal off what was present in output last time
//slew aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser
index 2c29100..6a38937 100755
--- a/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* C5RawChannel */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538698973;
- PBXWorkspaceStateSaveDate = 538698973;
+ PBXPerProjectTemplateStateSaveDate = 569733279;
+ PBXWorkspaceStateSaveDate = 569733279;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* C5RawChannel */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3
index b091f94..cd0fdba 100755
--- a/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/christopherjohnson.perspectivev3
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E577C201BE4F400B5DC2A</string>
+ <string>8B79353421F570A9006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E577D201BE4F400B5DC2A</string>
+ <string>8B79353521F570A9006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B4E577E201BE4F400B5DC2A</string>
+ <string>8B79353621F570A9006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538705094.40063703</real>
+ <real>569733289.17203903</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/C5RawChannel/C5RawChannel.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/C5RawChannel/C5RawChannel.xcodeproj</string>
</array>
<key>WindowString</key>
<string>24 126 701 419 0 0 1440 878 </string>
diff --git a/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/project.pbxproj b/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/project.pbxproj
index e73c1b3..5287fa9 100755
--- a/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/C5RawChannel/C5RawChannel.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* C5RawChannel */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "C5RawChannel" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* C5RawChannel */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/C5RawChannel/source/C5RawChannel.cpp b/plugins/MacVST/C5RawChannel/source/C5RawChannel.cpp
index b02a07d..ffc2ecf 100755
--- a/plugins/MacVST/C5RawChannel/source/C5RawChannel.cpp
+++ b/plugins/MacVST/C5RawChannel/source/C5RawChannel.cpp
@@ -17,11 +17,8 @@ C5RawChannel::C5RawChannel(audioMasterCallback audioMaster) :
lastSampleChannelL = 0.0;
lastFXChannelR = 0.0;
lastSampleChannelR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/C5RawChannel/source/C5RawChannel.h b/plugins/MacVST/C5RawChannel/source/C5RawChannel.h
index 2281961..3ce3e84 100755
--- a/plugins/MacVST/C5RawChannel/source/C5RawChannel.h
+++ b/plugins/MacVST/C5RawChannel/source/C5RawChannel.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastFXChannelL;
double lastSampleChannelL;
diff --git a/plugins/MacVST/C5RawChannel/source/C5RawChannelProc.cpp b/plugins/MacVST/C5RawChannel/source/C5RawChannelProc.cpp
index 41f949e..b2679ff 100755
--- a/plugins/MacVST/C5RawChannel/source/C5RawChannelProc.cpp
+++ b/plugins/MacVST/C5RawChannel/source/C5RawChannelProc.cpp
@@ -14,9 +14,6 @@ void C5RawChannel::processReplacing(float **inputs, float **outputs, VstInt32 sa
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = A * 0.5;
centering = 1.0 - pow(centering,5);
@@ -110,25 +107,14 @@ void C5RawChannel::processReplacing(float **inputs, float **outputs, VstInt32 sa
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -147,9 +133,6 @@ void C5RawChannel::processDoubleReplacing(double **inputs, double **outputs, Vst
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = A * 0.5;
centering = 1.0 - pow(centering,5);
@@ -243,25 +226,16 @@ void C5RawChannel::processDoubleReplacing(double **inputs, double **outputs, Vst
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser
index 6f086f0..84d9838 100755
--- a/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541888518;
- PBXWorkspaceStateSaveDate = 541888518;
+ PBXPerProjectTemplateStateSaveDate = 569734170;
+ PBXWorkspaceStateSaveDate = 569734170;
};
perUserProjectItems = {
8B181AD0204C900D00516BEE /* PBXTextBookmark */ = 8B181AD0204C900D00516BEE /* PBXTextBookmark */;
8B181AEB204C93FE00516BEE /* PBXTextBookmark */ = 8B181AEB204C93FE00516BEE /* PBXTextBookmark */;
- 8B8E3C051FC2409000F10C24 /* PBXTextBookmark */ = 8B8E3C051FC2409000F10C24 /* PBXTextBookmark */;
+ 8B79373621F57427006E9731 /* PBXTextBookmark */ = 8B79373621F57427006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -87,9 +87,9 @@
};
24D8286F09A914000093AEF8 /* CStripProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {761, 19695}}";
+ sepNavIntBoundsRect = "{{0, 0}, {635, 19565}}";
sepNavSelRange = "{27530, 0}";
- sepNavVisRange = "{6438, 114}";
+ sepNavVisRange = "{6540, 22}";
sepNavWindowFrame = "{{533, 46}, {895, 831}}";
};
};
@@ -127,15 +127,15 @@
vrLen = 114;
vrLoc = 6438;
};
- 8B8E3C051FC2409000F10C24 /* PBXTextBookmark */ = {
+ 8B79373621F57427006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* CStripProc.cpp */;
- name = "CStripProc.cpp: 139";
+ name = "CStripProc.cpp: 761";
rLen = 0;
rLoc = 27530;
rType = 0;
- vrLen = 436;
- vrLoc = 6443;
+ vrLen = 22;
+ vrLoc = 6540;
};
8D01CCC60486CAD60068D4B7 /* CStrip */ = {
activeExec = 0;
diff --git a/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3
index d37c29c..90086a5 100755
--- a/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/CStrip/CStrip.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>628 335 810 487 0 0 1440 878 </string>
+ <string>568 285 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B181AEB204C93FE00516BEE</string>
+ <string>8B79373621F57427006E9731</string>
<key>history</key>
<array>
<string>8B181AD0204C900D00516BEE</string>
- <string>8B8E3C051FC2409000F10C24</string>
+ <string>8B181AEB204C93FE00516BEE</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {603, 51}}</string>
<key>RubberWindowFrame</key>
- <string>628 335 810 487 0 0 1440 878 </string>
+ <string>568 285 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>390pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +394,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 363}}</string>
<key>RubberWindowFrame</key>
- <string>628 335 810 487 0 0 1440 878 </string>
+ <string>568 285 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B181AD2204C900D00516BEE</string>
+ <string>8B79373721F57427006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B181AD3204C900D00516BEE</string>
+ <string>8B79373821F57427006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B181AD4204C900D00516BEE</string>
+ <string>8B79373921F57427006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541889534.51824105</real>
+ <real>569734183.18676102</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -655,7 +655,7 @@
<string>/Users/christopherjohnson/Desktop/MacVST/CStrip/CStrip.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>628 335 810 487 0 0 1440 878 </string>
+ <string>568 285 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/CStrip/source/CStrip.cpp b/plugins/MacVST/CStrip/source/CStrip.cpp
index 1c24d1b..2049ab8 100755
--- a/plugins/MacVST/CStrip/source/CStrip.cpp
+++ b/plugins/MacVST/CStrip/source/CStrip.cpp
@@ -153,11 +153,8 @@ CStrip::CStrip(audioMasterCallback audioMaster) :
nvgRA = nvgRB = 0.0;
//end ButterComp
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/CStrip/source/CStrip.h b/plugins/MacVST/CStrip/source/CStrip.h
index 10f6729..cc9f722 100755
--- a/plugins/MacVST/CStrip/source/CStrip.h
+++ b/plugins/MacVST/CStrip/source/CStrip.h
@@ -63,11 +63,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/MacVST/CStrip/source/CStripProc.cpp b/plugins/MacVST/CStrip/source/CStripProc.cpp
index 272b9b6..60ce59c 100755
--- a/plugins/MacVST/CStrip/source/CStripProc.cpp
+++ b/plugins/MacVST/CStrip/source/CStripProc.cpp
@@ -20,10 +20,8 @@ void CStrip::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
overallscale = getSampleRate();
compscale = compscale * overallscale;
//compscale is the one that's 1 or something like 2.2 for 96K rates
- float fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -728,25 +726,14 @@ void CStrip::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
inputSampleR *= outputgain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -771,10 +758,8 @@ void CStrip::processDoubleReplacing(double **inputs, double **outputs, VstInt32
overallscale = getSampleRate();
compscale = compscale * overallscale;
//compscale is the one that's 1 or something like 2.2 for 96K rates
- double fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
long double fpNew = 1.0 - fpOld;
-
long double inputSampleL;
long double inputSampleR;
@@ -1479,25 +1464,16 @@ void CStrip::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR *= outputgain;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser
index a60059d..cb9af70 100755
--- a/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528459434;
- PBXWorkspaceStateSaveDate = 528459434;
+ PBXPerProjectTemplateStateSaveDate = 569733320;
+ PBXWorkspaceStateSaveDate = 569733320;
};
perUserProjectItems = {
8B4847521F6D432A007BD0D0 /* PBXTextBookmark */ = 8B4847521F6D432A007BD0D0 /* PBXTextBookmark */;
- 8B9D699F1F7EDD69007AB60F /* PBXTextBookmark */ = 8B9D699F1F7EDD69007AB60F /* PBXTextBookmark */;
+ 8B79355E21F570E8006E9731 /* PBXTextBookmark */ = 8B79355E21F570E8006E9731 /* PBXTextBookmark */;
8B9D781B1F7FA737007AB60F /* PBXTextBookmark */ = 8B9D781B1F7FA737007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -71,7 +71,7 @@
};
245463B80991757100464AD3 /* Capacitor.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 1482}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 1417}}";
sepNavSelRange = "{2958, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{375, 39}, {895, 831}}";
@@ -87,9 +87,9 @@
};
24D8286F09A914000093AEF8 /* CapacitorProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {979, 5811}}";
+ sepNavIntBoundsRect = "{{0, 0}, {979, 5096}}";
sepNavSelRange = "{1264, 0}";
- sepNavVisRange = "{970, 2251}";
+ sepNavVisRange = "{21333, 3687}";
sepNavWindowFrame = "{{368, 44}, {1026, 834}}";
};
};
@@ -117,15 +117,15 @@
vrLen = 166;
vrLoc = 20835;
};
- 8B9D699F1F7EDD69007AB60F /* PBXTextBookmark */ = {
+ 8B79355E21F570E8006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* Capacitor.h */;
name = "Capacitor.h: 82";
rLen = 0;
rLoc = 2958;
rType = 0;
- vrLen = 36;
- vrLoc = 2376;
+ vrLen = 0;
+ vrLoc = 0;
};
8B9D781B1F7FA737007AB60F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3
index 486401d..3eed19a 100755
--- a/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Capacitor/Capacitor.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>476 267 810 487 0 0 1440 878 </string>
+ <string>443 261 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D781B1F7FA737007AB60F</string>
+ <string>8B79355E21F570E8006E9731</string>
<key>history</key>
<array>
<string>8B4847521F6D432A007BD0D0</string>
- <string>8B9D699F1F7EDD69007AB60F</string>
+ <string>8B9D781B1F7FA737007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 20}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>476 267 810 487 0 0 1440 878 </string>
+ <string>443 261 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>20pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>421pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +394,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 394}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
- <string>476 267 810 487 0 0 1440 878 </string>
+ <string>443 261 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D781C1F7FA737007AB60F</string>
+ <string>8B79355F21F570E8006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D781D1F7FA737007AB60F</string>
+ <string>8B79356021F570E8006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D781E1F7FA737007AB60F</string>
+ <string>8B79356121F570E8006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528459575.56228501</real>
+ <real>569733352.25392997</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +652,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D781F1F7FA737007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Capacitor/Capacitor.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>476 267 810 487 0 0 1440 878 </string>
+ <string>443 261 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Capacitor/source/Capacitor.cpp b/plugins/MacVST/Capacitor/source/Capacitor.cpp
index 2a62df6..0ade9c9 100755
--- a/plugins/MacVST/Capacitor/source/Capacitor.cpp
+++ b/plugins/MacVST/Capacitor/source/Capacitor.cpp
@@ -51,11 +51,8 @@ Capacitor::Capacitor(audioMasterCallback audioMaster) :
lastHighpass = 1000.0;
lastWet = 1000.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Capacitor/source/Capacitor.h b/plugins/MacVST/Capacitor/source/Capacitor.h
index d80c676..0799d39 100755
--- a/plugins/MacVST/Capacitor/source/Capacitor.h
+++ b/plugins/MacVST/Capacitor/source/Capacitor.h
@@ -94,11 +94,8 @@ private:
double lastHighpass;
double lastWet;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Capacitor/source/CapacitorProc.cpp b/plugins/MacVST/Capacitor/source/CapacitorProc.cpp
index 6accb0d..6b3582b 100755
--- a/plugins/MacVST/Capacitor/source/CapacitorProc.cpp
+++ b/plugins/MacVST/Capacitor/source/CapacitorProc.cpp
@@ -30,9 +30,6 @@ void Capacitor::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double invHighpass;
double dry;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -182,25 +179,14 @@ void Capacitor::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleL = (drySampleL * dry) + (inputSampleL * wet);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -235,9 +221,6 @@ void Capacitor::processDoubleReplacing(double **inputs, double **outputs, VstInt
double invHighpass;
double dry;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -387,25 +370,16 @@ void Capacitor::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleL = (drySampleL * dry) + (inputSampleL * wet);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser
index 4f94aef..ca06db1 100755
--- a/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553996149;
- PBXWorkspaceStateSaveDate = 553996149;
+ PBXPerProjectTemplateStateSaveDate = 569801998;
+ PBXWorkspaceStateSaveDate = 569801998;
};
perUserProjectItems = {
8BBD195D21054F810015A233 /* PBXTextBookmark */ = 8BBD195D21054F810015A233 /* PBXTextBookmark */;
- 8BBD195E21054F810015A233 /* PBXBookmark */ = 8BBD195E21054F810015A233 /* PBXBookmark */;
- 8BBD195F21054F810015A233 /* PBXTextBookmark */ = 8BBD195F21054F810015A233 /* PBXTextBookmark */;
+ 8BEF857021F67D4F00FEF113 /* PBXTextBookmark */ = 8BEF857021F67D4F00FEF113 /* PBXTextBookmark */;
+ 8BEF857121F67D4F00FEF113 /* PBXBookmark */ = 8BEF857121F67D4F00FEF113 /* PBXBookmark */;
+ 8BEF857221F67D4F00FEF113 /* PBXTextBookmark */ = 8BEF857221F67D4F00FEF113 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -63,9 +64,9 @@
};
2407DEB6089929BA00EB68BF /* Channel6.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 2197}}";
+ sepNavIntBoundsRect = "{{0, 0}, {740, 2106}}";
sepNavSelRange = "{663, 0}";
- sepNavVisRange = "{0, 1975}";
+ sepNavVisRange = "{5547, 903}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
@@ -87,9 +88,9 @@
};
24D8286F09A914000093AEF8 /* Channel6Proc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {712, 3939}}";
+ sepNavIntBoundsRect = "{{0, 0}, {712, 3510}}";
sepNavSelRange = "{9237, 0}";
- sepNavVisRange = "{1490, 318}";
+ sepNavVisRange = "{1588, 1022}";
sepNavWindowFrame = "{{4, 47}, {895, 831}}";
};
};
@@ -117,19 +118,29 @@
vrLen = 280;
vrLoc = 10459;
};
- 8BBD195E21054F810015A233 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 24D8286F09A914000093AEF8 /* Channel6Proc.cpp */;
- };
- 8BBD195F21054F810015A233 /* PBXTextBookmark */ = {
+ 8BEF857021F67D4F00FEF113 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* Channel6Proc.cpp */;
- name = "Channel6Proc.cpp: 267";
+ name = "Channel6Proc.cpp: 265";
rLen = 0;
rLoc = 9237;
rType = 0;
- vrLen = 318;
- vrLoc = 1490;
+ vrLen = 1022;
+ vrLoc = 1588;
+ };
+ 8BEF857121F67D4F00FEF113 /* PBXBookmark */ = {
+ isa = PBXBookmark;
+ fRef = 2407DEB6089929BA00EB68BF /* Channel6.cpp */;
+ };
+ 8BEF857221F67D4F00FEF113 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2407DEB6089929BA00EB68BF /* Channel6.cpp */;
+ name = "Channel6.cpp: 26";
+ rLen = 0;
+ rLoc = 663;
+ rType = 0;
+ vrLen = 903;
+ vrLoc = 5547;
};
8D01CCC60486CAD60068D4B7 /* Channel6 */ = {
activeExec = 0;
diff --git a/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3
index 9dbd71c..e269302 100755
--- a/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Channel6/Channel6.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>18 291 810 487 0 0 1440 878 </string>
+ <string>475 316 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -339,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Channel6Proc.cpp</string>
+ <string>Channel6.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -347,15 +347,16 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Channel6Proc.cpp</string>
+ <string>Channel6.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBD195F21054F810015A233</string>
+ <string>8BEF857221F67D4F00FEF113</string>
<key>history</key>
<array>
<string>8BBD195D21054F810015A233</string>
- <string>8BBD195E21054F810015A233</string>
+ <string>8BEF857021F67D4F00FEF113</string>
+ <string>8BEF857121F67D4F00FEF113</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 353}}</string>
<key>RubberWindowFrame</key>
- <string>18 291 810 487 0 0 1440 878 </string>
+ <string>475 316 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>353pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>88pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +395,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 61}}</string>
<key>RubberWindowFrame</key>
- <string>18 291 810 487 0 0 1440 878 </string>
+ <string>475 316 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -478,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBD196021054F810015A233</string>
+ <string>8BEF857321F67D4F00FEF113</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBD196121054F810015A233</string>
+ <string>8BEF857421F67D4F00FEF113</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBD196221054F810015A233</string>
+ <string>8BEF857521F67D4F00FEF113</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553996161.14167202</real>
+ <real>569802063.73693204</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +653,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBD196321054F810015A233</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Channel6/Channel6.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>18 291 810 487 0 0 1440 878 </string>
+ <string>475 316 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Channel6/source/Channel6Proc.cpp b/plugins/MacVST/Channel6/source/Channel6Proc.cpp
index d206851..9f16b2a 100755
--- a/plugins/MacVST/Channel6/source/Channel6Proc.cpp
+++ b/plugins/MacVST/Channel6/source/Channel6Proc.cpp
@@ -121,18 +121,14 @@ void Channel6::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR *= output;
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -142,12 +138,6 @@ void Channel6::processReplacing(float **inputs, float **outputs, VstInt32 sample
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -264,18 +254,16 @@ void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR *= output;
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -285,10 +273,4 @@ void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt3
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser
index d5706d0..21526ae 100755
--- a/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.pbxuser
@@ -51,13 +51,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528459635;
- PBXWorkspaceStateSaveDate = 528459635;
+ PBXPerProjectTemplateStateSaveDate = 569733572;
+ PBXWorkspaceStateSaveDate = 569733572;
};
perUserProjectItems = {
- 8B4847DF1F6D5369007BD0D0 /* PBXTextBookmark */ = 8B4847DF1F6D5369007BD0D0 /* PBXTextBookmark */;
- 8B9D69E11F7EDDC0007AB60F /* PBXTextBookmark */ = 8B9D69E11F7EDDC0007AB60F /* PBXTextBookmark */;
- 8B9D785D1F7FA7A5007AB60F /* PBXTextBookmark */ = 8B9D785D1F7FA7A5007AB60F /* PBXTextBookmark */;
+ 8B7935DD21F571DE006E9731 /* PBXTextBookmark */ = 8B7935DD21F571DE006E9731 /* PBXTextBookmark */;
+ 8B7935EF21F5721C006E9731 /* PBXTextBookmark */ = 8B7935EF21F5721C006E9731 /* PBXTextBookmark */;
+ 8B7935F021F5721C006E9731 /* PBXTextBookmark */ = 8B7935F021F5721C006E9731 /* PBXTextBookmark */;
+ 8B7935F121F5721C006E9731 /* PBXTextBookmark */ = 8B7935F121F5721C006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -65,18 +66,18 @@
};
2407DEB6089929BA00EB68BF /* Chorus.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 2002}}";
+ sepNavIntBoundsRect = "{{0, 0}, {712, 2041}}";
sepNavSelRange = "{461, 273}";
- sepNavVisRange = "{0, 1929}";
+ sepNavVisRange = "{613, 710}";
sepNavWindowFrame = "{{539, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Chorus.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 1274}}";
- sepNavSelRange = "{2789, 0}";
- sepNavVisRange = "{2681, 110}";
- sepNavWindowFrame = "{{595, 47}, {895, 831}}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 1066}}";
+ sepNavSelRange = "{2738, 0}";
+ sepNavVisRange = "{489, 2303}";
+ sepNavWindowFrame = "{{545, 47}, {895, 831}}";
};
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
@@ -89,9 +90,9 @@
};
24D8286F09A914000093AEF8 /* ChorusProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 4264}}";
- sepNavSelRange = "{7772, 0}";
- sepNavVisRange = "{550, 2073}";
+ sepNavIntBoundsRect = "{{0, 0}, {775, 4095}}";
+ sepNavSelRange = "{1086, 0}";
+ sepNavVisRange = "{5380, 625}";
sepNavWindowFrame = "{{545, 47}, {895, 831}}";
};
};
@@ -109,35 +110,45 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B4847DF1F6D5369007BD0D0 /* PBXTextBookmark */ = {
+ 8B7935DD21F571DE006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 245463B80991757100464AD3 /* Chorus.h */;
+ name = "Chorus.h: 81";
+ rLen = 0;
+ rLoc = 2792;
+ rType = 0;
+ vrLen = 468;
+ vrLoc = 2259;
+ };
+ 8B7935EF21F5721C006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ChorusProc.cpp */;
- name = "ChorusProc.cpp: 42";
+ name = "ChorusProc.cpp: 43";
rLen = 0;
rLoc = 1086;
rType = 0;
- vrLen = 272;
- vrLoc = 44;
+ vrLen = 625;
+ vrLoc = 5380;
};
- 8B9D69E11F7EDDC0007AB60F /* PBXTextBookmark */ = {
+ 8B7935F021F5721C006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 245463B80991757100464AD3 /* Chorus.h */;
- name = "Chorus.h: 75";
- rLen = 0;
- rLoc = 2789;
+ fRef = 2407DEB6089929BA00EB68BF /* Chorus.cpp */;
+ name = "Chorus.cpp: 19";
+ rLen = 273;
+ rLoc = 461;
rType = 0;
- vrLen = 128;
- vrLoc = 2663;
+ vrLen = 696;
+ vrLoc = 613;
};
- 8B9D785D1F7FA7A5007AB60F /* PBXTextBookmark */ = {
+ 8B7935F121F5721C006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 245463B80991757100464AD3 /* Chorus.h */;
- name = "Chorus.h: 75";
- rLen = 0;
- rLoc = 2789;
+ fRef = 2407DEB6089929BA00EB68BF /* Chorus.cpp */;
+ name = "Chorus.cpp: 19";
+ rLen = 273;
+ rLoc = 461;
rType = 0;
- vrLen = 110;
- vrLoc = 2681;
+ vrLen = 710;
+ vrLoc = 613;
};
8D01CCC60486CAD60068D4B7 /* Chorus */ = {
activeExec = 0;
diff --git a/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3
index b9cb14f..b93e4c2 100755
--- a/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Chorus/Chorus.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>7</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -339,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Chorus.h</string>
+ <string>Chorus.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -347,15 +347,16 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Chorus.h</string>
+ <string>Chorus.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D785D1F7FA7A5007AB60F</string>
+ <string>8B7935F121F5721C006E9731</string>
<key>history</key>
<array>
- <string>8B4847DF1F6D5369007BD0D0</string>
- <string>8B9D69E11F7EDDC0007AB60F</string>
+ <string>8B7935DD21F571DE006E9731</string>
+ <string>8B7935EF21F5721C006E9731</string>
+ <string>8B7935F021F5721C006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 102}}</string>
+ <string>{{0, 0}, {603, 300}}</string>
<key>RubberWindowFrame</key>
<string>628 274 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>102pt</string>
+ <string>300pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>141pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 312}}</string>
- <key>RubberWindowFrame</key>
- <string>628 274 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 114}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
+ <string>{{10, 27}, {603, 114}}</string>
+ <key>RubberWindowFrame</key>
+ <string>628 274 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D785E1F7FA7A5007AB60F</string>
+ <string>8B7935F221F5721C006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D785F1F7FA7A5007AB60F</string>
+ <string>8B7935F321F5721C006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D78601F7FA7A5007AB60F</string>
+ <string>8B7935F421F5721C006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -655,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528459685.88356102</real>
+ <real>569733660.57449198</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -672,7 +673,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D78611F7FA7A5007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Chorus/Chorus.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Chorus/source/Chorus.cpp b/plugins/MacVST/Chorus/source/Chorus.cpp
index a0699ec..1f3965a 100755
--- a/plugins/MacVST/Chorus/source/Chorus.cpp
+++ b/plugins/MacVST/Chorus/source/Chorus.cpp
@@ -27,12 +27,9 @@ Chorus::Chorus(audioMasterCallback audioMaster) :
airEvenR = 0.0;
airOddR = 0.0;
airFactorR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Chorus/source/Chorus.h b/plugins/MacVST/Chorus/source/Chorus.h
index fb2fb44..5508ac3 100755
--- a/plugins/MacVST/Chorus/source/Chorus.h
+++ b/plugins/MacVST/Chorus/source/Chorus.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
const static int totalsamples = 16386;
float dL[totalsamples];
@@ -73,6 +70,7 @@ private:
double airEvenR;
double airOddR;
double airFactorR;
+ bool fpFlip;
float A;
float B;
diff --git a/plugins/MacVST/Chorus/source/ChorusProc.cpp b/plugins/MacVST/Chorus/source/ChorusProc.cpp
index aed2bc0..368ade7 100755
--- a/plugins/MacVST/Chorus/source/ChorusProc.cpp
+++ b/plugins/MacVST/Chorus/source/ChorusProc.cpp
@@ -30,9 +30,6 @@ void Chorus::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
double offset;
//this is a double buffer so we will be splitting it in two
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -134,26 +131,16 @@ void Chorus::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -188,9 +175,6 @@ void Chorus::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double offset;
//this is a double buffer so we will be splitting it in two
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -293,25 +277,17 @@ void Chorus::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser
index bd6d0eb..bad7b6e 100755
--- a/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.pbxuser
@@ -51,8 +51,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528459695;
- PBXWorkspaceStateSaveDate = 528459695;
+ PBXPerProjectTemplateStateSaveDate = 569733687;
+ PBXWorkspaceStateSaveDate = 569733687;
+ };
+ perUserProjectItems = {
+ 8B79361421F57279006E9731 /* PBXTextBookmark */ = 8B79361421F57279006E9731 /* PBXTextBookmark */;
+ 8B79361521F57279006E9731 /* PBXTextBookmark */ = 8B79361521F57279006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -60,17 +64,17 @@
};
2407DEB6089929BA00EB68BF /* ChorusEnsemble.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1976}}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 2028}}";
sepNavSelRange = "{791, 0}";
- sepNavVisRange = "{0, 2026}";
+ sepNavVisRange = "{687, 156}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* ChorusEnsemble.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 1092}}";
- sepNavSelRange = "{2712, 0}";
- sepNavVisRange = "{495, 2391}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 1053}}";
+ sepNavSelRange = "{2726, 0}";
+ sepNavVisRange = "{521, 2322}";
sepNavWindowFrame = "{{298, 47}, {895, 831}}";
};
};
@@ -84,9 +88,9 @@
};
24D8286F09A914000093AEF8 /* ChorusEnsembleProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 5239}}";
- sepNavSelRange = "{11270, 0}";
- sepNavVisRange = "{0, 0}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 5018}}";
+ sepNavSelRange = "{3664, 0}";
+ sepNavVisRange = "{212, 1846}";
sepNavWindowFrame = "{{394, 47}, {895, 831}}";
};
};
@@ -104,6 +108,26 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
+ 8B79361421F57279006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2407DEB6089929BA00EB68BF /* ChorusEnsemble.cpp */;
+ name = "ChorusEnsemble.cpp: 30";
+ rLen = 0;
+ rLoc = 791;
+ rType = 0;
+ vrLen = 142;
+ vrLoc = 687;
+ };
+ 8B79361521F57279006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2407DEB6089929BA00EB68BF /* ChorusEnsemble.cpp */;
+ name = "ChorusEnsemble.cpp: 30";
+ rLen = 0;
+ rLoc = 791;
+ rType = 0;
+ vrLen = 156;
+ vrLoc = 687;
+ };
8D01CCC60486CAD60068D4B7 /* ChorusEnsemble */ = {
activeExec = 0;
};
diff --git a/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3
index e4970a3..0d9a5fb 100755
--- a/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>7</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -339,13 +339,23 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>&lt;No Editor&gt;</string>
+ <string>ChorusEnsemble.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>ChorusEnsemble.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B79361521F57279006E9731</string>
+ <key>history</key>
+ <array>
+ <string>8B79361421F57279006E9731</string>
+ </array>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -358,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 0}}</string>
+ <string>{{0, 0}, {603, 132}}</string>
<key>RubberWindowFrame</key>
<string>401 330 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>0pt</string>
+ <string>132pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>441pt</string>
+ <string>309pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -384,8 +394,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>401 330 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -439,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 282}}</string>
+ <key>RubberWindowFrame</key>
+ <string>401 330 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -467,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D787D1F7FA7CE007AB60F</string>
+ <string>8B79361621F57279006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D787E1F7FA7CE007AB60F</string>
+ <string>8B79361721F57279006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D787F1F7FA7CE007AB60F</string>
+ <string>8B79361821F57279006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -644,7 +654,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528459726.78873903</real>
+ <real>569733753.83205295</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -661,7 +671,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D78801F7FA7CE007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.cpp b/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.cpp
index b1012f9..318b678 100755
--- a/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.cpp
+++ b/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.cpp
@@ -27,12 +27,9 @@ ChorusEnsemble::ChorusEnsemble(audioMasterCallback audioMaster) :
airEvenR = 0.0;
airOddR = 0.0;
airFactorR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.h b/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.h
index bd442ab..e7df332 100755
--- a/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.h
+++ b/plugins/MacVST/ChorusEnsemble/source/ChorusEnsemble.h
@@ -67,12 +67,9 @@ private:
double airEvenR;
double airOddR;
double airFactorR;
-
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/ChorusEnsemble/source/ChorusEnsembleProc.cpp b/plugins/MacVST/ChorusEnsemble/source/ChorusEnsembleProc.cpp
index 2a783dd..1663244 100755
--- a/plugins/MacVST/ChorusEnsemble/source/ChorusEnsembleProc.cpp
+++ b/plugins/MacVST/ChorusEnsemble/source/ChorusEnsembleProc.cpp
@@ -17,9 +17,6 @@ void ChorusEnsemble::processReplacing(float **inputs, float **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double speed = pow(A,3) * 0.001;
speed *= overallscale;
@@ -174,27 +171,17 @@ void ChorusEnsemble::processReplacing(float **inputs, float **outputs, VstInt32
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
+ fpFlip = !fpFlip;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -216,9 +203,6 @@ void ChorusEnsemble::processDoubleReplacing(double **inputs, double **outputs, V
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double speed = pow(A,3) * 0.001;
speed *= overallscale;
@@ -373,27 +357,19 @@ void ChorusEnsemble::processDoubleReplacing(double **inputs, double **outputs, V
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
+ fpFlip = !fpFlip;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser
index 9aaee37..ecb292e 100755
--- a/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528459736;
- PBXWorkspaceStateSaveDate = 528459736;
+ PBXPerProjectTemplateStateSaveDate = 569733783;
+ PBXWorkspaceStateSaveDate = 569733783;
};
perUserProjectItems = {
- 8B9D6A261F7EDE28007AB60F /* PBXTextBookmark */ = 8B9D6A261F7EDE28007AB60F /* PBXTextBookmark */;
+ 8B79362B21F572A0006E9731 /* PBXTextBookmark */ = 8B79362B21F572A0006E9731 /* PBXTextBookmark */;
8B9D78921F7FA7F4007AB60F /* PBXTextBookmark */ = 8B9D78921F7FA7F4007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -62,7 +62,7 @@
};
2407DEB6089929BA00EB68BF /* ClipOnly.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {733, 793}}";
+ sepNavIntBoundsRect = "{{0, 0}, {733, 780}}";
sepNavSelRange = "{1684, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{359, 47}, {895, 831}}";
@@ -106,15 +106,15 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6A261F7EDE28007AB60F /* PBXTextBookmark */ = {
+ 8B79362B21F572A0006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* ClipOnly.cpp */;
name = "ClipOnly.cpp: 42";
rLen = 0;
rLoc = 1684;
rType = 0;
- vrLen = 93;
- vrLoc = 1724;
+ vrLen = 0;
+ vrLoc = 0;
};
8B9D78921F7FA7F4007AB60F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3
index 5203c89..6cad4dd 100755
--- a/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/ClipOnly/ClipOnly.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D78921F7FA7F4007AB60F</string>
+ <string>8B79362B21F572A0006E9731</string>
<key>history</key>
<array>
- <string>8B9D6A261F7EDE28007AB60F</string>
+ <string>8B9D78921F7FA7F4007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 32}}</string>
+ <string>{{0, 0}, {603, 13}}</string>
<key>RubberWindowFrame</key>
<string>196 332 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>32pt</string>
+ <string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>409pt</string>
+ <string>428pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
+ <string>{{10, 27}, {603, 401}}</string>
<key>RubberWindowFrame</key>
<string>196 332 810 487 0 0 1440 878 </string>
</dict>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D78931F7FA7F4007AB60F</string>
+ <string>8B79362C21F572A0006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D78941F7FA7F4007AB60F</string>
+ <string>8B79362D21F572A0006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D78951F7FA7F4007AB60F</string>
+ <string>8B79362E21F572A0006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528459764.02394903</real>
+ <real>569733792.81656504</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D78961F7FA7F4007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/ClipOnly/ClipOnly.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser
index 6a04444..131d5b2 100755
--- a/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528459773;
- PBXWorkspaceStateSaveDate = 528459773;
+ PBXPerProjectTemplateStateSaveDate = 569733814;
+ PBXWorkspaceStateSaveDate = 569733814;
};
perUserProjectItems = {
- 8B9D6A9F1F7EDF5C007AB60F /* PBXTextBookmark */ = 8B9D6A9F1F7EDF5C007AB60F /* PBXTextBookmark */;
+ 8B79364B21F572C9006E9731 /* PBXTextBookmark */ = 8B79364B21F572C9006E9731 /* PBXTextBookmark */;
8B9D78B21F7FA812007AB60F /* PBXTextBookmark */ = 8B9D78B21F7FA812007AB60F /* PBXTextBookmark */;
8BB1EB551F76F0C500413848 /* PBXTextBookmark */ = 8BB1EB551F76F0C500413848 /* PBXTextBookmark */;
};
@@ -87,9 +87,9 @@
};
24D8286F09A914000093AEF8 /* Console4BussProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {712, 4043}}";
+ sepNavIntBoundsRect = "{{0, 0}, {712, 3562}}";
sepNavSelRange = "{5847, 0}";
- sepNavVisRange = "{5332, 516}";
+ sepNavVisRange = "{5384, 639}";
sepNavWindowFrame = "{{531, 47}, {895, 831}}";
};
};
@@ -107,15 +107,15 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6A9F1F7EDF5C007AB60F /* PBXTextBookmark */ = {
+ 8B79364B21F572C9006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* Console4BussProc.cpp */;
- name = "Console4BussProc.cpp: 169";
+ name = "Console4BussProc.cpp: 171";
rLen = 0;
rLoc = 5847;
rType = 0;
- vrLen = 526;
- vrLoc = 5322;
+ vrLen = 639;
+ vrLoc = 5384;
};
8B9D78B21F7FA812007AB60F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3
index 50d91cf..ab709b7 100755
--- a/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Console4Buss/Console4Buss.xcodeproj/christopherjohnson.perspectivev3
@@ -351,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D78B21F7FA812007AB60F</string>
+ <string>8B79364B21F572C9006E9731</string>
<key>history</key>
<array>
<string>8BB1EB551F76F0C500413848</string>
- <string>8B9D6A9F1F7EDF5C007AB60F</string>
+ <string>8B9D78B21F7FA812007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 292}}</string>
+ <string>{{0, 0}, {603, 285}}</string>
<key>RubberWindowFrame</key>
<string>585 260 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>292pt</string>
+ <string>285pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>149pt</string>
+ <string>156pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,7 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 122}}</string>
+ <string>{{10, 27}, {603, 129}}</string>
<key>RubberWindowFrame</key>
<string>585 260 810 487 0 0 1440 878 </string>
</dict>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D78B31F7FA812007AB60F</string>
+ <string>8B79364C21F572C9006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D78B41F7FA812007AB60F</string>
+ <string>8B79364D21F572C9006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D78B51F7FA812007AB60F</string>
+ <string>8B79364E21F572C9006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528459794.51351899</real>
+ <real>569733833.14621103</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,7 +652,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D78B61F7FA812007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Console4Buss/Console4Buss.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Console4Buss/source/Console4Buss.cpp b/plugins/MacVST/Console4Buss/source/Console4Buss.cpp
index 79c7f6f..0c8e00c 100755
--- a/plugins/MacVST/Console4Buss/source/Console4Buss.cpp
+++ b/plugins/MacVST/Console4Buss/source/Console4Buss.cpp
@@ -22,11 +22,8 @@ Console4Buss::Console4Buss(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
// TODO: uncomment canDo entries according to your plugin's capabilities
// _canDo.insert("sendVstEvents"); // plug-in will send Vst events to Host.
diff --git a/plugins/MacVST/Console4Buss/source/Console4Buss.h b/plugins/MacVST/Console4Buss/source/Console4Buss.h
index b19e6f2..9a9cbfb 100755
--- a/plugins/MacVST/Console4Buss/source/Console4Buss.h
+++ b/plugins/MacVST/Console4Buss/source/Console4Buss.h
@@ -71,11 +71,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- double fpNShapeLA;
- double fpNShapeLB;
- double fpNShapeRA;
- double fpNShapeRB;
- bool fpFlip;
+ double fpNShapeL;
+ double fpNShapeR;
//default stuff
double lastSampleL;
double lastSampleR;
diff --git a/plugins/MacVST/Console4Buss/source/Console4BussProc.cpp b/plugins/MacVST/Console4Buss/source/Console4BussProc.cpp
index 712e496..dde872a 100755
--- a/plugins/MacVST/Console4Buss/source/Console4BussProc.cpp
+++ b/plugins/MacVST/Console4Buss/source/Console4BussProc.cpp
@@ -18,10 +18,6 @@ void Console4Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
-
long double inputSampleL;
long double inputSampleR;
long double half;
@@ -123,25 +119,14 @@ void Console4Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa
//this is the inverse processing for Console: boosts but not so much if there's slew.
//is this too subtle an effect?
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -163,9 +148,6 @@ void Console4Buss::processDoubleReplacing(double **inputs, double **outputs, Vst
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -267,25 +249,16 @@ void Console4Buss::processDoubleReplacing(double **inputs, double **outputs, Vst
//this is the inverse processing for Console: boosts but not so much if there's slew.
//is this too subtle an effect?
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
diff --git a/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser
index ae8e6d9..b06954f 100755
--- a/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528459803;
- PBXWorkspaceStateSaveDate = 528459803;
+ PBXPerProjectTemplateStateSaveDate = 569733860;
+ PBXWorkspaceStateSaveDate = 569733860;
};
perUserProjectItems = {
8B6F9BAB1D4A8F7100B449D5 /* PBXTextBookmark */ = 8B6F9BAB1D4A8F7100B449D5 /* PBXTextBookmark */;
8B6F9BAC1D4A8F7100B449D5 /* PBXTextBookmark */ = 8B6F9BAC1D4A8F7100B449D5 /* PBXTextBookmark */;
- 8B9D6AB31F7EDF7E007AB60F /* PBXTextBookmark */ = 8B9D6AB31F7EDF7E007AB60F /* PBXTextBookmark */;
+ 8B79366D21F57303006E9731 /* PBXTextBookmark */ = 8B79366D21F57303006E9731 /* PBXTextBookmark */;
8B9D78D21F7FA82E007AB60F /* PBXTextBookmark */ = 8B9D78D21F7FA82E007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -88,9 +88,9 @@
};
24D8286F09A914000093AEF8 /* Console4ChannelProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {677, 3445}}";
+ sepNavIntBoundsRect = "{{0, 0}, {733, 3146}}";
sepNavSelRange = "{3799, 0}";
- sepNavVisRange = "{179, 112}";
+ sepNavVisRange = "{3549, 652}";
sepNavWindowFrame = "{{545, 47}, {895, 831}}";
};
};
@@ -128,15 +128,15 @@
vrLen = 150;
vrLoc = 2674;
};
- 8B9D6AB31F7EDF7E007AB60F /* PBXTextBookmark */ = {
+ 8B79366D21F57303006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* Console4ChannelProc.cpp */;
- name = "Console4ChannelProc.cpp: 107";
+ name = "Console4ChannelProc.cpp: 106";
rLen = 0;
rLoc = 3799;
rType = 0;
- vrLen = 174;
- vrLoc = 117;
+ vrLen = 652;
+ vrLoc = 3549;
};
8B9D78D21F7FA82E007AB60F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3
index 351193c..8c6b190 100755
--- a/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Console4Channel/Console4Channel.xcodeproj/christopherjohnson.perspectivev3
@@ -351,12 +351,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D78D21F7FA82E007AB60F</string>
+ <string>8B79366D21F57303006E9731</string>
<key>history</key>
<array>
<string>8B6F9BAB1D4A8F7100B449D5</string>
<string>8B6F9BAC1D4A8F7100B449D5</string>
- <string>8B9D6AB31F7EDF7E007AB60F</string>
+ <string>8B9D78D21F7FA82E007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 86}}</string>
+ <string>{{0, 0}, {603, 268}}</string>
<key>RubberWindowFrame</key>
<string>592 288 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>86pt</string>
+ <string>268pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>355pt</string>
+ <string>173pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,7 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
+ <string>{{10, 27}, {603, 146}}</string>
<key>RubberWindowFrame</key>
<string>592 288 810 487 0 0 1440 878 </string>
</dict>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D78D31F7FA82E007AB60F</string>
+ <string>8B79366E21F57303006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D78D41F7FA82E007AB60F</string>
+ <string>8B79366F21F57303006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D78D51F7FA82E007AB60F</string>
+ <string>8B79367021F57303006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528459822.224684</real>
+ <real>569733891.37075198</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,7 +653,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D78D61F7FA82E007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Console4Channel/Console4Channel.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Console4Channel/source/Console4Channel.cpp b/plugins/MacVST/Console4Channel/source/Console4Channel.cpp
index 52f6190..2e524a1 100755
--- a/plugins/MacVST/Console4Channel/source/Console4Channel.cpp
+++ b/plugins/MacVST/Console4Channel/source/Console4Channel.cpp
@@ -20,11 +20,8 @@ Console4Channel::Console4Channel(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
// TODO: uncomment canDo entries according to your plugin's capabilities
// _canDo.insert("sendVstEvents"); // plug-in will send Vst events to Host.
diff --git a/plugins/MacVST/Console4Channel/source/Console4Channel.h b/plugins/MacVST/Console4Channel/source/Console4Channel.h
index 861ebe3..564853a 100755
--- a/plugins/MacVST/Console4Channel/source/Console4Channel.h
+++ b/plugins/MacVST/Console4Channel/source/Console4Channel.h
@@ -76,11 +76,8 @@ private:
double settingchase;
double chasespeed;
- double fpNShapeLA;
- double fpNShapeLB;
- double fpNShapeRA;
- double fpNShapeRB;
- bool fpFlip;
+ double fpNShapeL;
+ double fpNShapeR;
//default stuff
float gain;
};
diff --git a/plugins/MacVST/Console4Channel/source/Console4ChannelProc.cpp b/plugins/MacVST/Console4Channel/source/Console4ChannelProc.cpp
index 9bf7244..3538710 100755
--- a/plugins/MacVST/Console4Channel/source/Console4ChannelProc.cpp
+++ b/plugins/MacVST/Console4Channel/source/Console4ChannelProc.cpp
@@ -18,10 +18,6 @@ void Console4Channel::processReplacing(float **inputs, float **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
-
long double inputSampleL;
long double inputSampleR;
long double half;
@@ -105,25 +101,14 @@ void Console4Channel::processReplacing(float **inputs, float **outputs, VstInt32
//this is part of the Purest line: stuff that is on every track
//needs to be DAMN LOW ON MATH srsly guys
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -145,9 +130,6 @@ void Console4Channel::processDoubleReplacing(double **inputs, double **outputs,
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -232,25 +214,16 @@ void Console4Channel::processDoubleReplacing(double **inputs, double **outputs,
//this is part of the Purest line: stuff that is on every track
//needs to be DAMN LOW ON MATH srsly guys
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser
index e36a6fc..2cc7c8e 100755
--- a/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 537052529;
- PBXWorkspaceStateSaveDate = 537052529;
+ PBXPerProjectTemplateStateSaveDate = 569733916;
+ PBXWorkspaceStateSaveDate = 569733916;
+ };
+ perUserProjectItems = {
+ 8B79369921F5736A006E9731 /* PBXBookmark */ = 8B79369921F5736A006E9731 /* PBXBookmark */;
+ 8B79369A21F5736A006E9731 /* PBXTextBookmark */ = 8B79369A21F5736A006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -82,9 +86,9 @@
};
24D8286F09A914000093AEF8 /* Console5BussProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 4615}}";
+ sepNavIntBoundsRect = "{{0, 0}, {712, 4407}}";
sepNavSelRange = "{4031, 0}";
- sepNavVisRange = "{2914, 2017}";
+ sepNavVisRange = "{5584, 820}";
sepNavWindowFrame = "{{540, 47}, {895, 831}}";
};
};
@@ -102,6 +106,20 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
+ 8B79369921F5736A006E9731 /* PBXBookmark */ = {
+ isa = PBXBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* Console5BussProc.cpp */;
+ };
+ 8B79369A21F5736A006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* Console5BussProc.cpp */;
+ name = "Console5BussProc.cpp: 112";
+ rLen = 0;
+ rLoc = 4031;
+ rType = 0;
+ vrLen = 820;
+ vrLoc = 5584;
+ };
8D01CCC60486CAD60068D4B7 /* Console5Buss */ = {
activeExec = 0;
};
diff --git a/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3
index 2fbab9b..6f86a43 100755
--- a/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Console5Buss/Console5Buss.xcodeproj/christopherjohnson.perspectivev3
@@ -339,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Gain.h</string>
+ <string>Console5BussProc.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -347,7 +347,15 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Gain.h</string>
+ <string>Console5BussProc.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B79369A21F5736A006E9731</string>
+ <key>history</key>
+ <array>
+ <string>8B79369921F5736A006E9731</string>
+ </array>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -360,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 0}}</string>
+ <string>{{0, 0}, {603, 358}}</string>
<key>RubberWindowFrame</key>
<string>570 328 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>0pt</string>
+ <string>358pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>441pt</string>
+ <string>83pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -385,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 56}}</string>
<key>RubberWindowFrame</key>
<string>570 328 810 487 0 0 1440 878 </string>
</dict>
@@ -469,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4D27CB2002C6770051360A</string>
+ <string>8B79369B21F5736A006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4D27CC2002C6770051360A</string>
+ <string>8B79369C21F5736A006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B4D27CD2002C6770051360A</string>
+ <string>8B79369D21F5736A006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>537052791.12328696</real>
+ <real>569733994.75000596</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B4D27CE2002C6770051360A</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Console5Buss/Console5Buss.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Console5Buss/source/Console5Buss.cpp b/plugins/MacVST/Console5Buss/source/Console5Buss.cpp
index 7f1c915..7e937a8 100755
--- a/plugins/MacVST/Console5Buss/source/Console5Buss.cpp
+++ b/plugins/MacVST/Console5Buss/source/Console5Buss.cpp
@@ -22,11 +22,8 @@ Console5Buss::Console5Buss(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Console5Buss/source/Console5Buss.h b/plugins/MacVST/Console5Buss/source/Console5Buss.h
index 6ece284..0166f33 100755
--- a/plugins/MacVST/Console5Buss/source/Console5Buss.h
+++ b/plugins/MacVST/Console5Buss/source/Console5Buss.h
@@ -61,11 +61,8 @@ private:
double gainchase;
double settingchase;
double chasespeed;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Console5Buss/source/Console5BussProc.cpp b/plugins/MacVST/Console5Buss/source/Console5BussProc.cpp
index 28b4980..21069e8 100755
--- a/plugins/MacVST/Console5Buss/source/Console5BussProc.cpp
+++ b/plugins/MacVST/Console5Buss/source/Console5BussProc.cpp
@@ -17,9 +17,6 @@ void Console5Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -151,25 +148,14 @@ void Console5Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa
lastFXBussR *= (1.0 - (nearZeroR * bassTrim));
//this cuts back the DC offset directly, relative to how near zero we are
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -191,9 +177,6 @@ void Console5Buss::processDoubleReplacing(double **inputs, double **outputs, Vst
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -325,25 +308,16 @@ void Console5Buss::processDoubleReplacing(double **inputs, double **outputs, Vst
lastFXBussR *= (1.0 - (nearZeroR * bassTrim));
//this cuts back the DC offset directly, relative to how near zero we are
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser
index e08fe8a..de35f26 100755
--- a/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 537049611;
- PBXWorkspaceStateSaveDate = 537049611;
+ PBXPerProjectTemplateStateSaveDate = 569734018;
+ PBXWorkspaceStateSaveDate = 569734018;
};
perUserProjectItems = {
- 8B4D27482002BEEF0051360A /* XCBuildMessageTextBookmark */ = 8B4D27482002BEEF0051360A /* XCBuildMessageTextBookmark */;
8B4D27492002BEEF0051360A /* PBXTextBookmark */ = 8B4D27492002BEEF0051360A /* PBXTextBookmark */;
+ 8B7936B021F5738D006E9731 /* PBXTextBookmark */ = 8B7936B021F5738D006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -78,9 +78,9 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}";
+ sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}";
sepNavSelRange = "{10616, 0}";
- sepNavVisRange = "{10459, 399}";
+ sepNavVisRange = "{10459, 280}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
@@ -106,23 +106,24 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B4D27482002BEEF0051360A /* XCBuildMessageTextBookmark */ = {
+ 8B4D27492002BEEF0051360A /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- comments = "Deprecated conversion from string constant to 'char*'";
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
- fallbackIsa = XCBuildMessageTextBookmark;
- rLen = 1;
- rLoc = 306;
- rType = 1;
+ name = "audioeffectx.cpp: 307";
+ rLen = 0;
+ rLoc = 10616;
+ rType = 0;
+ vrLen = 399;
+ vrLoc = 10459;
};
- 8B4D27492002BEEF0051360A /* PBXTextBookmark */ = {
+ 8B7936B021F5738D006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
rLen = 0;
rLoc = 10616;
rType = 0;
- vrLen = 399;
+ vrLen = 280;
vrLoc = 10459;
};
8D01CCC60486CAD60068D4B7 /* Console5Channel */ = {
diff --git a/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3
index 14c4536..cd63b6d 100755
--- a/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Console5Channel/Console5Channel.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>20 312 810 487 0 0 1440 878 </string>
+ <string>373 235 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4D27492002BEEF0051360A</string>
+ <string>8B7936B021F5738D006E9731</string>
<key>history</key>
<array>
- <string>8B4D27482002BEEF0051360A</string>
+ <string>8B4D27492002BEEF0051360A</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>20 312 810 487 0 0 1440 878 </string>
+ <string>373 235 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>373 235 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -448,8 +450,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>20 312 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4D274A2002BEEF0051360A</string>
+ <string>8B7936B121F5738D006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4D274B2002BEEF0051360A</string>
+ <string>8B7936B221F5738D006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B4D274C2002BEEF0051360A</string>
+ <string>8B7936B321F5738D006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>537050863.33069801</real>
+ <real>569734029.92668998</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,10 +651,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/Console5Channel/Console5Channel.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/Console5Channel/Console5Channel.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>20 312 810 487 0 0 1440 878 </string>
+ <string>373 235 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Console5Channel/source/Console5Channel.cpp b/plugins/MacVST/Console5Channel/source/Console5Channel.cpp
index 9305bf4..1a8f6fb 100755
--- a/plugins/MacVST/Console5Channel/source/Console5Channel.cpp
+++ b/plugins/MacVST/Console5Channel/source/Console5Channel.cpp
@@ -22,11 +22,8 @@ Console5Channel::Console5Channel(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Console5Channel/source/Console5Channel.h b/plugins/MacVST/Console5Channel/source/Console5Channel.h
index 59e7950..bbc58b3 100755
--- a/plugins/MacVST/Console5Channel/source/Console5Channel.h
+++ b/plugins/MacVST/Console5Channel/source/Console5Channel.h
@@ -61,11 +61,8 @@ private:
double gainchase;
double settingchase;
double chasespeed;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Console5Channel/source/Console5ChannelProc.cpp b/plugins/MacVST/Console5Channel/source/Console5ChannelProc.cpp
index 428e5e4..a010170 100755
--- a/plugins/MacVST/Console5Channel/source/Console5ChannelProc.cpp
+++ b/plugins/MacVST/Console5Channel/source/Console5ChannelProc.cpp
@@ -17,9 +17,6 @@ void Console5Channel::processReplacing(float **inputs, float **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -152,25 +149,14 @@ void Console5Channel::processReplacing(float **inputs, float **outputs, VstInt32
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -192,9 +178,6 @@ void Console5Channel::processDoubleReplacing(double **inputs, double **outputs,
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -327,25 +310,16 @@ void Console5Channel::processDoubleReplacing(double **inputs, double **outputs,
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser
index 22f68fb..a2f82e3 100755
--- a/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* Console5DarkCh */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 537050480;
- PBXWorkspaceStateSaveDate = 537050480;
+ PBXPerProjectTemplateStateSaveDate = 569734052;
+ PBXWorkspaceStateSaveDate = 569734052;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* Console5DarkCh */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3
index 023b57c..ccf0ad5 100755
--- a/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>634 254 810 487 0 0 1440 878 </string>
+ <string>630 254 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -362,7 +362,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>634 254 810 487 0 0 1440 878 </string>
+ <string>630 254 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -387,7 +387,7 @@
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
- <string>634 254 810 487 0 0 1440 878 </string>
+ <string>630 254 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4D275E2002BF6F0051360A</string>
+ <string>8B7936D021F573AD006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4D275F2002BF6F0051360A</string>
+ <string>8B7936D121F573AD006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B4D27602002BF6F0051360A</string>
+ <string>8B7936D221F573AD006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>537050991.40073204</real>
+ <real>569734061.13556397</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,10 +643,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/Console5DarkCh/Console5DarkCh.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>634 254 810 487 0 0 1440 878 </string>
+ <string>630 254 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/project.pbxproj b/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/project.pbxproj
index 5cebff5..3fc2cb2 100755
--- a/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* Console5DarkCh */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Console5DarkCh" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* Console5DarkCh */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.cpp b/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.cpp
index 0d613a9..350a6b3 100755
--- a/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.cpp
+++ b/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.cpp
@@ -22,11 +22,8 @@ Console5DarkCh::Console5DarkCh(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.h b/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.h
index 558e4f7..3265f5c 100755
--- a/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.h
+++ b/plugins/MacVST/Console5DarkCh/source/Console5DarkCh.h
@@ -61,11 +61,8 @@ private:
double gainchase;
double settingchase;
double chasespeed;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Console5DarkCh/source/Console5DarkChProc.cpp b/plugins/MacVST/Console5DarkCh/source/Console5DarkChProc.cpp
index e17ff88c..ba3a842 100755
--- a/plugins/MacVST/Console5DarkCh/source/Console5DarkChProc.cpp
+++ b/plugins/MacVST/Console5DarkCh/source/Console5DarkChProc.cpp
@@ -17,9 +17,6 @@ void Console5DarkCh::processReplacing(float **inputs, float **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -152,25 +149,14 @@ void Console5DarkCh::processReplacing(float **inputs, float **outputs, VstInt32
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -192,9 +178,6 @@ void Console5DarkCh::processDoubleReplacing(double **inputs, double **outputs, V
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -327,25 +310,16 @@ void Console5DarkCh::processDoubleReplacing(double **inputs, double **outputs, V
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser
index a62c485..9a892c1 100755
--- a/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541893950;
- PBXWorkspaceStateSaveDate = 541893950;
+ PBXPerProjectTemplateStateSaveDate = 569734086;
+ PBXWorkspaceStateSaveDate = 569734086;
+ };
+ perUserProjectItems = {
+ 8B79370021F573DE006E9731 /* PBXTextBookmark */ = 8B79370021F573DE006E9731 /* PBXTextBookmark */;
+ 8B79370121F573DE006E9731 /* PBXTextBookmark */ = 8B79370121F573DE006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -82,9 +86,9 @@
};
24D8286F09A914000093AEF8 /* CrunchyGrooveWearProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 15678}}";
- sepNavSelRange = "{25948, 0}";
- sepNavVisRange = "{40338, 2491}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 11635}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRange = "{0, 259}";
sepNavWindowFrame = "{{262, 47}, {895, 831}}";
};
};
@@ -102,6 +106,26 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
+ 8B79370021F573DE006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* CrunchyGrooveWearProc.cpp */;
+ name = "CrunchyGrooveWearProc.cpp: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 259;
+ vrLoc = 0;
+ };
+ 8B79370121F573DE006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* CrunchyGrooveWearProc.cpp */;
+ name = "CrunchyGrooveWearProc.cpp: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 259;
+ vrLoc = 0;
+ };
8D01CCC60486CAD60068D4B7 /* CrunchyGrooveWear */ = {
activeExec = 0;
};
diff --git a/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3
index c005614..62a585f 100755
--- a/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj/christopherjohnson.perspectivev3
@@ -300,6 +300,8 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
+ <integer>6</integer>
+ <integer>4</integer>
<integer>0</integer>
</array>
</array>
@@ -321,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>6 301 810 487 0 0 1440 878 </string>
+ <string>328 253 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -337,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Gain.h</string>
+ <string>CrunchyGrooveWearProc.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -345,7 +347,15 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Gain.h</string>
+ <string>CrunchyGrooveWearProc.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B79370121F573DE006E9731</string>
+ <key>history</key>
+ <array>
+ <string>8B79370021F573DE006E9731</string>
+ </array>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -358,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 0}}</string>
+ <string>{{0, 0}, {603, 132}}</string>
<key>RubberWindowFrame</key>
- <string>6 301 810 487 0 0 1440 878 </string>
+ <string>328 253 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>0pt</string>
+ <string>132pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>441pt</string>
+ <string>309pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -383,9 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 282}}</string>
<key>RubberWindowFrame</key>
- <string>6 301 810 487 0 0 1440 878 </string>
+ <string>328 253 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -467,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B181BE8204CA7DE00516BEE</string>
+ <string>8B79370221F573DE006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B181BE9204CA7DE00516BEE</string>
+ <string>8B79370321F573DE006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B181BEA204CA7DE00516BEE</string>
+ <string>8B79370421F573DE006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -624,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541894622.72385299</real>
+ <real>569734110.80127895</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -641,10 +651,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>6 301 810 487 0 0 1440 878 </string>
+ <string>328 253 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.cpp b/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.cpp
index 68a7fd9..6653b91 100755
--- a/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.cpp
+++ b/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.cpp
@@ -36,11 +36,8 @@ CrunchyGrooveWear::CrunchyGrooveWear(audioMasterCallback audioMaster) :
cMidPrevR = 0.0;
dMidPrevR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.h b/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.h
index ed304c5..3489e5b 100755
--- a/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.h
+++ b/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWear.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double aMidL[21];
diff --git a/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWearProc.cpp b/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWearProc.cpp
index 4eec93e..3c9762e 100755
--- a/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWearProc.cpp
+++ b/plugins/MacVST/CrunchyGrooveWear/source/CrunchyGrooveWearProc.cpp
@@ -14,9 +14,6 @@ void CrunchyGrooveWear::processReplacing(float **inputs, float **outputs, VstInt
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = (pow(A,2)*19.0)+1.0;
double gain = overallscale;
@@ -434,25 +431,14 @@ void CrunchyGrooveWear::processReplacing(float **inputs, float **outputs, VstInt
drySampleR = inputSampleR;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -471,9 +457,6 @@ void CrunchyGrooveWear::processDoubleReplacing(double **inputs, double **outputs
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = (pow(A,2)*19.0)+1.0;
double gain = overallscale;
@@ -891,25 +874,16 @@ void CrunchyGrooveWear::processDoubleReplacing(double **inputs, double **outputs
drySampleR = inputSampleR;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser
index bf745a3..d708fdd 100755
--- a/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* Crystal */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 566521896;
- PBXWorkspaceStateSaveDate = 566521896;
+ PBXPerProjectTemplateStateSaveDate = 569734133;
+ PBXWorkspaceStateSaveDate = 569734133;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* Crystal */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3
index a08084d..741397c 100755
--- a/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Crystal/Crystal.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -321,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>17 376 810 487 0 0 1440 878 </string>
+ <string>354 282 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -358,18 +360,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 102}}</string>
+ <string>{{0, 0}, {603, 86}}</string>
<key>RubberWindowFrame</key>
- <string>17 376 810 487 0 0 1440 878 </string>
+ <string>354 282 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>102pt</string>
+ <string>86pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>355pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -383,7 +385,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 312}}</string>
+ <string>{{10, 27}, {603, 328}}</string>
+ <key>RubberWindowFrame</key>
+ <string>354 282 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -438,8 +442,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 312}}</string>
- <key>RubberWindowFrame</key>
- <string>17 376 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -467,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBB351421C4819F00825986</string>
+ <string>8B79371721F57400006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBB351521C4819F00825986</string>
+ <string>8B79371821F57400006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBB351621C4819F00825986</string>
+ <string>8B79371921F57400006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -624,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>566526367.832932</real>
+ <real>569734144.20878696</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -641,11 +643,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBB351721C4819F00825986</string>
- <string>/Users/christopherjohnson/Desktop/Crystal/Crystal.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/Crystal/Crystal.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>17 376 810 487 0 0 1440 878 </string>
+ <string>354 282 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Crystal/Crystal.xcodeproj/project.pbxproj b/plugins/MacVST/Crystal/Crystal.xcodeproj/project.pbxproj
index 871c751..79cf9d3 100755
--- a/plugins/MacVST/Crystal/Crystal.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/Crystal/Crystal.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* Crystal */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Crystal" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* Crystal */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/Crystal/source/CrystalProc.cpp b/plugins/MacVST/Crystal/source/CrystalProc.cpp
index 9c62355..7e696a7 100755
--- a/plugins/MacVST/Crystal/source/CrystalProc.cpp
+++ b/plugins/MacVST/Crystal/source/CrystalProc.cpp
@@ -191,18 +191,14 @@ void Crystal::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
//when current and old samples are different from each other, otherwise you can't tell it's there.
//This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently.
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -212,12 +208,6 @@ void Crystal::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -404,18 +394,16 @@ void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//when current and old samples are different from each other, otherwise you can't tell it's there.
//This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently.
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -425,10 +413,4 @@ void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser
index 8adad26..d95b26c 100755
--- a/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* DCVoltage */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528459831;
- PBXWorkspaceStateSaveDate = 528459831;
+ PBXPerProjectTemplateStateSaveDate = 569734209;
+ PBXWorkspaceStateSaveDate = 569734209;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* DCVoltage */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3
index 2043a0b..a9ec7eb 100755
--- a/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/christopherjohnson.perspectivev3
@@ -360,18 +360,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>116 319 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -385,7 +385,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
<string>116 319 810 487 0 0 1440 878 </string>
</dict>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D78FC1F7FA875007AB60F</string>
+ <string>8B79375621F5744A006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D78FD1F7FA875007AB60F</string>
+ <string>8B79375721F5744A006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D78FE1F7FA875007AB60F</string>
+ <string>8B79375821F5744A006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528459893.06026101</real>
+ <real>569734218.48310196</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D78FF1F7FA875007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/DCVoltage/DCVoltage.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/project.pbxproj b/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/project.pbxproj
index b878c4e..ab1df43 100755
--- a/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/DCVoltage/DCVoltage.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* DCVoltage */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "DCVoltage" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* DCVoltage */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser
index 71fc919..fd07bbd 100755
--- a/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561683712;
- PBXWorkspaceStateSaveDate = 561683712;
+ PBXPerProjectTemplateStateSaveDate = 569734238;
+ PBXWorkspaceStateSaveDate = 569734238;
+ };
+ perUserProjectItems = {
+ 8B79377321F5746E006E9731 /* PBXTextBookmark */ = 8B79377321F5746E006E9731 /* PBXTextBookmark */;
+ 8B79377421F5746E006E9731 /* PBXTextBookmark */ = 8B79377421F5746E006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -82,9 +86,9 @@
};
24D8286F09A914000093AEF8 /* DeEssProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 4589}}";
- sepNavSelRange = "{10846, 0}";
- sepNavVisRange = "{9960, 1917}";
+ sepNavIntBoundsRect = "{{0, 0}, {796, 4355}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRange = "{4813, 714}";
sepNavWindowFrame = "{{47, 47}, {895, 831}}";
};
};
@@ -102,6 +106,26 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
+ 8B79377321F5746E006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* DeEssProc.cpp */;
+ name = "DeEssProc.cpp: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 211;
+ vrLoc = 0;
+ };
+ 8B79377421F5746E006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* DeEssProc.cpp */;
+ name = "DeEssProc.cpp: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 714;
+ vrLoc = 4813;
+ };
8D01CCC60486CAD60068D4B7 /* DeEss */ = {
activeExec = 0;
};
diff --git a/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3
index 51981f2..b85a83a 100755
--- a/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/DeEss/DeEss.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>5</integer>
+ <integer>6</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>12 385 810 487 0 0 1440 878 </string>
+ <string>304 315 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -339,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Gain.h</string>
+ <string>DeEssProc.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -347,7 +347,15 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Gain.h</string>
+ <string>DeEssProc.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B79377421F5746E006E9731</string>
+ <key>history</key>
+ <array>
+ <string>8B79377321F5746E006E9731</string>
+ </array>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -360,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 0}}</string>
+ <string>{{0, 0}, {603, 319}}</string>
<key>RubberWindowFrame</key>
- <string>12 385 810 487 0 0 1440 878 </string>
+ <string>304 315 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>0pt</string>
+ <string>319pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>441pt</string>
+ <string>122pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -385,9 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 95}}</string>
<key>RubberWindowFrame</key>
- <string>12 385 810 487 0 0 1440 878 </string>
+ <string>304 315 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -469,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B15DCFB217AA408007AD769</string>
+ <string>8B79377521F5746E006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B15DCFC217AA408007AD769</string>
+ <string>8B79377621F5746E006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B15DCFD217AA408007AD769</string>
+ <string>8B79377721F5746E006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561685512.74774003</real>
+ <real>569734254.77218902</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,12 +651,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B15DCFE217AA408007AD769</string>
- <string>8B15DCFF217AA408007AD769</string>
- <string>/Users/christopherjohnson/Desktop/DeEss/DeEss.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/DeEss/DeEss.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>12 385 810 487 0 0 1440 878 </string>
+ <string>304 315 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/DeEss/source/DeEssProc.cpp b/plugins/MacVST/DeEss/source/DeEssProc.cpp
index 9a8e14b..9b030a4 100755
--- a/plugins/MacVST/DeEss/source/DeEssProc.cpp
+++ b/plugins/MacVST/DeEss/source/DeEssProc.cpp
@@ -148,18 +148,14 @@ void DeEss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
flip = !flip;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -169,12 +165,6 @@ void DeEss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -318,18 +308,16 @@ void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
flip = !flip;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -339,10 +327,4 @@ void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser
index 70ab1db..570f388 100755
--- a/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553892432;
- PBXWorkspaceStateSaveDate = 553892432;
+ PBXPerProjectTemplateStateSaveDate = 569734376;
+ PBXWorkspaceStateSaveDate = 569734376;
};
perUserProjectItems = {
+ 8B7932CA21F4FB37006E9731 /* PBXTextBookmark */ = 8B7932CA21F4FB37006E9731 /* PBXTextBookmark */;
+ 8B7932CC21F4FB37006E9731 /* PBXTextBookmark */ = 8B7932CC21F4FB37006E9731 /* PBXTextBookmark */;
+ 8B7937B821F574F6006E9731 /* PBXTextBookmark */ = 8B7937B821F574F6006E9731 /* PBXTextBookmark */;
8BB8B70521039BF400751000 /* PBXTextBookmark */ = 8BB8B70521039BF400751000 /* PBXTextBookmark */;
- 8BB8B70721039BF400751000 /* PBXTextBookmark */ = 8BB8B70721039BF400751000 /* PBXTextBookmark */;
- 8BB8B7932103BA6200751000 /* PBXTextBookmark */ = 8BB8B7932103BA6200751000 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -63,25 +64,25 @@
};
2407DEB6089929BA00EB68BF /* DeRez.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1820}}";
- sepNavSelRange = "{3400, 0}";
- sepNavVisRange = "{2754, 2017}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 1833}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRange = "{0, 119}";
sepNavWindowFrame = "{{48, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* DeRez.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 988}}";
- sepNavSelRange = "{2648, 0}";
- sepNavVisRange = "{410, 2279}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 949}}";
+ sepNavSelRange = "{2439, 0}";
+ sepNavVisRange = "{361, 2262}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {838, 19864}}";
+ sepNavIntBoundsRect = "{{0, 0}, {838, 19851}}";
sepNavSelRange = "{10616, 0}";
- sepNavVisRange = "{10459, 280}";
+ sepNavVisRange = "{10579, 157}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
@@ -107,35 +108,45 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BB8B70521039BF400751000 /* PBXTextBookmark */ = {
+ 8B7932CA21F4FB37006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 24D8286F09A914000093AEF8 /* DeRezProc.cpp */;
- name = "DeRezProc.cpp: 71";
+ fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
+ name = "audioeffectx.cpp: 307";
rLen = 0;
- rLoc = 2818;
+ rLoc = 10616;
rType = 0;
- vrLen = 286;
- vrLoc = 2669;
+ vrLen = 157;
+ vrLoc = 10579;
};
- 8BB8B70721039BF400751000 /* PBXTextBookmark */ = {
+ 8B7932CC21F4FB37006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
- name = "audioeffectx.cpp: 307";
+ fRef = 2407DEB6089929BA00EB68BF /* DeRez.cpp */;
+ name = "DeRez.cpp: 1";
rLen = 0;
- rLoc = 10616;
+ rLoc = 0;
rType = 0;
- vrLen = 280;
- vrLoc = 10459;
+ vrLen = 167;
+ vrLoc = 0;
};
- 8BB8B7932103BA6200751000 /* PBXTextBookmark */ = {
+ 8B7937B821F574F6006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
- name = "audioeffectx.cpp: 307";
+ fRef = 2407DEB6089929BA00EB68BF /* DeRez.cpp */;
+ name = "DeRez.cpp: 1";
rLen = 0;
- rLoc = 10616;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 119;
+ vrLoc = 0;
+ };
+ 8BB8B70521039BF400751000 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* DeRezProc.cpp */;
+ name = "DeRezProc.cpp: 71";
+ rLen = 0;
+ rLoc = 2818;
rType = 0;
- vrLen = 280;
- vrLoc = 10459;
+ vrLen = 286;
+ vrLoc = 2669;
};
8D01CCC60486CAD60068D4B7 /* DeRez */ = {
activeExec = 0;
diff --git a/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3
index 9e76dbc..50aea9f 100755
--- a/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/DeRez/DeRez.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>10 338 810 487 0 0 1440 878 </string>
+ <string>396 274 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -339,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>audioeffectx.cpp</string>
+ <string>DeRez.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -347,15 +347,16 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>audioeffectx.cpp</string>
+ <string>DeRez.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BB8B7932103BA6200751000</string>
+ <string>8B7937B821F574F6006E9731</string>
<key>history</key>
<array>
<string>8BB8B70521039BF400751000</string>
- <string>8BB8B70721039BF400751000</string>
+ <string>8B7932CA21F4FB37006E9731</string>
+ <string>8B7932CC21F4FB37006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 102}}</string>
+ <string>{{0, 0}, {603, 69}}</string>
<key>RubberWindowFrame</key>
- <string>10 338 810 487 0 0 1440 878 </string>
+ <string>396 274 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>102pt</string>
+ <string>69pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>372pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +395,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 312}}</string>
+ <string>{{10, 27}, {603, 345}}</string>
<key>RubberWindowFrame</key>
- <string>10 338 810 487 0 0 1440 878 </string>
+ <string>396 274 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -478,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BB8B7942103BA6200751000</string>
+ <string>8B7937B921F574F6006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BB8B7952103BA6200751000</string>
+ <string>8B7937BA21F574F6006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BB8B7962103BA6200751000</string>
+ <string>8B7937BB21F574F6006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553892450.74727702</real>
+ <real>569734390.87989402</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,11 +653,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BB8B7972103BA6200751000</string>
<string>/Users/christopherjohnson/Desktop/MacVST/DeRez/DeRez.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>10 338 810 487 0 0 1440 878 </string>
+ <string>396 274 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/DeRez/source/DeRez.cpp b/plugins/MacVST/DeRez/source/DeRez.cpp
index 404127a..cb9b514 100755
--- a/plugins/MacVST/DeRez/source/DeRez.cpp
+++ b/plugins/MacVST/DeRez/source/DeRez.cpp
@@ -23,11 +23,8 @@ DeRez::DeRez(audioMasterCallback audioMaster) :
incrementA = 0.0;
incrementB = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/DeRez/source/DeRez.h b/plugins/MacVST/DeRez/source/DeRez.h
index 89338e8..8ebdcd9 100755
--- a/plugins/MacVST/DeRez/source/DeRez.h
+++ b/plugins/MacVST/DeRez/source/DeRez.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/MacVST/DeRez/source/DeRezProc.cpp b/plugins/MacVST/DeRez/source/DeRezProc.cpp
index 247a364..cbe42d5 100755
--- a/plugins/MacVST/DeRez/source/DeRezProc.cpp
+++ b/plugins/MacVST/DeRez/source/DeRezProc.cpp
@@ -17,8 +17,6 @@ void DeRez::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double targetA = pow(A,3)+0.0005;
if (targetA > 1.0) targetA = 1.0;
@@ -132,26 +130,14 @@ void DeRez::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
lastSampleL = drySampleL;
lastSampleR = drySampleR;
- //noise shaping to 32-bit floating point
- float fpTemp;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -173,8 +159,6 @@ void DeRez::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double targetA = pow(A,3)+0.0005;
if (targetA > 1.0) targetA = 1.0;
@@ -288,26 +272,16 @@ void DeRez::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
lastSampleL = drySampleL;
lastSampleR = drySampleR;
- //noise shaping to 64-bit floating point
- double fpTemp;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.pbxuser
index 514aca1..86b1d22 100755
--- a/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* Density */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528459901;
- PBXWorkspaceStateSaveDate = 528459901;
+ PBXPerProjectTemplateStateSaveDate = 569734277;
+ PBXWorkspaceStateSaveDate = 569734277;
+ };
+ perUserProjectItems = {
+ 8B79379F21F574D1006E9731 /* PBXTextBookmark */ = 8B79379F21F574D1006E9731 /* PBXTextBookmark */;
+ 8B7937A021F574D1006E9731 /* PBXTextBookmark */ = 8B7937A021F574D1006E9731 /* PBXTextBookmark */;
+ 8B7937A121F574D1006E9731 /* PBXTextBookmark */ = 8B7937A121F574D1006E9731 /* PBXTextBookmark */;
+ 8B7937A221F574D1006E9731 /* PBXTextBookmark */ = 8B7937A221F574D1006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -58,17 +64,17 @@
};
2407DEB6089929BA00EB68BF /* Density.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 2054}}";
- sepNavSelRange = "{505, 0}";
- sepNavVisRange = "{0, 1934}";
+ sepNavIntBoundsRect = "{{0, 0}, {719, 1989}}";
+ sepNavSelRange = "{631, 0}";
+ sepNavVisRange = "{322, 786}";
sepNavWindowFrame = "{{545, 36}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Density.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 1001}}";
- sepNavSelRange = "{2548, 85}";
- sepNavVisRange = "{425, 2333}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 962}}";
+ sepNavSelRange = "{2579, 0}";
+ sepNavVisRange = "{2169, 536}";
sepNavWindowFrame = "{{593, 47}, {895, 831}}";
};
};
@@ -82,9 +88,9 @@
};
24D8286F09A914000093AEF8 /* DensityProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 4602}}";
- sepNavSelRange = "{7190, 0}";
- sepNavVisRange = "{7245, 2459}";
+ sepNavIntBoundsRect = "{{0, 0}, {684, 4225}}";
+ sepNavSelRange = "{8807, 0}";
+ sepNavVisRange = "{8744, 275}";
sepNavWindowFrame = "{{545, 39}, {895, 831}}";
};
};
@@ -102,7 +108,47 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8B79379F21F574D1006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* DensityProc.cpp */;
+ name = "DensityProc.cpp: 240";
+ rLen = 0;
+ rLoc = 8807;
+ rType = 0;
+ vrLen = 275;
+ vrLoc = 8744;
+ };
+ 8B7937A021F574D1006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2407DEB6089929BA00EB68BF /* Density.cpp */;
+ name = "Density.cpp: 23";
+ rLen = 0;
+ rLoc = 631;
+ rType = 0;
+ vrLen = 786;
+ vrLoc = 322;
+ };
+ 8B7937A121F574D1006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 245463B80991757100464AD3 /* Density.h */;
+ name = "Density.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 446;
+ vrLoc = 0;
+ };
+ 8B7937A221F574D1006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 245463B80991757100464AD3 /* Density.h */;
+ name = "Density.h: 65";
+ rLen = 0;
+ rLoc = 2579;
+ rType = 0;
+ vrLen = 536;
+ vrLoc = 2169;
+ };
+ 8D01CCC60486CAD60068D4B7 /* Density */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.perspectivev3
index 3decba3..26b67da 100755
--- a/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Density/Density.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -300,7 +298,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>7</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -323,7 +321,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>612 109 810 487 0 0 1440 878 </string>
+ <string>374 322 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -334,12 +332,14 @@
<key>Dock</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>Density.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -347,7 +347,17 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string></string>
+ <string>Density.h</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B7937A221F574D1006E9731</string>
+ <key>history</key>
+ <array>
+ <string>8B79379F21F574D1006E9731</string>
+ <string>8B7937A021F574D1006E9731</string>
+ <string>8B7937A121F574D1006E9731</string>
+ </array>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -360,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 0}}</string>
+ <string>{{0, 0}, {603, 331}}</string>
<key>RubberWindowFrame</key>
- <string>612 109 810 487 0 0 1440 878 </string>
+ <string>374 322 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>0pt</string>
+ <string>331pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>441pt</string>
+ <string>110pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -386,8 +396,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>612 109 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -441,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
+ <string>{{10, 27}, {603, 83}}</string>
+ <key>RubberWindowFrame</key>
+ <string>374 322 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -469,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D79111F7FA891007AB60F</string>
+ <string>8B7937A321F574D1006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D79121F7FA891007AB60F</string>
+ <string>8B7937A421F574D1006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D79131F7FA891007AB60F</string>
+ <string>8B7937A521F574D1006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528459921.00240701</real>
+ <real>569734353.80657697</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,11 +653,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D79141F7FA891007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Density/Density.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>612 109 810 487 0 0 1440 878 </string>
+ <string>374 322 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Density/Density.xcodeproj/project.pbxproj b/plugins/MacVST/Density/Density.xcodeproj/project.pbxproj
index 649faa8..929f8f7 100755
--- a/plugins/MacVST/Density/Density.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/Density/Density.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* Density */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Density" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
+ 8D01CCC60486CAD60068D4B7 /* Density */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/Density/source/Density.cpp b/plugins/MacVST/Density/source/Density.cpp
index 1ecafde..bac4fb2 100755
--- a/plugins/MacVST/Density/source/Density.cpp
+++ b/plugins/MacVST/Density/source/Density.cpp
@@ -20,12 +20,9 @@ Density::Density(audioMasterCallback audioMaster) :
iirSampleBL = 0.0;
iirSampleAR = 0.0;
iirSampleBR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Density/source/Density.h b/plugins/MacVST/Density/source/Density.h
index 377d25d..b634c44 100755
--- a/plugins/MacVST/Density/source/Density.h
+++ b/plugins/MacVST/Density/source/Density.h
@@ -55,17 +55,14 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double iirSampleAL;
double iirSampleBL;
double iirSampleAR;
double iirSampleBR;
-
+ bool fpFlip;
float A;
float B;
float C;
diff --git a/plugins/MacVST/Density/source/DensityProc.cpp b/plugins/MacVST/Density/source/DensityProc.cpp
index 1e968c7..f229a9d 100755
--- a/plugins/MacVST/Density/source/DensityProc.cpp
+++ b/plugins/MacVST/Density/source/DensityProc.cpp
@@ -26,9 +26,6 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double out = fabs(density);
density = density * fabs(density);
double count;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -95,6 +92,7 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
inputSampleR -= iirSampleBR;
}
//highpass section
+ fpFlip = !fpFlip;
count = density;
while (count > 1.0)
@@ -150,25 +148,14 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -199,9 +186,6 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double out = fabs(density);
density = density * fabs(density);
double count;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -268,6 +252,7 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR -= iirSampleBR;
}
//highpass section
+ fpFlip = !fpFlip;
count = density;
while (count > 1.0)
@@ -323,25 +308,16 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.pbxuser
index 44f049e..9a65a01 100755
--- a/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* Desk */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528459930;
- PBXWorkspaceStateSaveDate = 528459930;
+ PBXPerProjectTemplateStateSaveDate = 569734422;
+ PBXWorkspaceStateSaveDate = 569734422;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* Desk */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3
index cc9907f..58a32ea 100755
--- a/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Desk/Desk.xcodeproj/christopherjohnson.perspectivev3
@@ -360,18 +360,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>430 335 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -385,7 +385,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
<string>430 335 810 487 0 0 1440 878 </string>
</dict>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D793A1F7FA950007AB60F</string>
+ <string>8B7937D821F57520006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D793B1F7FA950007AB60F</string>
+ <string>8B7937D921F57520006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D793C1F7FA950007AB60F</string>
+ <string>8B7937DA21F57520006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460112.51118302</real>
+ <real>569734432.71270597</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D793D1F7FA950007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Desk/Desk.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Desk/Desk.xcodeproj/project.pbxproj b/plugins/MacVST/Desk/Desk.xcodeproj/project.pbxproj
index a170a5b..43a43a9 100755
--- a/plugins/MacVST/Desk/Desk.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/Desk/Desk.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* Desk */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Desk" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* Desk */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/Desk/source/Desk.cpp b/plugins/MacVST/Desk/source/Desk.cpp
index 7a30943..9582f04 100755
--- a/plugins/MacVST/Desk/source/Desk.cpp
+++ b/plugins/MacVST/Desk/source/Desk.cpp
@@ -18,11 +18,8 @@ Desk::Desk(audioMasterCallback audioMaster) :
lastSampleR = 0.0;
lastOutSampleR = 0.0;
lastSlewR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Desk/source/Desk.h b/plugins/MacVST/Desk/source/Desk.h
index 8c5c398..f7f933d 100755
--- a/plugins/MacVST/Desk/source/Desk.h
+++ b/plugins/MacVST/Desk/source/Desk.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
long double lastSampleL;
diff --git a/plugins/MacVST/Desk/source/DeskProc.cpp b/plugins/MacVST/Desk/source/DeskProc.cpp
index a2bc92c..d53894b 100755
--- a/plugins/MacVST/Desk/source/DeskProc.cpp
+++ b/plugins/MacVST/Desk/source/DeskProc.cpp
@@ -29,9 +29,6 @@ void Desk::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
double bridgerectifier;
double combsample;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -151,25 +148,14 @@ void Desk::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
inputSampleR /= gain;
//end R
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -203,9 +189,6 @@ void Desk::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
double bridgerectifier;
double combsample;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -325,25 +308,16 @@ void Desk::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
inputSampleR /= gain;
//end R
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser
index bd49c38..e471115 100755
--- a/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460121;
- PBXWorkspaceStateSaveDate = 528460121;
+ PBXPerProjectTemplateStateSaveDate = 569734453;
+ PBXWorkspaceStateSaveDate = 569734453;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
diff --git a/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3
index 86141a5..eb5fa7d 100755
--- a/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Desk4/Desk4.xcodeproj/christopherjohnson.perspectivev3
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D794F1F7FA972007AB60F</string>
+ <string>8B7937F721F5753E006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D79501F7FA972007AB60F</string>
+ <string>8B7937F821F5753E006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D79511F7FA972007AB60F</string>
+ <string>8B7937F921F5753E006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460146.15257502</real>
+ <real>569734462.79320705</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D79521F7FA972007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Desk4/Desk4.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Desk4/source/Desk4.cpp b/plugins/MacVST/Desk4/source/Desk4.cpp
index a8e20a7..0a05d87 100755
--- a/plugins/MacVST/Desk4/source/Desk4.cpp
+++ b/plugins/MacVST/Desk4/source/Desk4.cpp
@@ -30,11 +30,8 @@ Desk4::Desk4(audioMasterCallback audioMaster) :
lastSlewR = 0.0;
gcount = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Desk4/source/Desk4.h b/plugins/MacVST/Desk4/source/Desk4.h
index fa09cd0..802ee47 100755
--- a/plugins/MacVST/Desk4/source/Desk4.h
+++ b/plugins/MacVST/Desk4/source/Desk4.h
@@ -70,11 +70,8 @@ private:
double lastSlewR;
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Desk4/source/Desk4Proc.cpp b/plugins/MacVST/Desk4/source/Desk4Proc.cpp
index 515436c..fd165b6 100755
--- a/plugins/MacVST/Desk4/source/Desk4Proc.cpp
+++ b/plugins/MacVST/Desk4/source/Desk4Proc.cpp
@@ -17,9 +17,6 @@ void Desk4::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double gain = (pow(A,2)*10)+0.0001;
double gaintrim = (pow(A,2)*2)+1.0;
@@ -229,25 +226,14 @@ void Desk4::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -269,9 +255,6 @@ void Desk4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double gain = (pow(A,2)*10)+0.0001;
double gaintrim = (pow(A,2)*2)+1.0;
@@ -481,25 +464,16 @@ void Desk4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.pbxuser
index 35d1267..f25d8b8 100755
--- a/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460155;
- PBXWorkspaceStateSaveDate = 528460155;
+ PBXPerProjectTemplateStateSaveDate = 569734484;
+ PBXWorkspaceStateSaveDate = 569734484;
};
perUserProjectItems = {
- 8B9D6B631F7EE05F007AB60F /* PBXTextBookmark */ = 8B9D6B631F7EE05F007AB60F /* PBXTextBookmark */;
- 8B9D79701F7FA98F007AB60F /* PBXTextBookmark */ = 8B9D79701F7FA98F007AB60F /* PBXTextBookmark */;
+ 8B79381621F5756D006E9731 /* PBXTextBookmark */ = 8B79381621F5756D006E9731 /* PBXTextBookmark */;
+ 8B79381721F5756D006E9731 /* PBXTextBookmark */ = 8B79381721F5756D006E9731 /* PBXTextBookmark */;
+ 8B79381821F5756D006E9731 /* PBXBookmark */ = 8B79381821F5756D006E9731 /* PBXBookmark */;
+ 8B79381921F5756D006E9731 /* PBXTextBookmark */ = 8B79381921F5756D006E9731 /* PBXTextBookmark */;
8BD79BE91DB421CA006FFA16 /* PBXTextBookmark */ = 8BD79BE91DB421CA006FFA16 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -63,17 +65,17 @@
};
2407DEB6089929BA00EB68BF /* Distance.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1729}}";
+ sepNavIntBoundsRect = "{{0, 0}, {740, 1664}}";
sepNavSelRange = "{460, 0}";
- sepNavVisRange = "{0, 2083}";
+ sepNavVisRange = "{0, 650}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Distance.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 1274}}";
- sepNavSelRange = "{2777, 0}";
- sepNavVisRange = "{2448, 79}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 1027}}";
+ sepNavSelRange = "{2723, 0}";
+ sepNavVisRange = "{509, 1342}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
@@ -87,9 +89,9 @@
};
24D8286F09A914000093AEF8 /* DistanceProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3939}}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 3562}}";
sepNavSelRange = "{7303, 0}";
- sepNavVisRange = "{812, 2313}";
+ sepNavVisRange = "{8890, 722}";
sepNavWindowFrame = "{{266, 47}, {895, 831}}";
};
};
@@ -107,25 +109,39 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6B631F7EE05F007AB60F /* PBXTextBookmark */ = {
+ 8B79381621F5756D006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* Distance.h */;
- name = "Distance.h: 78";
+ name = "Distance.h: 79";
rLen = 0;
- rLoc = 2777;
+ rLoc = 2723;
rType = 0;
- vrLen = 96;
- vrLoc = 2431;
+ vrLen = 1342;
+ vrLoc = 509;
};
- 8B9D79701F7FA98F007AB60F /* PBXTextBookmark */ = {
+ 8B79381721F5756D006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 245463B80991757100464AD3 /* Distance.h */;
- name = "Distance.h: 78";
+ fRef = 2407DEB6089929BA00EB68BF /* Distance.cpp */;
+ name = "Distance.cpp: 16";
+ rLen = 0;
+ rLoc = 460;
+ rType = 0;
+ vrLen = 650;
+ vrLoc = 0;
+ };
+ 8B79381821F5756D006E9731 /* PBXBookmark */ = {
+ isa = PBXBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* DistanceProc.cpp */;
+ };
+ 8B79381921F5756D006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* DistanceProc.cpp */;
+ name = "DistanceProc.cpp: 203";
rLen = 0;
- rLoc = 2777;
+ rLoc = 7303;
rType = 0;
- vrLen = 79;
- vrLoc = 2448;
+ vrLen = 722;
+ vrLoc = 8890;
};
8BD79BE91DB421CA006FFA16 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3
index 6450494..5df581a 100755
--- a/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Distance/Distance.xcodeproj/christopherjohnson.perspectivev3
@@ -339,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Distance.h</string>
+ <string>DistanceProc.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -347,15 +347,17 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Distance.h</string>
+ <string>DistanceProc.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D79701F7FA98F007AB60F</string>
+ <string>8B79381921F5756D006E9731</string>
<key>history</key>
<array>
<string>8BD79BE91DB421CA006FFA16</string>
- <string>8B9D6B631F7EE05F007AB60F</string>
+ <string>8B79381621F5756D006E9731</string>
+ <string>8B79381721F5756D006E9731</string>
+ <string>8B79381821F5756D006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 86}}</string>
+ <string>{{0, 0}, {603, 281}}</string>
<key>RubberWindowFrame</key>
<string>518 304 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>86pt</string>
+ <string>281pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>355pt</string>
+ <string>160pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,7 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
+ <string>{{10, 27}, {603, 133}}</string>
<key>RubberWindowFrame</key>
<string>518 304 810 487 0 0 1440 878 </string>
</dict>
@@ -478,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D79711F7FA98F007AB60F</string>
+ <string>8B79381A21F5756D006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D79721F7FA98F007AB60F</string>
+ <string>8B79381B21F5756D006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D79731F7FA98F007AB60F</string>
+ <string>8B79381C21F5756D006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +637,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460175.35196102</real>
+ <real>569734509.28240097</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,7 +654,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D79741F7FA98F007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Distance/Distance.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Distance/source/Distance.cpp b/plugins/MacVST/Distance/source/Distance.cpp
index bae55c1..7ccd8fb 100755
--- a/plugins/MacVST/Distance/source/Distance.cpp
+++ b/plugins/MacVST/Distance/source/Distance.cpp
@@ -16,11 +16,8 @@ Distance::Distance(audioMasterCallback audioMaster) :
B = 1.0;
thirdresultL = prevresultL = lastclampL = clampL = changeL = lastL = 0.0;
thirdresultR = prevresultR = lastclampR = clampR = changeR = lastR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Distance/source/Distance.h b/plugins/MacVST/Distance/source/Distance.h
index 52ecc14..5566f84 100755
--- a/plugins/MacVST/Distance/source/Distance.h
+++ b/plugins/MacVST/Distance/source/Distance.h
@@ -67,11 +67,8 @@ private:
double prevresultR;
double lastR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Distance/source/DistanceProc.cpp b/plugins/MacVST/Distance/source/DistanceProc.cpp
index bdf3c13..32eb3fa 100755
--- a/plugins/MacVST/Distance/source/DistanceProc.cpp
+++ b/plugins/MacVST/Distance/source/DistanceProc.cpp
@@ -28,9 +28,6 @@ void Distance::processReplacing(float **inputs, float **outputs, VstInt32 sample
double dry = 1.0-wet;
double bridgerectifier;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double drySampleL;
@@ -126,25 +123,14 @@ void Distance::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (drySampleR * dry)+(inputSampleR*wet);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -177,9 +163,6 @@ void Distance::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double dry = 1.0-wet;
double bridgerectifier;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double drySampleL;
@@ -275,25 +258,16 @@ void Distance::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (drySampleR * dry)+(inputSampleR*wet);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser
index 2fb0369..8e41741 100755
--- a/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 547768347;
- PBXWorkspaceStateSaveDate = 547768347;
+ PBXPerProjectTemplateStateSaveDate = 569734535;
+ PBXWorkspaceStateSaveDate = 569734535;
};
perUserProjectItems = {
- 8B7E3D4B20A6500200482CB5 /* PBXBookmark */ = 8B7E3D4B20A6500200482CB5 /* PBXBookmark */;
- 8B7E3D5420A6501D00482CB5 /* XCBuildMessageTextBookmark */ = 8B7E3D5420A6501D00482CB5 /* XCBuildMessageTextBookmark */;
+ 8B79383921F57592006E9731 /* PBXTextBookmark */ = 8B79383921F57592006E9731 /* PBXTextBookmark */;
+ 8B79383D21F57592006E9731 /* PBXTextBookmark */ = 8B79383D21F57592006E9731 /* PBXTextBookmark */;
8B7E3D5520A6501D00482CB5 /* PBXTextBookmark */ = 8B7E3D5520A6501D00482CB5 /* PBXTextBookmark */;
8B7E3D5B20A6501D00482CB5 /* PBXTextBookmark */ = 8B7E3D5B20A6501D00482CB5 /* PBXTextBookmark */;
};
@@ -80,15 +80,15 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}";
+ sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}";
sepNavSelRange = "{10616, 0}";
- sepNavVisRange = "{10459, 399}";
+ sepNavVisRange = "{10459, 280}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
24D8286F09A914000093AEF8 /* Distance2Proc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 7605}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 7371}}";
sepNavSelRange = "{21129, 0}";
sepNavVisRange = "{8249, 1763}";
sepNavWindowFrame = "{{0, 47}, {895, 831}}";
@@ -108,18 +108,25 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B7E3D4B20A6500200482CB5 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 24D8286F09A914000093AEF8 /* Distance2Proc.cpp */;
- };
- 8B7E3D5420A6501D00482CB5 /* XCBuildMessageTextBookmark */ = {
+ 8B79383921F57592006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- comments = "Deprecated conversion from string constant to 'char*'";
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
- fallbackIsa = XCBuildMessageTextBookmark;
- rLen = 1;
- rLoc = 306;
- rType = 1;
+ name = "audioeffectx.cpp: 307";
+ rLen = 0;
+ rLoc = 10616;
+ rType = 0;
+ vrLen = 280;
+ vrLoc = 10459;
+ };
+ 8B79383D21F57592006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* Distance2Proc.cpp */;
+ name = "Distance2Proc.cpp: 553";
+ rLen = 0;
+ rLoc = 21129;
+ rType = 0;
+ vrLen = 1763;
+ vrLoc = 8249;
};
8B7E3D5520A6501D00482CB5 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3
index 0268d65..7b0ef13 100755
--- a/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Distance2/Distance2.xcodeproj/christopherjohnson.perspectivev3
@@ -241,10 +241,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B7E3D5B20A6501D00482CB5</string>
+ <string>8B79383D21F57592006E9731</string>
<key>history</key>
<array>
- <string>8B7E3D4B20A6500200482CB5</string>
+ <string>8B7E3D5B20A6501D00482CB5</string>
</array>
</dict>
<key>SplitCount</key>
@@ -297,6 +297,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -390,10 +392,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B7E3D5520A6501D00482CB5</string>
+ <string>8B79383921F57592006E9731</string>
<key>history</key>
<array>
- <string>8B7E3D5420A6501D00482CB5</string>
+ <string>8B7E3D5520A6501D00482CB5</string>
</array>
</dict>
<key>SplitCount</key>
@@ -407,18 +409,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
<string>20 288 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -432,7 +434,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>20 288 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -487,8 +491,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>20 288 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -516,11 +518,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B7E3D5620A6501D00482CB5</string>
+ <string>8B79383A21F57592006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B7E3D5720A6501D00482CB5</string>
+ <string>8B79383B21F57592006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B7E3D5820A6501D00482CB5</string>
+ <string>8B79383C21F57592006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -673,7 +675,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>547770397.97323096</real>
+ <real>569734546.43575704</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -691,7 +693,7 @@
<key>WindowOrderList</key>
<array>
<string>8B7E3D5920A6501D00482CB5</string>
- <string>/Users/christopherjohnson/Desktop/Distance2/Distance2.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/Distance2/Distance2.xcodeproj</string>
</array>
<key>WindowString</key>
<string>20 288 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/Distance2/source/Distance2Proc.cpp b/plugins/MacVST/Distance2/source/Distance2Proc.cpp
index ef5bf5b..473f3c8 100755
--- a/plugins/MacVST/Distance2/source/Distance2Proc.cpp
+++ b/plugins/MacVST/Distance2/source/Distance2Proc.cpp
@@ -266,18 +266,14 @@ void Distance2::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -287,12 +283,6 @@ void Distance2::processReplacing(float **inputs, float **outputs, VstInt32 sampl
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -554,18 +544,16 @@ void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -575,10 +563,4 @@ void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser
new file mode 100755
index 0000000..1fc2619
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser
@@ -0,0 +1,131 @@
+// !$*UTF8*$!
+{
+ 089C1669FE841209C02AAC07 /* Project object */ = {
+ activeBuildConfigurationName = Release;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* DitherFloat */;
+ codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
+ perUserDictionary = {
+ PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 364,
+ 20,
+ 48,
+ 43,
+ 43,
+ 20,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ PBXFileDataSource_Target_ColumnID,
+ );
+ };
+ PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 324,
+ 60,
+ 20,
+ 48,
+ 43,
+ 43,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXTargetDataSource_PrimaryAttribute,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ );
+ };
+ PBXPerProjectTemplateStateSaveDate = 569801710;
+ PBXWorkspaceStateSaveDate = 569801710;
+ };
+ perUserProjectItems = {
+ 8BEF85B121F6801400FEF113 /* XCBuildMessageTextBookmark */ = 8BEF85B121F6801400FEF113 /* XCBuildMessageTextBookmark */;
+ 8BEF85B621F6802400FEF113 /* PBXTextBookmark */ = 8BEF85B621F6802400FEF113 /* PBXTextBookmark */;
+ };
+ sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
+ userBuildSettings = {
+ };
+ };
+ 2407DEB6089929BA00EB68BF /* DitherFloat.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1664}}";
+ sepNavSelRange = "{3601, 0}";
+ sepNavVisRange = "{2649, 2103}";
+ sepNavWindowFrame = "{{166, 47}, {895, 831}}";
+ };
+ };
+ 245463B80991757100464AD3 /* DitherFloat.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {866, 845}}";
+ sepNavSelRange = "{2508, 0}";
+ sepNavVisRange = "{292, 2228}";
+ sepNavWindowFrame = "{{20, 47}, {895, 831}}";
+ };
+ };
+ 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {859, 20267}}";
+ sepNavSelRange = "{10616, 0}";
+ sepNavVisRange = "{9653, 2414}";
+ sepNavWindowFrame = "{{15, 42}, {895, 831}}";
+ };
+ };
+ 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {649, 2652}}";
+ sepNavSelRange = "{569, 0}";
+ sepNavVisRange = "{451, 169}";
+ sepNavWindowFrame = "{{68, 47}, {895, 831}}";
+ };
+ };
+ 8B02375E1D42B1C400E1E8C8 /* Source Control */ = {
+ isa = PBXSourceControlManager;
+ fallbackIsa = XCSourceControlManager;
+ isSCMEnabled = 0;
+ scmConfiguration = {
+ repositoryNamesForRoots = {
+ "" = "";
+ };
+ };
+ };
+ 8B02375F1D42B1C400E1E8C8 /* Code sense */ = {
+ isa = PBXCodeSenseManager;
+ indexTemplatePath = "";
+ };
+ 8BEF85B121F6801400FEF113 /* XCBuildMessageTextBookmark */ = {
+ isa = PBXTextBookmark;
+ comments = "Unused variable 'blend'";
+ fRef = 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */;
+ fallbackIsa = XCBuildMessageTextBookmark;
+ rLen = 1;
+ rLoc = 21;
+ rType = 1;
+ };
+ 8BEF85B621F6802400FEF113 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */;
+ name = "DitherFloatProc.cpp: 22";
+ rLen = 0;
+ rLoc = 569;
+ rType = 0;
+ vrLen = 169;
+ vrLoc = 451;
+ };
+ 8D01CCC60486CAD60068D4B7 /* DitherFloat */ = {
+ activeExec = 0;
+ };
+}
diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3
new file mode 100755
index 0000000..3612d29
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3
@@ -0,0 +1,1508 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>ActivePerspectiveName</key>
+ <string>Project</string>
+ <key>AllowedModules</key>
+ <array>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Name</key>
+ <string>Groups and Files Outline View</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Name</key>
+ <string>Editor</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCTaskListModule</string>
+ <key>Name</key>
+ <string>Task List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Name</key>
+ <string>File and Smart Group Detail Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Name</key>
+ <string>Detailed Build Results Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Name</key>
+ <string>Project Batch Find Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Name</key>
+ <string>Project Format Conflicts List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Name</key>
+ <string>Bookmarks Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Name</key>
+ <string>Class Browser</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Name</key>
+ <string>Source Code Control Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXDebugBreakpointsModule</string>
+ <key>Name</key>
+ <string>Debug Breakpoints Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDockableInspector</string>
+ <key>Name</key>
+ <string>Inspector</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXOpenQuicklyModule</string>
+ <key>Name</key>
+ <string>Open Quickly Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Name</key>
+ <string>Debugger</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Name</key>
+ <string>Debug Console</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Name</key>
+ <string>Snapshots Tool</string>
+ </dict>
+ </array>
+ <key>BundlePath</key>
+ <string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string>
+ <key>Description</key>
+ <string>AIODescriptionKey</string>
+ <key>DockingSystemVisible</key>
+ <false/>
+ <key>Extension</key>
+ <string>perspectivev3</string>
+ <key>FavBarConfig</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8B02375D1D42B1C400E1E8C8</string>
+ <key>XCBarModuleItemNames</key>
+ <dict/>
+ <key>XCBarModuleItems</key>
+ <array/>
+ </dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>com.apple.perspectives.project.defaultV3</string>
+ <key>MajorVersion</key>
+ <integer>34</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>All-In-One</string>
+ <key>Notifications</key>
+ <array>
+ <dict>
+ <key>XCObserverAutoDisconnectKey</key>
+ <true/>
+ <key>XCObserverDefintionKey</key>
+ <dict>
+ <key>PBXStatusErrorsKey</key>
+ <integer>0</integer>
+ </dict>
+ <key>XCObserverFactoryKey</key>
+ <string>XCPerspectivesSpecificationIdentifier</string>
+ <key>XCObserverGUIDKey</key>
+ <string>XCObserverProjectIdentifier</string>
+ <key>XCObserverNotificationKey</key>
+ <string>PBXStatusBuildStateMessageNotification</string>
+ <key>XCObserverTargetKey</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>XCObserverTriggerKey</key>
+ <string>awakenModuleWithObserver:</string>
+ <key>XCObserverValidationKey</key>
+ <dict>
+ <key>PBXStatusErrorsKey</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ </array>
+ <key>OpenEditors</key>
+ <array/>
+ <key>PerspectiveWidths</key>
+ <array>
+ <integer>810</integer>
+ <integer>810</integer>
+ </array>
+ <key>Perspectives</key>
+ <array>
+ <dict>
+ <key>ChosenToolbarItems</key>
+ <array>
+ <string>XCToolbarPerspectiveControl</string>
+ <string>NSToolbarSeparatorItem</string>
+ <string>active-combo-popup</string>
+ <string>action</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>debugger-enable-breakpoints</string>
+ <string>build-and-go</string>
+ <string>com.apple.ide.PBXToolbarStopButton</string>
+ <string>get-info</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>com.apple.pbx.toolbar.searchfield</string>
+ </array>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProject</string>
+ <key>Identifier</key>
+ <string>perspective.project</string>
+ <key>IsVertical</key>
+ <false/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA23ED40692098700951B8B</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>185</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>089C166AFE841209C02AAC07</string>
+ <string>08FB77ADFE841716C02AAC07</string>
+ <string>1C37FBAC04509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>6</integer>
+ <integer>4</integer>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {185, 428}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <false/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {202, 446}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>185</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>291 285 810 487 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>202pt</string>
+ </dict>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8B0237581D42B1C400E1E8C8</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>DitherFloatProc.cpp</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8B0237591D42B1C400E1E8C8</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>DitherFloatProc.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8BEF85B621F6802400FEF113</string>
+ <key>history</key>
+ <array>
+ <string>8BEF85B121F6801400FEF113</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.CommonNavigatorGroupSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {603, 132}}</string>
+ <key>RubberWindowFrame</key>
+ <string>291 285 810 487 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>132pt</string>
+ </dict>
+ <dict>
+ <key>Proportion</key>
+ <string>309pt</string>
+ <key>Tabs</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA23EDF0692099D00951B8B</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{10, 27}, {603, 414}}</string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA23EE00692099D00951B8B</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Project Find</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{10, 31}, {603, 297}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXCVSModuleFilterTypeKey</key>
+ <integer>1032</integer>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA23EE10692099D00951B8B</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>SCM Results</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{10, 31}, {603, 297}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Build Results</string>
+ <key>XCBuildResultsTrigger_Collapse</key>
+ <integer>1023</integer>
+ <key>XCBuildResultsTrigger_Open</key>
+ <integer>1012</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{10, 27}, {603, 282}}</string>
+ <key>RubberWindowFrame</key>
+ <string>291 285 810 487 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>603pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCModuleDock</string>
+ <string>PBXNavigatorGroup</string>
+ <string>XCDockableTabModule</string>
+ <string>XCDetailModule</string>
+ <string>PBXProjectFindModule</string>
+ <string>PBXCVSModule</string>
+ <string>PBXBuildResultsModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>8BEF853D21F67C3100FEF113</string>
+ <string>1CA23ED40692098700951B8B</string>
+ <string>8BEF853E21F67C3100FEF113</string>
+ <string>8B0237581D42B1C400E1E8C8</string>
+ <string>8BEF853F21F67C3100FEF113</string>
+ <string>1CA23EDF0692099D00951B8B</string>
+ <string>1CA23EE00692099D00951B8B</string>
+ <string>1CA23EE10692099D00951B8B</string>
+ <string>XCMainBuildResultsModuleGUID</string>
+ </array>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.defaultV3</string>
+ </dict>
+ <dict>
+ <key>ChosenToolbarItems</key>
+ <array>
+ <string>XCToolbarPerspectiveControl</string>
+ <string>NSToolbarSeparatorItem</string>
+ <string>active-combo-popup</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>debugger-enable-breakpoints</string>
+ <string>build-and-go</string>
+ <string>com.apple.ide.PBXToolbarStopButton</string>
+ <string>debugger-restart-executable</string>
+ <string>debugger-pause</string>
+ <string>debugger-step-over</string>
+ <string>debugger-step-into</string>
+ <string>debugger-step-out</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>servicesModulebreakpoints</string>
+ <string>debugger-show-console-window</string>
+ </array>
+ <key>ControllerClassBaseName</key>
+ <string>PBXDebugSessionModule</string>
+ <key>IconName</key>
+ <string>DebugTabIcon</string>
+ <key>Identifier</key>
+ <string>perspective.debug</string>
+ <key>IsVertical</key>
+ <integer>1</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CCC7628064C1048000F2A68</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debugger Console</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {810, 0}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Proportion</key>
+ <string>0%</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>Debugger</key>
+ <dict>
+ <key>HorizontalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {395, 213}}</string>
+ <string>{{395, 0}, {415, 213}}</string>
+ </array>
+ </dict>
+ <key>VerticalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {810, 213}}</string>
+ <string>{{0, 213}, {810, 225}}</string>
+ </array>
+ </dict>
+ </dict>
+ <key>LauncherConfigVersion</key>
+ <string>8</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CCC7629064C1048000F2A68</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debug</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>DebugConsoleDrawerSize</key>
+ <string>{100, 120}</string>
+ <key>DebugConsoleVisible</key>
+ <string>None</string>
+ <key>DebugConsoleWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>DebugSTDIOWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>Frame</key>
+ <string>{{0, 7}, {810, 438}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Proportion</key>
+ <string>443pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debug</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>XCModuleDock</string>
+ <string>PBXDebugCLIModule</string>
+ <string>PBXDebugSessionModule</string>
+ <string>XCConsole</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CC8E6A5069209BD00BB180A</string>
+ <string>1CC8E6A6069209BD00BB180A</string>
+ <string>1CCC7628064C1048000F2A68</string>
+ <string>1CCC7629064C1048000F2A68</string>
+ <string>1CC8E6A7069209BD00BB180A</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugV3</string>
+ </dict>
+ </array>
+ <key>PerspectivesBarVisible</key>
+ <true/>
+ <key>ShelfIsVisible</key>
+ <false/>
+ <key>SourceDescription</key>
+ <string>file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecification.xcperspec'</string>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TimeStamp</key>
+ <real>569802788.52883804</real>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarDisplayMode</key>
+ <integer>1</integer>
+ <key>ToolbarIsVisible</key>
+ <true/>
+ <key>ToolbarSizeMode</key>
+ <integer>2</integer>
+ <key>Type</key>
+ <string>Perspectives</string>
+ <key>UpdateMessage</key>
+ <string></string>
+ <key>WindowJustification</key>
+ <integer>5</integer>
+ <key>WindowOrderList</key>
+ <array>
+ <string>/Users/christopherjohnson/Desktop/DitherFloat/DitherFloat.xcodeproj</string>
+ </array>
+ <key>WindowString</key>
+ <string>291 285 810 487 0 0 1440 878 </string>
+ <key>WindowToolsV3</key>
+ <array>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugger</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>Debugger</key>
+ <dict>
+ <key>HorizontalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {317, 164}}</string>
+ <string>{{317, 0}, {377, 164}}</string>
+ </array>
+ </dict>
+ <key>VerticalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {694, 164}}</string>
+ <string>{{0, 164}, {694, 216}}</string>
+ </array>
+ </dict>
+ </dict>
+ <key>LauncherConfigVersion</key>
+ <string>8</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C162984064C10D400B95A72</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debug - GLUTExamples (Underwater)</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>DebugConsoleDrawerSize</key>
+ <string>{100, 120}</string>
+ <key>DebugConsoleVisible</key>
+ <string>None</string>
+ <key>DebugConsoleWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>DebugSTDIOWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>Frame</key>
+ <string>{{0, 0}, {694, 380}}</string>
+ <key>RubberWindowFrame</key>
+ <string>321 238 694 422 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugSessionModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <string>1C0AD2AB069F1E9B00FABCE6</string>
+ <string>1C162984064C10D400B95A72</string>
+ <string>1C0AD2AC069F1E9B00FABCE6</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugV3</string>
+ <key>WindowString</key>
+ <string>321 238 694 422 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.build</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528F0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD052900623707200166675</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {500, 215}}</string>
+ <key>RubberWindowFrame</key>
+ <string>192 257 500 500 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>218pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Build Results</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 222}, {500, 236}}</string>
+ <key>RubberWindowFrame</key>
+ <string>192 257 500 500 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Proportion</key>
+ <string>236pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>458pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Build Results</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBuildResultsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAA5065D492600B07095</string>
+ <string>1C78EAA6065D492600B07095</string>
+ <string>1CD0528F0623707200166675</string>
+ <string>XCMainBuildResultsModuleGUID</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.buildV3</string>
+ <key>WindowString</key>
+ <string>192 257 500 500 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.find</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CDD528C0622207200134675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528D0623707200166675</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {781, 167}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>781pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528E0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Project Find</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{8, 0}, {773, 254}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>428pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Find</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXProjectFindModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <string>1C530D58069F1CE1000CFCEE</string>
+ <string>1C530D59069F1CE1000CFCEE</string>
+ <string>1CDD528C0622207200134675</string>
+ <string>1C530D5A069F1CE1000CFCEE</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CD0528E0623707200166675</string>
+ </array>
+ <key>WindowString</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.snapshots</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Snapshots</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCSnapshotModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <string>Yes</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.snapshots</string>
+ <key>WindowString</key>
+ <string>315 824 300 550 0 0 1440 878 </string>
+ <key>WindowToolIsVisible</key>
+ <string>Yes</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debuggerConsole</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAAC065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debugger Console</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {700, 358}}</string>
+ <key>RubberWindowFrame</key>
+ <string>149 87 700 400 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Proportion</key>
+ <string>358pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>358pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger Console</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugCLIModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C530D5B069F1CE1000CFCEE</string>
+ <string>1C530D5C069F1CE1000CFCEE</string>
+ <string>1C78EAAC065D492600B07095</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.consoleV3</string>
+ <key>WindowString</key>
+ <string>149 87 440 400 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C530D5B069F1CE1000CFCEE</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.scm</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB2065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB3065D492600B07095</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {452, 0}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>0pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD052920623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>SCM</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ConsoleFrame</key>
+ <string>{{0, 259}, {452, 0}}</string>
+ <key>Frame</key>
+ <string>{{0, 7}, {452, 259}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ <key>TableConfiguration</key>
+ <array>
+ <string>Status</string>
+ <real>30</real>
+ <string>FileName</string>
+ <real>199</real>
+ <string>Path</string>
+ <real>197.09500122070312</real>
+ </array>
+ <key>TableFrame</key>
+ <string>{{0, 0}, {452, 250}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Proportion</key>
+ <string>262pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>266pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>SCM</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXCVSModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAB4065D492600B07095</string>
+ <string>1C78EAB5065D492600B07095</string>
+ <string>1C78EAB2065D492600B07095</string>
+ <string>1CD052920623707200166675</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.scmV3</string>
+ <key>WindowString</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.breakpoints</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>no</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>168</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {168, 350}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>0</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {185, 368}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>168</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>185pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA1AED706398EBD00589147</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{190, 0}, {554, 368}}</string>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>554pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>368pt</string>
+ </dict>
+ </array>
+ <key>MajorVersion</key>
+ <integer>3</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Breakpoints</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <string>1CDDB66907F98D9800BB5817</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CA1AED706398EBD00589147</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.breakpointsV3</string>
+ <key>WindowString</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <key>WindowToolIsVisible</key>
+ <integer>1</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugAnimator</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debug Visualizer</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXNavigatorGroup</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugAnimatorV3</string>
+ <key>WindowString</key>
+ <string>100 100 700 500 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.bookmarks</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Proportion</key>
+ <string>166pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>166pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Bookmarks</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBookmarksModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowString</key>
+ <string>538 42 401 187 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.projectFormatConflicts</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <true/>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8BCAE52E1D49920D0047D4BD</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {472, 302}}</string>
+ <key>RubberWindowFrame</key>
+ <string>569 378 472 322 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Proportion</key>
+ <string>302pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>302pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Format Conflicts</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCProjectFormatConflictsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <false/>
+ <key>TableOfContents</key>
+ <array>
+ <string>8BCAE52F1D49920D0047D4BD</string>
+ <string>8BCAE5301D49920D0047D4BD</string>
+ <string>8BCAE52E1D49920D0047D4BD</string>
+ </array>
+ <key>WindowContentMinSize</key>
+ <string>450 300</string>
+ <key>WindowString</key>
+ <string>569 378 472 322 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>8BCAE52F1D49920D0047D4BD</string>
+ <key>WindowToolIsVisible</key>
+ <false/>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.classBrowser</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>OptionsSetName</key>
+ <string>Hierarchy, all classes</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA6456E063B45B4001379D8</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Class Browser - NSObject</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ClassesFrame</key>
+ <string>{{0, 0}, {369, 96}}</string>
+ <key>ClassesTreeTableConfiguration</key>
+ <array>
+ <string>PBXClassNameColumnIdentifier</string>
+ <real>208</real>
+ <string>PBXClassBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>Frame</key>
+ <string>{{0, 0}, {616, 353}}</string>
+ <key>MembersFrame</key>
+ <string>{{0, 105}, {369, 395}}</string>
+ <key>MembersTreeTableConfiguration</key>
+ <array>
+ <string>PBXMemberTypeIconColumnIdentifier</string>
+ <real>22</real>
+ <string>PBXMemberNameColumnIdentifier</string>
+ <real>216</real>
+ <string>PBXMemberTypeColumnIdentifier</string>
+ <real>94</real>
+ <string>PBXMemberBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <integer>1</integer>
+ <key>RubberWindowFrame</key>
+ <string>597 125 616 374 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Proportion</key>
+ <string>354pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>354pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Class Browser</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXClassBrowserModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EABA065D492600B07095</string>
+ <string>1C78EABB065D492600B07095</string>
+ <string>1CA6456E063B45B4001379D8</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.classbrowser</string>
+ <key>WindowString</key>
+ <string>597 125 616 374 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.refactoring</string>
+ <key>IncludeInToolsMenu</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{0, 0}, {500, 335}</string>
+ <key>RubberWindowFrame</key>
+ <string>{0, 0}, {500, 335}</string>
+ </dict>
+ <key>Module</key>
+ <string>XCRefactoringModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Refactoring</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCRefactoringModule</string>
+ </array>
+ <key>WindowString</key>
+ <string>200 200 500 356 0 0 1920 1200 </string>
+ </dict>
+ </array>
+</dict>
+</plist>
diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.pbxproj b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.pbxproj
new file mode 100755
index 0000000..eac959a
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.pbxproj
@@ -0,0 +1,2201 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 42;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 2407DEB9089929BA00EB68BF /* DitherFloat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2407DEB6089929BA00EB68BF /* DitherFloat.cpp */; };
+ 245463B90991757100464AD3 /* DitherFloat.h in Headers */ = {isa = PBXBuildFile; fileRef = 245463B80991757100464AD3 /* DitherFloat.h */; };
+ 24A202190F90D1DE003BB5A7 /* aeffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FF910F90D1DD003BB5A7 /* aeffect.h */; };
+ 24A2021A0F90D1DE003BB5A7 /* aeffectx.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FF920F90D1DD003BB5A7 /* aeffectx.h */; };
+ 24A2021B0F90D1DE003BB5A7 /* vstfxstore.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FF930F90D1DD003BB5A7 /* vstfxstore.h */; };
+ 24A2021D0F90D1DE003BB5A7 /* adelay.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FF990F90D1DD003BB5A7 /* adelay.h */; };
+ 24A202240F90D1DE003BB5A7 /* sdeditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFA20F90D1DD003BB5A7 /* sdeditor.h */; };
+ 24A202260F90D1DE003BB5A7 /* surrounddelay.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFA40F90D1DD003BB5A7 /* surrounddelay.h */; };
+ 24A2022A0F90D1DE003BB5A7 /* again.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFAB0F90D1DD003BB5A7 /* again.h */; };
+ 24A202330F90D1DE003BB5A7 /* gmnames.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFBF0F90D1DD003BB5A7 /* gmnames.h */; };
+ 24A202350F90D1DE003BB5A7 /* vstxsynth.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFC10F90D1DD003BB5A7 /* vstxsynth.h */; };
+ 24A202460F90D1DE003BB5A7 /* aeffeditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFD80F90D1DD003BB5A7 /* aeffeditor.h */; };
+ 24A202480F90D1DE003BB5A7 /* audioeffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFDA0F90D1DD003BB5A7 /* audioeffect.h */; };
+ 24A2024A0F90D1DE003BB5A7 /* audioeffectx.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFDC0F90D1DD003BB5A7 /* audioeffectx.h */; };
+ 24A2024D0F90D1DE003BB5A7 /* cw_vst_prefix.pch++ in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFE20F90D1DD003BB5A7 /* cw_vst_prefix.pch++ */; };
+ 24A202510F90D1DE003BB5A7 /* xcode_au_prefix.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFEC0F90D1DD003BB5A7 /* xcode_au_prefix.h */; };
+ 24A202520F90D1DE003BB5A7 /* xcode_vst_prefix.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2FFED0F90D1DD003BB5A7 /* xcode_vst_prefix.h */; };
+ 24A202680F90D1DE003BB5A7 /* controlsgui.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A200050F90D1DD003BB5A7 /* controlsgui.h */; };
+ 24A2026A0F90D1DE003BB5A7 /* pdrawtesteditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A200070F90D1DD003BB5A7 /* pdrawtesteditor.h */; };
+ 24A2026C0F90D1DE003BB5A7 /* pdrawtesteffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A200090F90D1DD003BB5A7 /* pdrawtesteffect.h */; };
+ 24A2026F0F90D1DE003BB5A7 /* pdrawtestview.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2000C0F90D1DD003BB5A7 /* pdrawtestview.h */; };
+ 24A202710F90D1DE003BB5A7 /* pprimitivesviews.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2000E0F90D1DD003BB5A7 /* pprimitivesviews.h */; };
+ 24A202780F90D1DE003BB5A7 /* aeffguieditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A200180F90D1DD003BB5A7 /* aeffguieditor.h */; };
+ 24A2027A0F90D1DE003BB5A7 /* cfileselector.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2001A0F90D1DD003BB5A7 /* cfileselector.h */; };
+ 24A2027D0F90D1DE003BB5A7 /* cscrollview.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2001D0F90D1DD003BB5A7 /* cscrollview.h */; };
+ 24A2027F0F90D1DE003BB5A7 /* ctabview.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2001F0F90D1DD003BB5A7 /* ctabview.h */; };
+ 24A203A50F90D1DE003BB5A7 /* plugguieditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A201470F90D1DE003BB5A7 /* plugguieditor.h */; };
+ 24A203A70F90D1DE003BB5A7 /* vstcontrols.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A201490F90D1DE003BB5A7 /* vstcontrols.h */; };
+ 24A203A90F90D1DE003BB5A7 /* vstgui.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2014B0F90D1DE003BB5A7 /* vstgui.h */; };
+ 24A203AA0F90D1DE003BB5A7 /* vstkeycode.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2014C0F90D1DE003BB5A7 /* vstkeycode.h */; };
+ 24A203AB0F90D1DE003BB5A7 /* vstplugscarbon.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2014D0F90D1DE003BB5A7 /* vstplugscarbon.h */; };
+ 24A203AC0F90D1DE003BB5A7 /* vstplugsmac.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2014E0F90D1DE003BB5A7 /* vstplugsmac.h */; };
+ 24A203AD0F90D1DE003BB5A7 /* vstplugsmacho.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2014F0F90D1DE003BB5A7 /* vstplugsmacho.h */; };
+ 24A203AE0F90D1DE003BB5A7 /* vstplugsquartz.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A201500F90D1DE003BB5A7 /* vstplugsquartz.h */; };
+ 24A203CB0F90D251003BB5A7 /* audioeffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24A2FFD90F90D1DD003BB5A7 /* audioeffect.cpp */; };
+ 24A203CC0F90D251003BB5A7 /* audioeffectx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */; };
+ 24A203CD0F90D251003BB5A7 /* vstplugmain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24A2FFDD0F90D1DD003BB5A7 /* vstplugmain.cpp */; };
+ 24CFB70407E7A0220081BD57 /* PkgInfo in Resources */ = {isa = PBXBuildFile; fileRef = 24CFB70307E7A0220081BD57 /* PkgInfo */; };
+ 24D8287009A914000093AEF8 /* DitherFloatProc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */; };
+ 24D8287F09A9164A0093AEF8 /* xcode_vst_prefix.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 24A203D60F90D272003BB5A7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 8D01CCD20486CAD60068D4B7;
+ remoteInfo = again;
+ };
+ 24A203D80F90D272003BB5A7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = F4476974093DAE42008998C4;
+ remoteInfo = adelay;
+ };
+ 24A203DA0F90D272003BB5A7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = F4FF52220929FBF500DDED7A;
+ remoteInfo = vstxsynth;
+ };
+ 24A203DC0F90D272003BB5A7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = F4476A10093DCAF9008998C4;
+ remoteInfo = surrounddelay;
+ };
+ 24A203DE0F90D272003BB5A7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = F4FF52F3092A312800DDED7A;
+ remoteInfo = minihost;
+ };
+ 24A203E40F90D272003BB5A7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 24A2FFE50F90D1DD003BB5A7 /* drawtest.xcode */;
+ proxyType = 2;
+ remoteGlobalIDString = 8D01CCD20486CAD60068D4B7;
+ remoteInfo = AudioUnit;
+ };
+ 24A203E60F90D272003BB5A7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 24A2FFE50F90D1DD003BB5A7 /* drawtest.xcode */;
+ proxyType = 2;
+ remoteGlobalIDString = F4C9F1D407B2320800010DAD;
+ remoteInfo = VST;
+ };
+ 24A203EC0F90D272003BB5A7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 24A2FFE80F90D1DD003BB5A7 /* drawtest.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 8D01CCD20486CAD60068D4B7;
+ remoteInfo = AudioUnit;
+ };
+ 24A203EE0F90D272003BB5A7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 24A2FFE80F90D1DD003BB5A7 /* drawtest.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = F4C9F1D407B2320800010DAD;
+ remoteInfo = VST;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
+ 2407DE920899296600EB68BF /* DitherFloat.vst */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DitherFloat.vst; sourceTree = BUILT_PRODUCTS_DIR; };
+ 2407DEB6089929BA00EB68BF /* DitherFloat.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = DitherFloat.cpp; path = source/DitherFloat.cpp; sourceTree = "<group>"; };
+ 2434720A098313350063BBF1 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = "<absolute>"; };
+ 245463B80991757100464AD3 /* DitherFloat.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DitherFloat.h; path = source/DitherFloat.h; sourceTree = "<group>"; };
+ 24A200000F90D1DD003BB5A7 /* bmp10014.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10014.bmp; sourceTree = "<group>"; };
+ 24A200010F90D1DD003BB5A7 /* bmp10015.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10015.bmp; sourceTree = "<group>"; };
+ 24A200020F90D1DD003BB5A7 /* bmp10016.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10016.bmp; sourceTree = "<group>"; };
+ 24A200040F90D1DD003BB5A7 /* controlsgui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = controlsgui.cpp; sourceTree = "<group>"; };
+ 24A200050F90D1DD003BB5A7 /* controlsgui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = controlsgui.h; sourceTree = "<group>"; };
+ 24A200060F90D1DD003BB5A7 /* pdrawtesteditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pdrawtesteditor.cpp; sourceTree = "<group>"; };
+ 24A200070F90D1DD003BB5A7 /* pdrawtesteditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pdrawtesteditor.h; sourceTree = "<group>"; };
+ 24A200080F90D1DD003BB5A7 /* pdrawtesteffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pdrawtesteffect.cpp; sourceTree = "<group>"; };
+ 24A200090F90D1DD003BB5A7 /* pdrawtesteffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pdrawtesteffect.h; sourceTree = "<group>"; };
+ 24A2000A0F90D1DD003BB5A7 /* pdrawtestmain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pdrawtestmain.cpp; sourceTree = "<group>"; };
+ 24A2000B0F90D1DD003BB5A7 /* pdrawtestview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pdrawtestview.cpp; sourceTree = "<group>"; };
+ 24A2000C0F90D1DD003BB5A7 /* pdrawtestview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pdrawtestview.h; sourceTree = "<group>"; };
+ 24A2000D0F90D1DD003BB5A7 /* pprimitivesviews.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pprimitivesviews.cpp; sourceTree = "<group>"; };
+ 24A2000E0F90D1DD003BB5A7 /* pprimitivesviews.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pprimitivesviews.h; sourceTree = "<group>"; };
+ 24A200100F90D1DD003BB5A7 /* drawtest.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.def; sourceTree = "<group>"; };
+ 24A200110F90D1DD003BB5A7 /* drawtest.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.rc; sourceTree = "<group>"; };
+ 24A200120F90D1DD003BB5A7 /* drawtest.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = drawtest.vcproj; sourceTree = "<group>"; };
+ 24A200140F90D1DD003BB5A7 /* drawtest.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.dsp; sourceTree = "<group>"; };
+ 24A200150F90D1DD003BB5A7 /* drawtest.dsw */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.dsw; sourceTree = "<group>"; };
+ 24A200170F90D1DD003BB5A7 /* aeffguieditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aeffguieditor.cpp; sourceTree = "<group>"; };
+ 24A200180F90D1DD003BB5A7 /* aeffguieditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffguieditor.h; sourceTree = "<group>"; };
+ 24A200190F90D1DD003BB5A7 /* cfileselector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cfileselector.cpp; sourceTree = "<group>"; };
+ 24A2001A0F90D1DD003BB5A7 /* cfileselector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfileselector.h; sourceTree = "<group>"; };
+ 24A2001B0F90D1DD003BB5A7 /* Changelog */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Changelog; sourceTree = "<group>"; };
+ 24A2001C0F90D1DD003BB5A7 /* cscrollview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cscrollview.cpp; sourceTree = "<group>"; };
+ 24A2001D0F90D1DD003BB5A7 /* cscrollview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cscrollview.h; sourceTree = "<group>"; };
+ 24A2001E0F90D1DD003BB5A7 /* ctabview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ctabview.cpp; sourceTree = "<group>"; };
+ 24A2001F0F90D1DD003BB5A7 /* ctabview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ctabview.h; sourceTree = "<group>"; };
+ 24A200220F90D1DD003BB5A7 /* aeffguieditor_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = aeffguieditor_8cpp.html; sourceTree = "<group>"; };
+ 24A200230F90D1DD003BB5A7 /* aeffguieditor_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = aeffguieditor_8h.html; sourceTree = "<group>"; };
+ 24A200240F90D1DD003BB5A7 /* annotated.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = annotated.html; sourceTree = "<group>"; };
+ 24A200250F90D1DD003BB5A7 /* cfileselector_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = cfileselector_8cpp.html; sourceTree = "<group>"; };
+ 24A200260F90D1DD003BB5A7 /* cfileselector_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = cfileselector_8h.html; sourceTree = "<group>"; };
+ 24A200270F90D1DD003BB5A7 /* class_a_eff_g_u_i_editor-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_a_eff_g_u_i_editor-members.html"; sourceTree = "<group>"; };
+ 24A200280F90D1DD003BB5A7 /* class_a_eff_g_u_i_editor.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_a_eff_g_u_i_editor.html; sourceTree = "<group>"; };
+ 24A200290F90D1DD003BB5A7 /* class_c_anim_knob-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_anim_knob-members.html"; sourceTree = "<group>"; };
+ 24A2002A0F90D1DD003BB5A7 /* class_c_anim_knob.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_anim_knob.html; sourceTree = "<group>"; };
+ 24A2002B0F90D1DD003BB5A7 /* class_c_anim_knob.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_anim_knob.png; sourceTree = "<group>"; };
+ 24A2002C0F90D1DD003BB5A7 /* class_c_attribute_list_entry-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_attribute_list_entry-members.html"; sourceTree = "<group>"; };
+ 24A2002D0F90D1DD003BB5A7 /* class_c_attribute_list_entry.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_attribute_list_entry.html; sourceTree = "<group>"; };
+ 24A2002E0F90D1DD003BB5A7 /* class_c_auto_animation-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_auto_animation-members.html"; sourceTree = "<group>"; };
+ 24A2002F0F90D1DD003BB5A7 /* class_c_auto_animation.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_auto_animation.html; sourceTree = "<group>"; };
+ 24A200300F90D1DD003BB5A7 /* class_c_auto_animation.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_auto_animation.png; sourceTree = "<group>"; };
+ 24A200310F90D1DD003BB5A7 /* class_c_bitmap-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_bitmap-members.html"; sourceTree = "<group>"; };
+ 24A200320F90D1DD003BB5A7 /* class_c_bitmap.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_bitmap.html; sourceTree = "<group>"; };
+ 24A200330F90D1DD003BB5A7 /* class_c_bitmap.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_bitmap.png; sourceTree = "<group>"; };
+ 24A200340F90D1DD003BB5A7 /* class_c_c_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_c_view-members.html"; sourceTree = "<group>"; };
+ 24A200350F90D1DD003BB5A7 /* class_c_c_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_c_view.html; sourceTree = "<group>"; };
+ 24A200360F90D1DD003BB5A7 /* class_c_control-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_control-members.html"; sourceTree = "<group>"; };
+ 24A200370F90D1DD003BB5A7 /* class_c_control.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_control.html; sourceTree = "<group>"; };
+ 24A200380F90D1DD003BB5A7 /* class_c_control.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_control.png; sourceTree = "<group>"; };
+ 24A200390F90D1DD003BB5A7 /* class_c_control_listener-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_control_listener-members.html"; sourceTree = "<group>"; };
+ 24A2003A0F90D1DD003BB5A7 /* class_c_control_listener.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_control_listener.html; sourceTree = "<group>"; };
+ 24A2003B0F90D1DD003BB5A7 /* class_c_control_listener.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_control_listener.png; sourceTree = "<group>"; };
+ 24A2003C0F90D1DD003BB5A7 /* class_c_drag_container-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_drag_container-members.html"; sourceTree = "<group>"; };
+ 24A2003D0F90D1DD003BB5A7 /* class_c_drag_container.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_drag_container.html; sourceTree = "<group>"; };
+ 24A2003E0F90D1DD003BB5A7 /* class_c_drag_container.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_drag_container.png; sourceTree = "<group>"; };
+ 24A2003F0F90D1DD003BB5A7 /* class_c_draw_context-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_draw_context-members.html"; sourceTree = "<group>"; };
+ 24A200400F90D1DD003BB5A7 /* class_c_draw_context.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_draw_context.html; sourceTree = "<group>"; };
+ 24A200410F90D1DD003BB5A7 /* class_c_draw_context.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_draw_context.png; sourceTree = "<group>"; };
+ 24A200420F90D1DD003BB5A7 /* class_c_file_selector-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_file_selector-members.html"; sourceTree = "<group>"; };
+ 24A200430F90D1DD003BB5A7 /* class_c_file_selector.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_file_selector.html; sourceTree = "<group>"; };
+ 24A200440F90D1DD003BB5A7 /* class_c_frame-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_frame-members.html"; sourceTree = "<group>"; };
+ 24A200450F90D1DD003BB5A7 /* class_c_frame.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_frame.html; sourceTree = "<group>"; };
+ 24A200460F90D1DD003BB5A7 /* class_c_frame.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_frame.png; sourceTree = "<group>"; };
+ 24A200470F90D1DD003BB5A7 /* class_c_horizontal_slider-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_horizontal_slider-members.html"; sourceTree = "<group>"; };
+ 24A200480F90D1DD003BB5A7 /* class_c_horizontal_slider.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_horizontal_slider.html; sourceTree = "<group>"; };
+ 24A200490F90D1DD003BB5A7 /* class_c_horizontal_slider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_horizontal_slider.png; sourceTree = "<group>"; };
+ 24A2004A0F90D1DD003BB5A7 /* class_c_horizontal_switch-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_horizontal_switch-members.html"; sourceTree = "<group>"; };
+ 24A2004B0F90D1DD003BB5A7 /* class_c_horizontal_switch.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_horizontal_switch.html; sourceTree = "<group>"; };
+ 24A2004C0F90D1DD003BB5A7 /* class_c_horizontal_switch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_horizontal_switch.png; sourceTree = "<group>"; };
+ 24A2004D0F90D1DD003BB5A7 /* class_c_kick_button-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_kick_button-members.html"; sourceTree = "<group>"; };
+ 24A2004E0F90D1DD003BB5A7 /* class_c_kick_button.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_kick_button.html; sourceTree = "<group>"; };
+ 24A2004F0F90D1DD003BB5A7 /* class_c_kick_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_kick_button.png; sourceTree = "<group>"; };
+ 24A200500F90D1DD003BB5A7 /* class_c_knob-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_knob-members.html"; sourceTree = "<group>"; };
+ 24A200510F90D1DD003BB5A7 /* class_c_knob.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_knob.html; sourceTree = "<group>"; };
+ 24A200520F90D1DD003BB5A7 /* class_c_knob.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_knob.png; sourceTree = "<group>"; };
+ 24A200530F90D1DD003BB5A7 /* class_c_movie_bitmap-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_movie_bitmap-members.html"; sourceTree = "<group>"; };
+ 24A200540F90D1DD003BB5A7 /* class_c_movie_bitmap.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_movie_bitmap.html; sourceTree = "<group>"; };
+ 24A200550F90D1DD003BB5A7 /* class_c_movie_bitmap.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_movie_bitmap.png; sourceTree = "<group>"; };
+ 24A200560F90D1DD003BB5A7 /* class_c_movie_button-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_movie_button-members.html"; sourceTree = "<group>"; };
+ 24A200570F90D1DD003BB5A7 /* class_c_movie_button.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_movie_button.html; sourceTree = "<group>"; };
+ 24A200580F90D1DD003BB5A7 /* class_c_movie_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_movie_button.png; sourceTree = "<group>"; };
+ 24A200590F90D1DD003BB5A7 /* class_c_offscreen_context-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_offscreen_context-members.html"; sourceTree = "<group>"; };
+ 24A2005A0F90D1DD003BB5A7 /* class_c_offscreen_context.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_offscreen_context.html; sourceTree = "<group>"; };
+ 24A2005B0F90D1DD003BB5A7 /* class_c_offscreen_context.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_offscreen_context.png; sourceTree = "<group>"; };
+ 24A2005C0F90D1DD003BB5A7 /* class_c_on_off_button-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_on_off_button-members.html"; sourceTree = "<group>"; };
+ 24A2005D0F90D1DD003BB5A7 /* class_c_on_off_button.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_on_off_button.html; sourceTree = "<group>"; };
+ 24A2005E0F90D1DD003BB5A7 /* class_c_on_off_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_on_off_button.png; sourceTree = "<group>"; };
+ 24A2005F0F90D1DD003BB5A7 /* class_c_option_menu-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_option_menu-members.html"; sourceTree = "<group>"; };
+ 24A200600F90D1DD003BB5A7 /* class_c_option_menu.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_option_menu.html; sourceTree = "<group>"; };
+ 24A200610F90D1DD003BB5A7 /* class_c_option_menu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_option_menu.png; sourceTree = "<group>"; };
+ 24A200620F90D1DD003BB5A7 /* class_c_option_menu_scheme-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_option_menu_scheme-members.html"; sourceTree = "<group>"; };
+ 24A200630F90D1DD003BB5A7 /* class_c_option_menu_scheme.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_option_menu_scheme.html; sourceTree = "<group>"; };
+ 24A200640F90D1DD003BB5A7 /* class_c_option_menu_scheme.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_option_menu_scheme.png; sourceTree = "<group>"; };
+ 24A200650F90D1DD003BB5A7 /* class_c_param_display-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_param_display-members.html"; sourceTree = "<group>"; };
+ 24A200660F90D1DD003BB5A7 /* class_c_param_display.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_param_display.html; sourceTree = "<group>"; };
+ 24A200670F90D1DD003BB5A7 /* class_c_param_display.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_param_display.png; sourceTree = "<group>"; };
+ 24A200680F90D1DD003BB5A7 /* class_c_reference_counter-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_reference_counter-members.html"; sourceTree = "<group>"; };
+ 24A200690F90D1DD003BB5A7 /* class_c_reference_counter.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_reference_counter.html; sourceTree = "<group>"; };
+ 24A2006A0F90D1DD003BB5A7 /* class_c_reference_counter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_reference_counter.png; sourceTree = "<group>"; };
+ 24A2006B0F90D1DD003BB5A7 /* class_c_rocker_switch-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_rocker_switch-members.html"; sourceTree = "<group>"; };
+ 24A2006C0F90D1DD003BB5A7 /* class_c_rocker_switch.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_rocker_switch.html; sourceTree = "<group>"; };
+ 24A2006D0F90D1DD003BB5A7 /* class_c_rocker_switch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_rocker_switch.png; sourceTree = "<group>"; };
+ 24A2006E0F90D1DD003BB5A7 /* class_c_scroll_container-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_scroll_container-members.html"; sourceTree = "<group>"; };
+ 24A2006F0F90D1DD003BB5A7 /* class_c_scroll_container.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_scroll_container.html; sourceTree = "<group>"; };
+ 24A200700F90D1DD003BB5A7 /* class_c_scroll_container.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_scroll_container.png; sourceTree = "<group>"; };
+ 24A200710F90D1DD003BB5A7 /* class_c_scroll_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_scroll_view-members.html"; sourceTree = "<group>"; };
+ 24A200720F90D1DD003BB5A7 /* class_c_scroll_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_scroll_view.html; sourceTree = "<group>"; };
+ 24A200730F90D1DD003BB5A7 /* class_c_scroll_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_scroll_view.png; sourceTree = "<group>"; };
+ 24A200740F90D1DD003BB5A7 /* class_c_scrollbar-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_scrollbar-members.html"; sourceTree = "<group>"; };
+ 24A200750F90D1DD003BB5A7 /* class_c_scrollbar.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_scrollbar.html; sourceTree = "<group>"; };
+ 24A200760F90D1DD003BB5A7 /* class_c_scrollbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_scrollbar.png; sourceTree = "<group>"; };
+ 24A200770F90D1DD003BB5A7 /* class_c_slider-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_slider-members.html"; sourceTree = "<group>"; };
+ 24A200780F90D1DD003BB5A7 /* class_c_slider.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_slider.html; sourceTree = "<group>"; };
+ 24A200790F90D1DD003BB5A7 /* class_c_slider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_slider.png; sourceTree = "<group>"; };
+ 24A2007A0F90D1DD003BB5A7 /* class_c_special_digit-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_special_digit-members.html"; sourceTree = "<group>"; };
+ 24A2007B0F90D1DD003BB5A7 /* class_c_special_digit.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_special_digit.html; sourceTree = "<group>"; };
+ 24A2007C0F90D1DD003BB5A7 /* class_c_special_digit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_special_digit.png; sourceTree = "<group>"; };
+ 24A2007D0F90D1DD003BB5A7 /* class_c_splash_screen-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_splash_screen-members.html"; sourceTree = "<group>"; };
+ 24A2007E0F90D1DD003BB5A7 /* class_c_splash_screen.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_splash_screen.html; sourceTree = "<group>"; };
+ 24A2007F0F90D1DD003BB5A7 /* class_c_splash_screen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_splash_screen.png; sourceTree = "<group>"; };
+ 24A200800F90D1DD003BB5A7 /* class_c_splash_screen_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_splash_screen_view-members.html"; sourceTree = "<group>"; };
+ 24A200810F90D1DD003BB5A7 /* class_c_splash_screen_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_splash_screen_view.html; sourceTree = "<group>"; };
+ 24A200820F90D1DD003BB5A7 /* class_c_splash_screen_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_splash_screen_view.png; sourceTree = "<group>"; };
+ 24A200830F90D1DD003BB5A7 /* class_c_tab_button-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_tab_button-members.html"; sourceTree = "<group>"; };
+ 24A200840F90D1DD003BB5A7 /* class_c_tab_button.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_tab_button.html; sourceTree = "<group>"; };
+ 24A200850F90D1DD003BB5A7 /* class_c_tab_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_tab_button.png; sourceTree = "<group>"; };
+ 24A200860F90D1DD003BB5A7 /* class_c_tab_child_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_tab_child_view-members.html"; sourceTree = "<group>"; };
+ 24A200870F90D1DD003BB5A7 /* class_c_tab_child_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_tab_child_view.html; sourceTree = "<group>"; };
+ 24A200880F90D1DD003BB5A7 /* class_c_tab_child_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_tab_child_view.png; sourceTree = "<group>"; };
+ 24A200890F90D1DD003BB5A7 /* class_c_tab_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_tab_view-members.html"; sourceTree = "<group>"; };
+ 24A2008A0F90D1DD003BB5A7 /* class_c_tab_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_tab_view.html; sourceTree = "<group>"; };
+ 24A2008B0F90D1DD003BB5A7 /* class_c_tab_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_tab_view.png; sourceTree = "<group>"; };
+ 24A2008C0F90D1DD003BB5A7 /* class_c_text_edit-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_text_edit-members.html"; sourceTree = "<group>"; };
+ 24A2008D0F90D1DD003BB5A7 /* class_c_text_edit.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_text_edit.html; sourceTree = "<group>"; };
+ 24A2008E0F90D1DD003BB5A7 /* class_c_text_edit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_text_edit.png; sourceTree = "<group>"; };
+ 24A2008F0F90D1DD003BB5A7 /* class_c_text_label-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_text_label-members.html"; sourceTree = "<group>"; };
+ 24A200900F90D1DD003BB5A7 /* class_c_text_label.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_text_label.html; sourceTree = "<group>"; };
+ 24A200910F90D1DD003BB5A7 /* class_c_text_label.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_text_label.png; sourceTree = "<group>"; };
+ 24A200920F90D1DD003BB5A7 /* class_c_vertical_slider-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_vertical_slider-members.html"; sourceTree = "<group>"; };
+ 24A200930F90D1DD003BB5A7 /* class_c_vertical_slider.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_vertical_slider.html; sourceTree = "<group>"; };
+ 24A200940F90D1DD003BB5A7 /* class_c_vertical_slider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_vertical_slider.png; sourceTree = "<group>"; };
+ 24A200950F90D1DD003BB5A7 /* class_c_vertical_switch-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_vertical_switch-members.html"; sourceTree = "<group>"; };
+ 24A200960F90D1DD003BB5A7 /* class_c_vertical_switch.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_vertical_switch.html; sourceTree = "<group>"; };
+ 24A200970F90D1DD003BB5A7 /* class_c_vertical_switch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_vertical_switch.png; sourceTree = "<group>"; };
+ 24A200980F90D1DD003BB5A7 /* class_c_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_view-members.html"; sourceTree = "<group>"; };
+ 24A200990F90D1DD003BB5A7 /* class_c_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_view.html; sourceTree = "<group>"; };
+ 24A2009A0F90D1DD003BB5A7 /* class_c_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_view.png; sourceTree = "<group>"; };
+ 24A2009B0F90D1DD003BB5A7 /* class_c_view_container-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_view_container-members.html"; sourceTree = "<group>"; };
+ 24A2009C0F90D1DD003BB5A7 /* class_c_view_container.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_view_container.html; sourceTree = "<group>"; };
+ 24A2009D0F90D1DD003BB5A7 /* class_c_view_container.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_view_container.png; sourceTree = "<group>"; };
+ 24A2009E0F90D1DD003BB5A7 /* class_c_vu_meter-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_vu_meter-members.html"; sourceTree = "<group>"; };
+ 24A2009F0F90D1DD003BB5A7 /* class_c_vu_meter.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_vu_meter.html; sourceTree = "<group>"; };
+ 24A200A00F90D1DD003BB5A7 /* class_c_vu_meter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_vu_meter.png; sourceTree = "<group>"; };
+ 24A200A10F90D1DD003BB5A7 /* class_i_scrollbar_drawer-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_i_scrollbar_drawer-members.html"; sourceTree = "<group>"; };
+ 24A200A20F90D1DD003BB5A7 /* class_i_scrollbar_drawer.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_i_scrollbar_drawer.html; sourceTree = "<group>"; };
+ 24A200A30F90D1DD003BB5A7 /* class_plugin_g_u_i_editor-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_plugin_g_u_i_editor-members.html"; sourceTree = "<group>"; };
+ 24A200A40F90D1DD003BB5A7 /* class_plugin_g_u_i_editor.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_plugin_g_u_i_editor.html; sourceTree = "<group>"; };
+ 24A200A50F90D1DD003BB5A7 /* cscrollview_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = cscrollview_8cpp.html; sourceTree = "<group>"; };
+ 24A200A60F90D1DD003BB5A7 /* cscrollview_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = cscrollview_8h.html; sourceTree = "<group>"; };
+ 24A200A70F90D1DD003BB5A7 /* ctabview_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = ctabview_8cpp.html; sourceTree = "<group>"; };
+ 24A200A80F90D1DD003BB5A7 /* ctabview_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = ctabview_8h.html; sourceTree = "<group>"; };
+ 24A200A90F90D1DD003BB5A7 /* deprecated.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = deprecated.html; sourceTree = "<group>"; };
+ 24A200AA0F90D1DD003BB5A7 /* doc_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = doc_8h.html; sourceTree = "<group>"; };
+ 24A200AB0F90D1DD003BB5A7 /* doxygen.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = doxygen.css; sourceTree = "<group>"; };
+ 24A200AC0F90D1DD003BB5A7 /* doxygen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doxygen.png; sourceTree = "<group>"; };
+ 24A200AD0F90D1DD003BB5A7 /* files.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = files.html; sourceTree = "<group>"; };
+ 24A200AE0F90D1DD003BB5A7 /* ftv2blank.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2blank.png; sourceTree = "<group>"; };
+ 24A200AF0F90D1DD003BB5A7 /* ftv2doc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2doc.png; sourceTree = "<group>"; };
+ 24A200B00F90D1DD003BB5A7 /* ftv2folderclosed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2folderclosed.png; sourceTree = "<group>"; };
+ 24A200B10F90D1DE003BB5A7 /* ftv2folderopen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2folderopen.png; sourceTree = "<group>"; };
+ 24A200B20F90D1DE003BB5A7 /* ftv2lastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2lastnode.png; sourceTree = "<group>"; };
+ 24A200B30F90D1DE003BB5A7 /* ftv2link.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2link.png; sourceTree = "<group>"; };
+ 24A200B40F90D1DE003BB5A7 /* ftv2mlastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2mlastnode.png; sourceTree = "<group>"; };
+ 24A200B50F90D1DE003BB5A7 /* ftv2mnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2mnode.png; sourceTree = "<group>"; };
+ 24A200B60F90D1DE003BB5A7 /* ftv2node.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2node.png; sourceTree = "<group>"; };
+ 24A200B70F90D1DE003BB5A7 /* ftv2plastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2plastnode.png; sourceTree = "<group>"; };
+ 24A200B80F90D1DE003BB5A7 /* ftv2pnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2pnode.png; sourceTree = "<group>"; };
+ 24A200B90F90D1DE003BB5A7 /* ftv2vertline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2vertline.png; sourceTree = "<group>"; };
+ 24A200BA0F90D1DE003BB5A7 /* functions.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions.html; sourceTree = "<group>"; };
+ 24A200BB0F90D1DE003BB5A7 /* functions_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x62.html; sourceTree = "<group>"; };
+ 24A200BC0F90D1DE003BB5A7 /* functions_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x63.html; sourceTree = "<group>"; };
+ 24A200BD0F90D1DE003BB5A7 /* functions_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x64.html; sourceTree = "<group>"; };
+ 24A200BE0F90D1DE003BB5A7 /* functions_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x65.html; sourceTree = "<group>"; };
+ 24A200BF0F90D1DE003BB5A7 /* functions_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x66.html; sourceTree = "<group>"; };
+ 24A200C00F90D1DE003BB5A7 /* functions_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x67.html; sourceTree = "<group>"; };
+ 24A200C10F90D1DE003BB5A7 /* functions_0x68.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x68.html; sourceTree = "<group>"; };
+ 24A200C20F90D1DE003BB5A7 /* functions_0x69.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x69.html; sourceTree = "<group>"; };
+ 24A200C30F90D1DE003BB5A7 /* functions_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6b.html; sourceTree = "<group>"; };
+ 24A200C40F90D1DE003BB5A7 /* functions_0x6c.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6c.html; sourceTree = "<group>"; };
+ 24A200C50F90D1DE003BB5A7 /* functions_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6d.html; sourceTree = "<group>"; };
+ 24A200C60F90D1DE003BB5A7 /* functions_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6e.html; sourceTree = "<group>"; };
+ 24A200C70F90D1DE003BB5A7 /* functions_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6f.html; sourceTree = "<group>"; };
+ 24A200C80F90D1DE003BB5A7 /* functions_0x70.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x70.html; sourceTree = "<group>"; };
+ 24A200C90F90D1DE003BB5A7 /* functions_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x72.html; sourceTree = "<group>"; };
+ 24A200CA0F90D1DE003BB5A7 /* functions_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x73.html; sourceTree = "<group>"; };
+ 24A200CB0F90D1DE003BB5A7 /* functions_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x74.html; sourceTree = "<group>"; };
+ 24A200CC0F90D1DE003BB5A7 /* functions_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x75.html; sourceTree = "<group>"; };
+ 24A200CD0F90D1DE003BB5A7 /* functions_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x76.html; sourceTree = "<group>"; };
+ 24A200CE0F90D1DE003BB5A7 /* functions_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x77.html; sourceTree = "<group>"; };
+ 24A200CF0F90D1DE003BB5A7 /* functions_0x78.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x78.html; sourceTree = "<group>"; };
+ 24A200D00F90D1DE003BB5A7 /* functions_0x79.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x79.html; sourceTree = "<group>"; };
+ 24A200D10F90D1DE003BB5A7 /* functions_0x7a.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x7a.html; sourceTree = "<group>"; };
+ 24A200D20F90D1DE003BB5A7 /* functions_0x7e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x7e.html; sourceTree = "<group>"; };
+ 24A200D30F90D1DE003BB5A7 /* functions_eval.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_eval.html; sourceTree = "<group>"; };
+ 24A200D40F90D1DE003BB5A7 /* functions_func.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func.html; sourceTree = "<group>"; };
+ 24A200D50F90D1DE003BB5A7 /* functions_func_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x62.html; sourceTree = "<group>"; };
+ 24A200D60F90D1DE003BB5A7 /* functions_func_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x63.html; sourceTree = "<group>"; };
+ 24A200D70F90D1DE003BB5A7 /* functions_func_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x64.html; sourceTree = "<group>"; };
+ 24A200D80F90D1DE003BB5A7 /* functions_func_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x65.html; sourceTree = "<group>"; };
+ 24A200D90F90D1DE003BB5A7 /* functions_func_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x66.html; sourceTree = "<group>"; };
+ 24A200DA0F90D1DE003BB5A7 /* functions_func_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x67.html; sourceTree = "<group>"; };
+ 24A200DB0F90D1DE003BB5A7 /* functions_func_0x68.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x68.html; sourceTree = "<group>"; };
+ 24A200DC0F90D1DE003BB5A7 /* functions_func_0x69.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x69.html; sourceTree = "<group>"; };
+ 24A200DD0F90D1DE003BB5A7 /* functions_func_0x6c.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x6c.html; sourceTree = "<group>"; };
+ 24A200DE0F90D1DE003BB5A7 /* functions_func_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x6d.html; sourceTree = "<group>"; };
+ 24A200DF0F90D1DE003BB5A7 /* functions_func_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x6e.html; sourceTree = "<group>"; };
+ 24A200E00F90D1DE003BB5A7 /* functions_func_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x6f.html; sourceTree = "<group>"; };
+ 24A200E10F90D1DE003BB5A7 /* functions_func_0x70.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x70.html; sourceTree = "<group>"; };
+ 24A200E20F90D1DE003BB5A7 /* functions_func_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x72.html; sourceTree = "<group>"; };
+ 24A200E30F90D1DE003BB5A7 /* functions_func_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x73.html; sourceTree = "<group>"; };
+ 24A200E40F90D1DE003BB5A7 /* functions_func_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x74.html; sourceTree = "<group>"; };
+ 24A200E50F90D1DE003BB5A7 /* functions_func_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x75.html; sourceTree = "<group>"; };
+ 24A200E60F90D1DE003BB5A7 /* functions_func_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x76.html; sourceTree = "<group>"; };
+ 24A200E70F90D1DE003BB5A7 /* functions_func_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x77.html; sourceTree = "<group>"; };
+ 24A200E80F90D1DE003BB5A7 /* functions_func_0x7e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x7e.html; sourceTree = "<group>"; };
+ 24A200E90F90D1DE003BB5A7 /* functions_rela.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_rela.html; sourceTree = "<group>"; };
+ 24A200EA0F90D1DE003BB5A7 /* functions_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars.html; sourceTree = "<group>"; };
+ 24A200EB0F90D1DE003BB5A7 /* functions_vars_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x62.html; sourceTree = "<group>"; };
+ 24A200EC0F90D1DE003BB5A7 /* functions_vars_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x63.html; sourceTree = "<group>"; };
+ 24A200ED0F90D1DE003BB5A7 /* functions_vars_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x64.html; sourceTree = "<group>"; };
+ 24A200EE0F90D1DE003BB5A7 /* functions_vars_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x65.html; sourceTree = "<group>"; };
+ 24A200EF0F90D1DE003BB5A7 /* functions_vars_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x66.html; sourceTree = "<group>"; };
+ 24A200F00F90D1DE003BB5A7 /* functions_vars_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x67.html; sourceTree = "<group>"; };
+ 24A200F10F90D1DE003BB5A7 /* functions_vars_0x68.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x68.html; sourceTree = "<group>"; };
+ 24A200F20F90D1DE003BB5A7 /* functions_vars_0x69.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x69.html; sourceTree = "<group>"; };
+ 24A200F30F90D1DE003BB5A7 /* functions_vars_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6b.html; sourceTree = "<group>"; };
+ 24A200F40F90D1DE003BB5A7 /* functions_vars_0x6c.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6c.html; sourceTree = "<group>"; };
+ 24A200F50F90D1DE003BB5A7 /* functions_vars_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6d.html; sourceTree = "<group>"; };
+ 24A200F60F90D1DE003BB5A7 /* functions_vars_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6e.html; sourceTree = "<group>"; };
+ 24A200F70F90D1DE003BB5A7 /* functions_vars_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6f.html; sourceTree = "<group>"; };
+ 24A200F80F90D1DE003BB5A7 /* functions_vars_0x70.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x70.html; sourceTree = "<group>"; };
+ 24A200F90F90D1DE003BB5A7 /* functions_vars_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x72.html; sourceTree = "<group>"; };
+ 24A200FA0F90D1DE003BB5A7 /* functions_vars_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x73.html; sourceTree = "<group>"; };
+ 24A200FB0F90D1DE003BB5A7 /* functions_vars_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x74.html; sourceTree = "<group>"; };
+ 24A200FC0F90D1DE003BB5A7 /* functions_vars_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x75.html; sourceTree = "<group>"; };
+ 24A200FD0F90D1DE003BB5A7 /* functions_vars_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x76.html; sourceTree = "<group>"; };
+ 24A200FE0F90D1DE003BB5A7 /* functions_vars_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x77.html; sourceTree = "<group>"; };
+ 24A200FF0F90D1DE003BB5A7 /* functions_vars_0x78.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x78.html; sourceTree = "<group>"; };
+ 24A201000F90D1DE003BB5A7 /* functions_vars_0x79.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x79.html; sourceTree = "<group>"; };
+ 24A201010F90D1DE003BB5A7 /* functions_vars_0x7a.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x7a.html; sourceTree = "<group>"; };
+ 24A201020F90D1DE003BB5A7 /* globals.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals.html; sourceTree = "<group>"; };
+ 24A201030F90D1DE003BB5A7 /* globals_0x61.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x61.html; sourceTree = "<group>"; };
+ 24A201040F90D1DE003BB5A7 /* globals_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x62.html; sourceTree = "<group>"; };
+ 24A201050F90D1DE003BB5A7 /* globals_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x63.html; sourceTree = "<group>"; };
+ 24A201060F90D1DE003BB5A7 /* globals_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x65.html; sourceTree = "<group>"; };
+ 24A201070F90D1DE003BB5A7 /* globals_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x66.html; sourceTree = "<group>"; };
+ 24A201080F90D1DE003BB5A7 /* globals_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x67.html; sourceTree = "<group>"; };
+ 24A201090F90D1DE003BB5A7 /* globals_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x6b.html; sourceTree = "<group>"; };
+ 24A2010A0F90D1DE003BB5A7 /* globals_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x6d.html; sourceTree = "<group>"; };
+ 24A2010B0F90D1DE003BB5A7 /* globals_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x6e.html; sourceTree = "<group>"; };
+ 24A2010C0F90D1DE003BB5A7 /* globals_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x6f.html; sourceTree = "<group>"; };
+ 24A2010D0F90D1DE003BB5A7 /* globals_0x71.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x71.html; sourceTree = "<group>"; };
+ 24A2010E0F90D1DE003BB5A7 /* globals_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x72.html; sourceTree = "<group>"; };
+ 24A2010F0F90D1DE003BB5A7 /* globals_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x73.html; sourceTree = "<group>"; };
+ 24A201100F90D1DE003BB5A7 /* globals_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x74.html; sourceTree = "<group>"; };
+ 24A201110F90D1DE003BB5A7 /* globals_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x75.html; sourceTree = "<group>"; };
+ 24A201120F90D1DE003BB5A7 /* globals_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x76.html; sourceTree = "<group>"; };
+ 24A201130F90D1DE003BB5A7 /* globals_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x77.html; sourceTree = "<group>"; };
+ 24A201140F90D1DE003BB5A7 /* globals_defs.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_defs.html; sourceTree = "<group>"; };
+ 24A201150F90D1DE003BB5A7 /* globals_enum.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_enum.html; sourceTree = "<group>"; };
+ 24A201160F90D1DE003BB5A7 /* globals_eval.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_eval.html; sourceTree = "<group>"; };
+ 24A201170F90D1DE003BB5A7 /* globals_type.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_type.html; sourceTree = "<group>"; };
+ 24A201180F90D1DE003BB5A7 /* globals_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_vars.html; sourceTree = "<group>"; };
+ 24A201190F90D1DE003BB5A7 /* hierarchy.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = hierarchy.html; sourceTree = "<group>"; };
+ 24A2011A0F90D1DE003BB5A7 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = index.html; sourceTree = "<group>"; };
+ 24A2011B0F90D1DE003BB5A7 /* intro.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = intro.html; sourceTree = "<group>"; };
+ 24A2011C0F90D1DE003BB5A7 /* license.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = license.html; sourceTree = "<group>"; };
+ 24A2011D0F90D1DE003BB5A7 /* maceditor.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = maceditor.html; sourceTree = "<group>"; };
+ 24A2011E0F90D1DE003BB5A7 /* main.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = main.html; sourceTree = "<group>"; };
+ 24A2011F0F90D1DE003BB5A7 /* others.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = others.html; sourceTree = "<group>"; };
+ 24A201200F90D1DE003BB5A7 /* pages.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = pages.html; sourceTree = "<group>"; };
+ 24A201210F90D1DE003BB5A7 /* plugguieditor_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = plugguieditor_8cpp.html; sourceTree = "<group>"; };
+ 24A201220F90D1DE003BB5A7 /* plugguieditor_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = plugguieditor_8h.html; sourceTree = "<group>"; };
+ 24A201230F90D1DE003BB5A7 /* sequences.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = sequences.html; sourceTree = "<group>"; };
+ 24A201240F90D1DE003BB5A7 /* struct_c_color-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_c_color-members.html"; sourceTree = "<group>"; };
+ 24A201250F90D1DE003BB5A7 /* struct_c_color.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_c_color.html; sourceTree = "<group>"; };
+ 24A201260F90D1DE003BB5A7 /* struct_c_point-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_c_point-members.html"; sourceTree = "<group>"; };
+ 24A201270F90D1DE003BB5A7 /* struct_c_point.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_c_point.html; sourceTree = "<group>"; };
+ 24A201280F90D1DE003BB5A7 /* struct_c_rect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_c_rect-members.html"; sourceTree = "<group>"; };
+ 24A201290F90D1DE003BB5A7 /* struct_c_rect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_c_rect.html; sourceTree = "<group>"; };
+ 24A2012A0F90D1DE003BB5A7 /* struct_e_rect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_e_rect-members.html"; sourceTree = "<group>"; };
+ 24A2012B0F90D1DE003BB5A7 /* struct_e_rect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_e_rect.html; sourceTree = "<group>"; };
+ 24A2012C0F90D1DE003BB5A7 /* struct_vst_file_select-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_vst_file_select-members.html"; sourceTree = "<group>"; };
+ 24A2012D0F90D1DE003BB5A7 /* struct_vst_file_select.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_vst_file_select.html; sourceTree = "<group>"; };
+ 24A2012E0F90D1DE003BB5A7 /* struct_vst_file_type-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_vst_file_type-members.html"; sourceTree = "<group>"; };
+ 24A2012F0F90D1DE003BB5A7 /* struct_vst_file_type.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_vst_file_type.html; sourceTree = "<group>"; };
+ 24A201300F90D1DE003BB5A7 /* struct_vst_key_code-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_vst_key_code-members.html"; sourceTree = "<group>"; };
+ 24A201310F90D1DE003BB5A7 /* struct_vst_key_code.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_vst_key_code.html; sourceTree = "<group>"; };
+ 24A201320F90D1DE003BB5A7 /* tab_b.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_b.gif; sourceTree = "<group>"; };
+ 24A201330F90D1DE003BB5A7 /* tab_l.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_l.gif; sourceTree = "<group>"; };
+ 24A201340F90D1DE003BB5A7 /* tab_r.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_r.gif; sourceTree = "<group>"; };
+ 24A201350F90D1DE003BB5A7 /* tabs.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = tabs.css; sourceTree = "<group>"; };
+ 24A201360F90D1DE003BB5A7 /* thanks.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = thanks.html; sourceTree = "<group>"; };
+ 24A201370F90D1DE003BB5A7 /* tree.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = tree.html; sourceTree = "<group>"; };
+ 24A201380F90D1DE003BB5A7 /* vstcontrols_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstcontrols_8cpp.html; sourceTree = "<group>"; };
+ 24A201390F90D1DE003BB5A7 /* vstcontrols_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstcontrols_8h.html; sourceTree = "<group>"; };
+ 24A2013A0F90D1DE003BB5A7 /* vstgui_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstgui_8cpp.html; sourceTree = "<group>"; };
+ 24A2013B0F90D1DE003BB5A7 /* vstgui_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstgui_8h.html; sourceTree = "<group>"; };
+ 24A2013C0F90D1DE003BB5A7 /* vstkeycode_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstkeycode_8h.html; sourceTree = "<group>"; };
+ 24A2013D0F90D1DE003BB5A7 /* vstoffline.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstoffline.html; sourceTree = "<group>"; };
+ 24A2013E0F90D1DE003BB5A7 /* vstparamstruct.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstparamstruct.html; sourceTree = "<group>"; };
+ 24A2013F0F90D1DE003BB5A7 /* vstplugscarbon_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstplugscarbon_8h.html; sourceTree = "<group>"; };
+ 24A201400F90D1DE003BB5A7 /* vstplugsmac_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstplugsmac_8h.html; sourceTree = "<group>"; };
+ 24A201410F90D1DE003BB5A7 /* vstplugsmacho_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstplugsmacho_8h.html; sourceTree = "<group>"; };
+ 24A201420F90D1DE003BB5A7 /* vstplugsquartz_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstplugsquartz_8h.html; sourceTree = "<group>"; };
+ 24A201430F90D1DE003BB5A7 /* whatsnew.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = whatsnew.html; sourceTree = "<group>"; };
+ 24A201440F90D1DE003BB5A7 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = index.html; sourceTree = "<group>"; };
+ 24A201450F90D1DE003BB5A7 /* Migrating from 2.3.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = "Migrating from 2.3.rtf"; sourceTree = "<group>"; };
+ 24A201460F90D1DE003BB5A7 /* plugguieditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugguieditor.cpp; sourceTree = "<group>"; };
+ 24A201470F90D1DE003BB5A7 /* plugguieditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugguieditor.h; sourceTree = "<group>"; };
+ 24A201480F90D1DE003BB5A7 /* vstcontrols.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstcontrols.cpp; sourceTree = "<group>"; };
+ 24A201490F90D1DE003BB5A7 /* vstcontrols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstcontrols.h; sourceTree = "<group>"; };
+ 24A2014A0F90D1DE003BB5A7 /* vstgui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstgui.cpp; sourceTree = "<group>"; };
+ 24A2014B0F90D1DE003BB5A7 /* vstgui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstgui.h; sourceTree = "<group>"; };
+ 24A2014C0F90D1DE003BB5A7 /* vstkeycode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstkeycode.h; sourceTree = "<group>"; };
+ 24A2014D0F90D1DE003BB5A7 /* vstplugscarbon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstplugscarbon.h; sourceTree = "<group>"; };
+ 24A2014E0F90D1DE003BB5A7 /* vstplugsmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstplugsmac.h; sourceTree = "<group>"; };
+ 24A2014F0F90D1DE003BB5A7 /* vstplugsmacho.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstplugsmacho.h; sourceTree = "<group>"; };
+ 24A201500F90D1DE003BB5A7 /* vstplugsquartz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstplugsquartz.h; sourceTree = "<group>"; };
+ 24A2FEBD0F90D1DC003BB5A7 /* Thumbs.db */ = {isa = PBXFileReference; lastKnownFileType = file; path = Thumbs.db; sourceTree = "<group>"; };
+ 24A2FEBE0F90D1DC003BB5A7 /* VST_Logo_Usage_Guideline.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = VST_Logo_Usage_Guideline.pdf; sourceTree = "<group>"; };
+ 24A2FEBF0F90D1DC003BB5A7 /* VSTLogoAlpha.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = VSTLogoAlpha.png; sourceTree = "<group>"; };
+ 24A2FEC00F90D1DC003BB5A7 /* VSTLogoBlack.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = VSTLogoBlack.jpg; sourceTree = "<group>"; };
+ 24A2FEC10F90D1DC003BB5A7 /* VSTLogoWhite.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = VSTLogoWhite.jpg; sourceTree = "<group>"; };
+ 24A2FEC60F90D1DC003BB5A7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ 24A2FEC80F90D1DC003BB5A7 /* VSTMonitor */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; path = VSTMonitor; sourceTree = "<group>"; };
+ 24A2FEC90F90D1DC003BB5A7 /* PkgInfo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PkgInfo; sourceTree = "<group>"; };
+ 24A2FECB0F90D1DC003BB5A7 /* bmp50000.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50000.bmp; sourceTree = "<group>"; };
+ 24A2FECC0F90D1DC003BB5A7 /* bmp50001.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50001.bmp; sourceTree = "<group>"; };
+ 24A2FECD0F90D1DC003BB5A7 /* bmp50002.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50002.bmp; sourceTree = "<group>"; };
+ 24A2FECE0F90D1DC003BB5A7 /* bmp50003.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50003.bmp; sourceTree = "<group>"; };
+ 24A2FECF0F90D1DC003BB5A7 /* bmp50004.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50004.bmp; sourceTree = "<group>"; };
+ 24A2FED00F90D1DC003BB5A7 /* bmp50005.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50005.bmp; sourceTree = "<group>"; };
+ 24A2FED10F90D1DC003BB5A7 /* bmp50006.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50006.bmp; sourceTree = "<group>"; };
+ 24A2FED20F90D1DC003BB5A7 /* bmp50007.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50007.bmp; sourceTree = "<group>"; };
+ 24A2FED30F90D1DC003BB5A7 /* bmp50008.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50008.bmp; sourceTree = "<group>"; };
+ 24A2FED40F90D1DC003BB5A7 /* VSTParamTool.app */ = {isa = PBXFileReference; lastKnownFileType = wrapper.application; path = VSTParamTool.app; sourceTree = "<group>"; };
+ 24A2FED60F90D1DC003BB5A7 /* vstmonitor.dll */ = {isa = PBXFileReference; lastKnownFileType = file; path = vstmonitor.dll; sourceTree = "<group>"; };
+ 24A2FED70F90D1DC003BB5A7 /* vstparamtool.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = vstparamtool.exe; sourceTree = "<group>"; };
+ 24A2FEDA0F90D1DC003BB5A7 /* folder.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = folder.gif; sourceTree = "<group>"; };
+ 24A2FEDB0F90D1DC003BB5A7 /* mac.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = mac.gif; sourceTree = "<group>"; };
+ 24A2FEDC0F90D1DC003BB5A7 /* vstpluglogo_small.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = vstpluglogo_small.jpg; sourceTree = "<group>"; };
+ 24A2FEDD0F90D1DC003BB5A7 /* win.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = win.gif; sourceTree = "<group>"; };
+ 24A2FEDF0F90D1DC003BB5A7 /* aeffect_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = aeffect_8h.html; sourceTree = "<group>"; };
+ 24A2FEE00F90D1DC003BB5A7 /* aeffectx_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = aeffectx_8h.html; sourceTree = "<group>"; };
+ 24A2FEE10F90D1DC003BB5A7 /* aeffeditor_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = aeffeditor_8h.html; sourceTree = "<group>"; };
+ 24A2FEE20F90D1DC003BB5A7 /* annotated.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = annotated.html; sourceTree = "<group>"; };
+ 24A2FEE30F90D1DC003BB5A7 /* audioeffect_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = audioeffect_8cpp.html; sourceTree = "<group>"; };
+ 24A2FEE40F90D1DC003BB5A7 /* audioeffect_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = audioeffect_8h.html; sourceTree = "<group>"; };
+ 24A2FEE50F90D1DC003BB5A7 /* audioeffectx_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = audioeffectx_8cpp.html; sourceTree = "<group>"; };
+ 24A2FEE60F90D1DC003BB5A7 /* audioeffectx_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = audioeffectx_8h.html; sourceTree = "<group>"; };
+ 24A2FEE70F90D1DC003BB5A7 /* Blocksizechange.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Blocksizechange.gif; sourceTree = "<group>"; };
+ 24A2FEE80F90D1DC003BB5A7 /* class_a_eff_editor-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "class_a_eff_editor-members.html"; sourceTree = "<group>"; };
+ 24A2FEE90F90D1DC003BB5A7 /* class_a_eff_editor.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = class_a_eff_editor.html; sourceTree = "<group>"; };
+ 24A2FEEA0F90D1DC003BB5A7 /* class_audio_effect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "class_audio_effect-members.html"; sourceTree = "<group>"; };
+ 24A2FEEB0F90D1DC003BB5A7 /* class_audio_effect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = class_audio_effect.html; sourceTree = "<group>"; };
+ 24A2FEEC0F90D1DC003BB5A7 /* class_audio_effect.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_audio_effect.png; sourceTree = "<group>"; };
+ 24A2FEED0F90D1DC003BB5A7 /* class_audio_effect_x-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "class_audio_effect_x-members.html"; sourceTree = "<group>"; };
+ 24A2FEEE0F90D1DC003BB5A7 /* class_audio_effect_x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = class_audio_effect_x.html; sourceTree = "<group>"; };
+ 24A2FEEF0F90D1DC003BB5A7 /* class_audio_effect_x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_audio_effect_x.png; sourceTree = "<group>"; };
+ 24A2FEF00F90D1DC003BB5A7 /* ControlChanged.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = ControlChanged.gif; sourceTree = "<group>"; };
+ 24A2FEF10F90D1DC003BB5A7 /* deprecated.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = deprecated.html; sourceTree = "<group>"; };
+ 24A2FEF20F90D1DC003BB5A7 /* dir_2d3252dd12c84c66c1d25b26bb45a1f5.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dir_2d3252dd12c84c66c1d25b26bb45a1f5.html; sourceTree = "<group>"; };
+ 24A2FEF30F90D1DC003BB5A7 /* dir_77c628dfee72e555f82d5ef53b733f38.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dir_77c628dfee72e555f82d5ef53b733f38.html; sourceTree = "<group>"; };
+ 24A2FEF40F90D1DC003BB5A7 /* dir_f81105d3b854bea570aaf3bae5cb64c1.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dir_f81105d3b854bea570aaf3bae5cb64c1.html; sourceTree = "<group>"; };
+ 24A2FEF50F90D1DC003BB5A7 /* dir_fa0454ab79b4262333bf837ea3d765e9.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dir_fa0454ab79b4262333bf837ea3d765e9.html; sourceTree = "<group>"; };
+ 24A2FEF60F90D1DC003BB5A7 /* dirs.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dirs.html; sourceTree = "<group>"; };
+ 24A2FEF70F90D1DC003BB5A7 /* doc_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = doc_8h.html; sourceTree = "<group>"; };
+ 24A2FEF80F90D1DC003BB5A7 /* doxygen.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = doxygen.css; sourceTree = "<group>"; };
+ 24A2FEF90F90D1DC003BB5A7 /* doxygen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doxygen.png; sourceTree = "<group>"; };
+ 24A2FEFA0F90D1DC003BB5A7 /* files.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = files.html; sourceTree = "<group>"; };
+ 24A2FEFB0F90D1DC003BB5A7 /* ftv2blank.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2blank.png; sourceTree = "<group>"; };
+ 24A2FEFC0F90D1DC003BB5A7 /* ftv2doc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2doc.png; sourceTree = "<group>"; };
+ 24A2FEFD0F90D1DC003BB5A7 /* ftv2folderclosed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2folderclosed.png; sourceTree = "<group>"; };
+ 24A2FEFE0F90D1DC003BB5A7 /* ftv2folderopen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2folderopen.png; sourceTree = "<group>"; };
+ 24A2FEFF0F90D1DC003BB5A7 /* ftv2lastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2lastnode.png; sourceTree = "<group>"; };
+ 24A2FF000F90D1DC003BB5A7 /* ftv2link.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2link.png; sourceTree = "<group>"; };
+ 24A2FF010F90D1DC003BB5A7 /* ftv2mlastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2mlastnode.png; sourceTree = "<group>"; };
+ 24A2FF020F90D1DC003BB5A7 /* ftv2mnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2mnode.png; sourceTree = "<group>"; };
+ 24A2FF030F90D1DC003BB5A7 /* ftv2node.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2node.png; sourceTree = "<group>"; };
+ 24A2FF040F90D1DC003BB5A7 /* ftv2plastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2plastnode.png; sourceTree = "<group>"; };
+ 24A2FF050F90D1DC003BB5A7 /* ftv2pnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2pnode.png; sourceTree = "<group>"; };
+ 24A2FF060F90D1DC003BB5A7 /* ftv2vertline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2vertline.png; sourceTree = "<group>"; };
+ 24A2FF070F90D1DC003BB5A7 /* functions.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions.html; sourceTree = "<group>"; };
+ 24A2FF080F90D1DC003BB5A7 /* functions_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x62.html; sourceTree = "<group>"; };
+ 24A2FF090F90D1DC003BB5A7 /* functions_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x63.html; sourceTree = "<group>"; };
+ 24A2FF0A0F90D1DC003BB5A7 /* functions_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x64.html; sourceTree = "<group>"; };
+ 24A2FF0B0F90D1DC003BB5A7 /* functions_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x65.html; sourceTree = "<group>"; };
+ 24A2FF0C0F90D1DC003BB5A7 /* functions_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x66.html; sourceTree = "<group>"; };
+ 24A2FF0D0F90D1DC003BB5A7 /* functions_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x67.html; sourceTree = "<group>"; };
+ 24A2FF0E0F90D1DC003BB5A7 /* functions_0x68.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x68.html; sourceTree = "<group>"; };
+ 24A2FF0F0F90D1DC003BB5A7 /* functions_0x69.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x69.html; sourceTree = "<group>"; };
+ 24A2FF100F90D1DC003BB5A7 /* functions_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6b.html; sourceTree = "<group>"; };
+ 24A2FF110F90D1DC003BB5A7 /* functions_0x6c.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6c.html; sourceTree = "<group>"; };
+ 24A2FF120F90D1DC003BB5A7 /* functions_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6d.html; sourceTree = "<group>"; };
+ 24A2FF130F90D1DC003BB5A7 /* functions_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6e.html; sourceTree = "<group>"; };
+ 24A2FF140F90D1DC003BB5A7 /* functions_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6f.html; sourceTree = "<group>"; };
+ 24A2FF150F90D1DC003BB5A7 /* functions_0x70.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x70.html; sourceTree = "<group>"; };
+ 24A2FF160F90D1DC003BB5A7 /* functions_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x72.html; sourceTree = "<group>"; };
+ 24A2FF170F90D1DC003BB5A7 /* functions_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x73.html; sourceTree = "<group>"; };
+ 24A2FF180F90D1DC003BB5A7 /* functions_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x74.html; sourceTree = "<group>"; };
+ 24A2FF190F90D1DC003BB5A7 /* functions_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x75.html; sourceTree = "<group>"; };
+ 24A2FF1A0F90D1DC003BB5A7 /* functions_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x76.html; sourceTree = "<group>"; };
+ 24A2FF1B0F90D1DC003BB5A7 /* functions_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x77.html; sourceTree = "<group>"; };
+ 24A2FF1C0F90D1DC003BB5A7 /* functions_0x78.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x78.html; sourceTree = "<group>"; };
+ 24A2FF1D0F90D1DC003BB5A7 /* functions_0x79.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x79.html; sourceTree = "<group>"; };
+ 24A2FF1E0F90D1DC003BB5A7 /* functions_0x7e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x7e.html; sourceTree = "<group>"; };
+ 24A2FF1F0F90D1DC003BB5A7 /* functions_func.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_func.html; sourceTree = "<group>"; };
+ 24A2FF200F90D1DC003BB5A7 /* functions_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_vars.html; sourceTree = "<group>"; };
+ 24A2FF210F90D1DC003BB5A7 /* globals.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals.html; sourceTree = "<group>"; };
+ 24A2FF220F90D1DC003BB5A7 /* globals_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x62.html; sourceTree = "<group>"; };
+ 24A2FF230F90D1DC003BB5A7 /* globals_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x63.html; sourceTree = "<group>"; };
+ 24A2FF240F90D1DC003BB5A7 /* globals_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x64.html; sourceTree = "<group>"; };
+ 24A2FF250F90D1DC003BB5A7 /* globals_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x65.html; sourceTree = "<group>"; };
+ 24A2FF260F90D1DC003BB5A7 /* globals_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x66.html; sourceTree = "<group>"; };
+ 24A2FF270F90D1DC003BB5A7 /* globals_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x6b.html; sourceTree = "<group>"; };
+ 24A2FF280F90D1DC003BB5A7 /* globals_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x6d.html; sourceTree = "<group>"; };
+ 24A2FF290F90D1DC003BB5A7 /* globals_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x74.html; sourceTree = "<group>"; };
+ 24A2FF2A0F90D1DC003BB5A7 /* globals_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x76.html; sourceTree = "<group>"; };
+ 24A2FF2B0F90D1DC003BB5A7 /* globals_defs.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_defs.html; sourceTree = "<group>"; };
+ 24A2FF2C0F90D1DC003BB5A7 /* globals_enum.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_enum.html; sourceTree = "<group>"; };
+ 24A2FF2D0F90D1DC003BB5A7 /* globals_eval.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval.html; sourceTree = "<group>"; };
+ 24A2FF2E0F90D1DC003BB5A7 /* globals_eval_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval_0x65.html; sourceTree = "<group>"; };
+ 24A2FF2F0F90D1DC003BB5A7 /* globals_eval_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval_0x6b.html; sourceTree = "<group>"; };
+ 24A2FF300F90D1DC003BB5A7 /* globals_eval_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval_0x6d.html; sourceTree = "<group>"; };
+ 24A2FF310F90D1DC003BB5A7 /* globals_eval_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval_0x76.html; sourceTree = "<group>"; };
+ 24A2FF320F90D1DC003BB5A7 /* globals_func.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_func.html; sourceTree = "<group>"; };
+ 24A2FF330F90D1DC003BB5A7 /* globals_type.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_type.html; sourceTree = "<group>"; };
+ 24A2FF340F90D1DC003BB5A7 /* globals_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_vars.html; sourceTree = "<group>"; };
+ 24A2FF350F90D1DC003BB5A7 /* hierarchy.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = hierarchy.html; sourceTree = "<group>"; };
+ 24A2FF360F90D1DC003BB5A7 /* history.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = history.html; sourceTree = "<group>"; };
+ 24A2FF370F90D1DC003BB5A7 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = "<group>"; };
+ 24A2FF380F90D1DC003BB5A7 /* Initialisation.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Initialisation.gif; sourceTree = "<group>"; };
+ 24A2FF390F90D1DC003BB5A7 /* intro.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = intro.html; sourceTree = "<group>"; };
+ 24A2FF3A0F90D1DC003BB5A7 /* IOchange.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = IOchange.gif; sourceTree = "<group>"; };
+ 24A2FF3B0F90D1DC003BB5A7 /* license.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = license.html; sourceTree = "<group>"; };
+ 24A2FF3C0F90D1DC003BB5A7 /* maceditor.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = maceditor.html; sourceTree = "<group>"; };
+ 24A2FF3D0F90D1DC003BB5A7 /* main.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = main.html; sourceTree = "<group>"; };
+ 24A2FF3E0F90D1DC003BB5A7 /* namespace_host_can_dos.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespace_host_can_dos.html; sourceTree = "<group>"; };
+ 24A2FF3F0F90D1DC003BB5A7 /* namespace_plug_can_dos.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespace_plug_can_dos.html; sourceTree = "<group>"; };
+ 24A2FF400F90D1DC003BB5A7 /* namespacemembers.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespacemembers.html; sourceTree = "<group>"; };
+ 24A2FF410F90D1DC003BB5A7 /* namespacemembers_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespacemembers_vars.html; sourceTree = "<group>"; };
+ 24A2FF420F90D1DC003BB5A7 /* namespaces.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespaces.html; sourceTree = "<group>"; };
+ 24A2FF430F90D1DC003BB5A7 /* Offlineprocessing.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Offlineprocessing.gif; sourceTree = "<group>"; };
+ 24A2FF440F90D1DC003BB5A7 /* others.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = others.html; sourceTree = "<group>"; };
+ 24A2FF450F90D1DC003BB5A7 /* pages.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = pages.html; sourceTree = "<group>"; };
+ 24A2FF460F90D1DC003BB5A7 /* Sampleratechange.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Sampleratechange.gif; sourceTree = "<group>"; };
+ 24A2FF470F90D1DC003BB5A7 /* sequences.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = sequences.html; sourceTree = "<group>"; };
+ 24A2FF480F90D1DC003BB5A7 /* SpeakerarrangementnegotiationforVSTfx.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = SpeakerarrangementnegotiationforVSTfx.gif; sourceTree = "<group>"; };
+ 24A2FF490F90D1DC003BB5A7 /* struct_a_effect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_a_effect-members.html"; sourceTree = "<group>"; };
+ 24A2FF4A0F90D1DC003BB5A7 /* struct_a_effect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_a_effect.html; sourceTree = "<group>"; };
+ 24A2FF4B0F90D1DC003BB5A7 /* struct_e_rect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_e_rect-members.html"; sourceTree = "<group>"; };
+ 24A2FF4C0F90D1DC003BB5A7 /* struct_e_rect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_e_rect.html; sourceTree = "<group>"; };
+ 24A2FF4D0F90D1DC003BB5A7 /* struct_midi_key_name-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_midi_key_name-members.html"; sourceTree = "<group>"; };
+ 24A2FF4E0F90D1DC003BB5A7 /* struct_midi_key_name.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_midi_key_name.html; sourceTree = "<group>"; };
+ 24A2FF4F0F90D1DC003BB5A7 /* struct_midi_program_category-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_midi_program_category-members.html"; sourceTree = "<group>"; };
+ 24A2FF500F90D1DC003BB5A7 /* struct_midi_program_category.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_midi_program_category.html; sourceTree = "<group>"; };
+ 24A2FF510F90D1DC003BB5A7 /* struct_midi_program_name-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_midi_program_name-members.html"; sourceTree = "<group>"; };
+ 24A2FF520F90D1DC003BB5A7 /* struct_midi_program_name.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_midi_program_name.html; sourceTree = "<group>"; };
+ 24A2FF530F90D1DC003BB5A7 /* struct_vst_audio_file-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_audio_file-members.html"; sourceTree = "<group>"; };
+ 24A2FF540F90D1DC003BB5A7 /* struct_vst_audio_file.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_audio_file.html; sourceTree = "<group>"; };
+ 24A2FF550F90D1DC003BB5A7 /* struct_vst_audio_file_marker-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_audio_file_marker-members.html"; sourceTree = "<group>"; };
+ 24A2FF560F90D1DC003BB5A7 /* struct_vst_audio_file_marker.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_audio_file_marker.html; sourceTree = "<group>"; };
+ 24A2FF570F90D1DC003BB5A7 /* struct_vst_event-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_event-members.html"; sourceTree = "<group>"; };
+ 24A2FF580F90D1DC003BB5A7 /* struct_vst_event.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_event.html; sourceTree = "<group>"; };
+ 24A2FF590F90D1DD003BB5A7 /* struct_vst_events-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_events-members.html"; sourceTree = "<group>"; };
+ 24A2FF5A0F90D1DD003BB5A7 /* struct_vst_events.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_events.html; sourceTree = "<group>"; };
+ 24A2FF5B0F90D1DD003BB5A7 /* struct_vst_file_select-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_file_select-members.html"; sourceTree = "<group>"; };
+ 24A2FF5C0F90D1DD003BB5A7 /* struct_vst_file_select.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_file_select.html; sourceTree = "<group>"; };
+ 24A2FF5D0F90D1DD003BB5A7 /* struct_vst_file_type-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_file_type-members.html"; sourceTree = "<group>"; };
+ 24A2FF5E0F90D1DD003BB5A7 /* struct_vst_file_type.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_file_type.html; sourceTree = "<group>"; };
+ 24A2FF5F0F90D1DD003BB5A7 /* struct_vst_key_code-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_key_code-members.html"; sourceTree = "<group>"; };
+ 24A2FF600F90D1DD003BB5A7 /* struct_vst_key_code.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_key_code.html; sourceTree = "<group>"; };
+ 24A2FF610F90D1DD003BB5A7 /* struct_vst_midi_event-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_midi_event-members.html"; sourceTree = "<group>"; };
+ 24A2FF620F90D1DD003BB5A7 /* struct_vst_midi_event.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_midi_event.html; sourceTree = "<group>"; };
+ 24A2FF630F90D1DD003BB5A7 /* struct_vst_midi_sysex_event-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_midi_sysex_event-members.html"; sourceTree = "<group>"; };
+ 24A2FF640F90D1DD003BB5A7 /* struct_vst_midi_sysex_event.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_midi_sysex_event.html; sourceTree = "<group>"; };
+ 24A2FF650F90D1DD003BB5A7 /* struct_vst_offline_task-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_offline_task-members.html"; sourceTree = "<group>"; };
+ 24A2FF660F90D1DD003BB5A7 /* struct_vst_offline_task.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_offline_task.html; sourceTree = "<group>"; };
+ 24A2FF670F90D1DD003BB5A7 /* struct_vst_parameter_properties-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_parameter_properties-members.html"; sourceTree = "<group>"; };
+ 24A2FF680F90D1DD003BB5A7 /* struct_vst_parameter_properties.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_parameter_properties.html; sourceTree = "<group>"; };
+ 24A2FF690F90D1DD003BB5A7 /* struct_vst_patch_chunk_info-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_patch_chunk_info-members.html"; sourceTree = "<group>"; };
+ 24A2FF6A0F90D1DD003BB5A7 /* struct_vst_patch_chunk_info.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_patch_chunk_info.html; sourceTree = "<group>"; };
+ 24A2FF6B0F90D1DD003BB5A7 /* struct_vst_pin_properties-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_pin_properties-members.html"; sourceTree = "<group>"; };
+ 24A2FF6C0F90D1DD003BB5A7 /* struct_vst_pin_properties.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_pin_properties.html; sourceTree = "<group>"; };
+ 24A2FF6D0F90D1DD003BB5A7 /* struct_vst_speaker_arrangement-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_speaker_arrangement-members.html"; sourceTree = "<group>"; };
+ 24A2FF6E0F90D1DD003BB5A7 /* struct_vst_speaker_arrangement.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_speaker_arrangement.html; sourceTree = "<group>"; };
+ 24A2FF6F0F90D1DD003BB5A7 /* struct_vst_speaker_properties-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_speaker_properties-members.html"; sourceTree = "<group>"; };
+ 24A2FF700F90D1DD003BB5A7 /* struct_vst_speaker_properties.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_speaker_properties.html; sourceTree = "<group>"; };
+ 24A2FF710F90D1DD003BB5A7 /* struct_vst_time_info-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_time_info-members.html"; sourceTree = "<group>"; };
+ 24A2FF720F90D1DD003BB5A7 /* struct_vst_time_info.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_time_info.html; sourceTree = "<group>"; };
+ 24A2FF730F90D1DD003BB5A7 /* struct_vst_variable_io-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_variable_io-members.html"; sourceTree = "<group>"; };
+ 24A2FF740F90D1DD003BB5A7 /* struct_vst_variable_io.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_variable_io.html; sourceTree = "<group>"; };
+ 24A2FF750F90D1DD003BB5A7 /* struct_vst_window-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_window-members.html"; sourceTree = "<group>"; };
+ 24A2FF760F90D1DD003BB5A7 /* struct_vst_window.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_window.html; sourceTree = "<group>"; };
+ 24A2FF770F90D1DD003BB5A7 /* structfx_bank-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "structfx_bank-members.html"; sourceTree = "<group>"; };
+ 24A2FF780F90D1DD003BB5A7 /* structfx_bank.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = structfx_bank.html; sourceTree = "<group>"; };
+ 24A2FF790F90D1DD003BB5A7 /* structfx_program-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "structfx_program-members.html"; sourceTree = "<group>"; };
+ 24A2FF7A0F90D1DD003BB5A7 /* structfx_program.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = structfx_program.html; sourceTree = "<group>"; };
+ 24A2FF7B0F90D1DD003BB5A7 /* tab_b.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_b.gif; sourceTree = "<group>"; };
+ 24A2FF7C0F90D1DD003BB5A7 /* tab_l.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_l.gif; sourceTree = "<group>"; };
+ 24A2FF7D0F90D1DD003BB5A7 /* tab_r.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_r.gif; sourceTree = "<group>"; };
+ 24A2FF7E0F90D1DD003BB5A7 /* tabs.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = tabs.css; sourceTree = "<group>"; };
+ 24A2FF7F0F90D1DD003BB5A7 /* Termination.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Termination.gif; sourceTree = "<group>"; };
+ 24A2FF800F90D1DD003BB5A7 /* thanks.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = thanks.html; sourceTree = "<group>"; };
+ 24A2FF810F90D1DD003BB5A7 /* tree.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = tree.html; sourceTree = "<group>"; };
+ 24A2FF820F90D1DD003BB5A7 /* TurnOff.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = TurnOff.gif; sourceTree = "<group>"; };
+ 24A2FF830F90D1DD003BB5A7 /* TurnOn.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = TurnOn.gif; sourceTree = "<group>"; };
+ 24A2FF840F90D1DD003BB5A7 /* vstfxstore_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = vstfxstore_8h.html; sourceTree = "<group>"; };
+ 24A2FF850F90D1DD003BB5A7 /* vstoffline.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = vstoffline.html; sourceTree = "<group>"; };
+ 24A2FF860F90D1DD003BB5A7 /* vstparamstruct.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = vstparamstruct.html; sourceTree = "<group>"; };
+ 24A2FF870F90D1DD003BB5A7 /* vstpluglogo.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = vstpluglogo.jpg; sourceTree = "<group>"; };
+ 24A2FF880F90D1DD003BB5A7 /* vstplugmain_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = vstplugmain_8cpp.html; sourceTree = "<group>"; };
+ 24A2FF890F90D1DD003BB5A7 /* whatsnew.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = whatsnew.html; sourceTree = "<group>"; };
+ 24A2FF8A0F90D1DD003BB5A7 /* sdk.menu.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = sdk.menu.html; sourceTree = "<group>"; };
+ 24A2FF8B0F90D1DD003BB5A7 /* sdk.overview.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = sdk.overview.html; sourceTree = "<group>"; };
+ 24A2FF8C0F90D1DD003BB5A7 /* sdkdoc.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = sdkdoc.css; sourceTree = "<group>"; };
+ 24A2FF8D0F90D1DD003BB5A7 /* VST Licensing Agreement.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = "VST Licensing Agreement.rtf"; sourceTree = "<group>"; };
+ 24A2FF8E0F90D1DD003BB5A7 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = "<group>"; };
+ 24A2FF910F90D1DD003BB5A7 /* aeffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffect.h; sourceTree = "<group>"; };
+ 24A2FF920F90D1DD003BB5A7 /* aeffectx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffectx.h; sourceTree = "<group>"; };
+ 24A2FF930F90D1DD003BB5A7 /* vstfxstore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstfxstore.h; sourceTree = "<group>"; };
+ 24A2FF980F90D1DD003BB5A7 /* adelay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = adelay.cpp; sourceTree = "<group>"; };
+ 24A2FF990F90D1DD003BB5A7 /* adelay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = adelay.h; sourceTree = "<group>"; };
+ 24A2FF9A0F90D1DD003BB5A7 /* adelaymain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = adelaymain.cpp; sourceTree = "<group>"; };
+ 24A2FF9D0F90D1DD003BB5A7 /* bmp00128.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp00128.bmp; sourceTree = "<group>"; };
+ 24A2FF9E0F90D1DD003BB5A7 /* bmp00129.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp00129.bmp; sourceTree = "<group>"; };
+ 24A2FF9F0F90D1DD003BB5A7 /* bmp00130.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp00130.bmp; sourceTree = "<group>"; };
+ 24A2FFA00F90D1DD003BB5A7 /* surrounddelay.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = surrounddelay.rc; sourceTree = "<group>"; };
+ 24A2FFA10F90D1DD003BB5A7 /* sdeditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sdeditor.cpp; sourceTree = "<group>"; };
+ 24A2FFA20F90D1DD003BB5A7 /* sdeditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sdeditor.h; sourceTree = "<group>"; };
+ 24A2FFA30F90D1DD003BB5A7 /* surrounddelay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = surrounddelay.cpp; sourceTree = "<group>"; };
+ 24A2FFA40F90D1DD003BB5A7 /* surrounddelay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = surrounddelay.h; sourceTree = "<group>"; };
+ 24A2FFA60F90D1DD003BB5A7 /* adelay.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = adelay.vcproj; sourceTree = "<group>"; };
+ 24A2FFA70F90D1DD003BB5A7 /* surrounddelay.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = surrounddelay.vcproj; sourceTree = "<group>"; };
+ 24A2FFAA0F90D1DD003BB5A7 /* again.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = again.cpp; sourceTree = "<group>"; };
+ 24A2FFAB0F90D1DD003BB5A7 /* again.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = again.h; sourceTree = "<group>"; };
+ 24A2FFAD0F90D1DD003BB5A7 /* again.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = again.vcproj; sourceTree = "<group>"; };
+ 24A2FFAF0F90D1DD003BB5A7 /* minihost-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "minihost-Info.plist"; sourceTree = "<group>"; };
+ 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = "vst 2.4 examples.xcodeproj"; sourceTree = "<group>"; };
+ 24A2FFB30F90D1DD003BB5A7 /* vst2.4Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = vst2.4Info.plist; sourceTree = "<group>"; };
+ 24A2FFB60F90D1DD003BB5A7 /* minieditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = minieditor.cpp; sourceTree = "<group>"; };
+ 24A2FFB70F90D1DD003BB5A7 /* minihost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = minihost.cpp; sourceTree = "<group>"; };
+ 24A2FFB90F90D1DD003BB5A7 /* minihost.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = minihost.vcproj; sourceTree = "<group>"; };
+ 24A2FFBC0F90D1DD003BB5A7 /* vstxsynth.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vstxsynth.rc; sourceTree = "<group>"; };
+ 24A2FFBD0F90D1DD003BB5A7 /* vstxsynth.vstxml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vstxsynth.vstxml; sourceTree = "<group>"; };
+ 24A2FFBF0F90D1DD003BB5A7 /* gmnames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gmnames.h; sourceTree = "<group>"; };
+ 24A2FFC00F90D1DD003BB5A7 /* vstxsynth.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstxsynth.cpp; sourceTree = "<group>"; };
+ 24A2FFC10F90D1DD003BB5A7 /* vstxsynth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstxsynth.h; sourceTree = "<group>"; };
+ 24A2FFC20F90D1DD003BB5A7 /* vstxsynthproc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstxsynthproc.cpp; sourceTree = "<group>"; };
+ 24A2FFC40F90D1DD003BB5A7 /* vstxsynth.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = vstxsynth.vcproj; sourceTree = "<group>"; };
+ 24A2FFC60F90D1DD003BB5A7 /* samples.sln */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = samples.sln; sourceTree = "<group>"; };
+ 24A2FFC70F90D1DD003BB5A7 /* vstplug.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vstplug.def; sourceTree = "<group>"; };
+ 24A2FFC90F90D1DD003BB5A7 /* adelay.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = adelay.vcproj; sourceTree = "<group>"; };
+ 24A2FFCA0F90D1DD003BB5A7 /* again.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = again.vcproj; sourceTree = "<group>"; };
+ 24A2FFCB0F90D1DD003BB5A7 /* minihost.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = minihost.vcproj; sourceTree = "<group>"; };
+ 24A2FFCC0F90D1DD003BB5A7 /* samples.sln */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = samples.sln; sourceTree = "<group>"; };
+ 24A2FFCD0F90D1DD003BB5A7 /* surrounddelay.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = surrounddelay.vcproj; sourceTree = "<group>"; };
+ 24A2FFCE0F90D1DD003BB5A7 /* vstxsynth.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = vstxsynth.vcproj; sourceTree = "<group>"; };
+ 24A2FFD00F90D1DD003BB5A7 /* adelay.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = adelay.dsp; sourceTree = "<group>"; };
+ 24A2FFD10F90D1DD003BB5A7 /* again.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = again.dsp; sourceTree = "<group>"; };
+ 24A2FFD20F90D1DD003BB5A7 /* minihost.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = minihost.dsp; sourceTree = "<group>"; };
+ 24A2FFD30F90D1DD003BB5A7 /* samples.dsw */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = samples.dsw; sourceTree = "<group>"; };
+ 24A2FFD40F90D1DD003BB5A7 /* surrounddelay.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = surrounddelay.dsp; sourceTree = "<group>"; };
+ 24A2FFD50F90D1DD003BB5A7 /* vstxsynth.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vstxsynth.dsp; sourceTree = "<group>"; };
+ 24A2FFD80F90D1DD003BB5A7 /* aeffeditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffeditor.h; sourceTree = "<group>"; };
+ 24A2FFD90F90D1DD003BB5A7 /* audioeffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioeffect.cpp; sourceTree = "<group>"; };
+ 24A2FFDA0F90D1DD003BB5A7 /* audioeffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioeffect.h; sourceTree = "<group>"; };
+ 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioeffectx.cpp; sourceTree = "<group>"; };
+ 24A2FFDC0F90D1DD003BB5A7 /* audioeffectx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioeffectx.h; sourceTree = "<group>"; };
+ 24A2FFDD0F90D1DD003BB5A7 /* vstplugmain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstplugmain.cpp; sourceTree = "<group>"; };
+ 24A2FFE10F90D1DD003BB5A7 /* audiounit.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = audiounit.exp; sourceTree = "<group>"; };
+ 24A2FFE20F90D1DD003BB5A7 /* cw_vst_prefix.pch++ */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = "cw_vst_prefix.pch++"; sourceTree = "<group>"; };
+ 24A2FFE30F90D1DD003BB5A7 /* drawtest.cw9prj */ = {isa = PBXFileReference; lastKnownFileType = file; path = drawtest.cw9prj; sourceTree = "<group>"; };
+ 24A2FFE40F90D1DD003BB5A7 /* drawtest.plc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.plc; sourceTree = "<group>"; };
+ 24A2FFE50F90D1DD003BB5A7 /* drawtest.xcode */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = drawtest.xcode; sourceTree = "<group>"; };
+ 24A2FFE80F90D1DD003BB5A7 /* drawtest.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = drawtest.xcodeproj; sourceTree = "<group>"; };
+ 24A2FFEB0F90D1DD003BB5A7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ 24A2FFEC0F90D1DD003BB5A7 /* xcode_au_prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xcode_au_prefix.h; sourceTree = "<group>"; };
+ 24A2FFED0F90D1DD003BB5A7 /* xcode_vst_prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xcode_vst_prefix.h; sourceTree = "<group>"; };
+ 24A2FFEF0F90D1DD003BB5A7 /* audiounit.r */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.rez; path = audiounit.r; sourceTree = "<group>"; };
+ 24A2FFF00F90D1DD003BB5A7 /* bmp00001.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bmp00001.png; sourceTree = "<group>"; };
+ 24A2FFF10F90D1DD003BB5A7 /* bmp00100.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bmp00100.png; sourceTree = "<group>"; };
+ 24A2FFF20F90D1DD003BB5A7 /* bmp01000.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bmp01000.png; sourceTree = "<group>"; };
+ 24A2FFF30F90D1DD003BB5A7 /* bmp10001.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10001.bmp; sourceTree = "<group>"; };
+ 24A2FFF40F90D1DD003BB5A7 /* bmp10002.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10002.bmp; sourceTree = "<group>"; };
+ 24A2FFF50F90D1DD003BB5A7 /* bmp10003.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10003.bmp; sourceTree = "<group>"; };
+ 24A2FFF60F90D1DD003BB5A7 /* bmp10004.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10004.bmp; sourceTree = "<group>"; };
+ 24A2FFF70F90D1DD003BB5A7 /* bmp10005.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10005.bmp; sourceTree = "<group>"; };
+ 24A2FFF80F90D1DD003BB5A7 /* bmp10006.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10006.bmp; sourceTree = "<group>"; };
+ 24A2FFF90F90D1DD003BB5A7 /* bmp10007.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10007.bmp; sourceTree = "<group>"; };
+ 24A2FFFA0F90D1DD003BB5A7 /* bmp10008.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10008.bmp; sourceTree = "<group>"; };
+ 24A2FFFB0F90D1DD003BB5A7 /* bmp10009.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10009.bmp; sourceTree = "<group>"; };
+ 24A2FFFC0F90D1DD003BB5A7 /* bmp10010.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10010.bmp; sourceTree = "<group>"; };
+ 24A2FFFD0F90D1DD003BB5A7 /* bmp10011.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10011.bmp; sourceTree = "<group>"; };
+ 24A2FFFE0F90D1DD003BB5A7 /* bmp10012.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10012.bmp; sourceTree = "<group>"; };
+ 24A2FFFF0F90D1DD003BB5A7 /* bmp10013.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10013.bmp; sourceTree = "<group>"; };
+ 24CFB70307E7A0220081BD57 /* PkgInfo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PkgInfo; path = mac/PkgInfo; sourceTree = "<group>"; };
+ 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DitherFloatProc.cpp; path = source/DitherFloatProc.cpp; sourceTree = "<group>"; };
+ 24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = xcode_vst_prefix.h; path = mac/xcode_vst_prefix.h; sourceTree = SOURCE_ROOT; };
+ 8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = mac/Info.plist; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXGroup section */
+ 089C166AFE841209C02AAC07 /* FM-Chopper */ = {
+ isa = PBXGroup;
+ children = (
+ 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
+ 19C28FB4FE9D528D11CA2CBB /* Products */,
+ 089C167CFE841241C02AAC07 /* Resources */,
+ 08FB77ADFE841716C02AAC07 /* Source */,
+ 24A2FEBB0F90D1DB003BB5A7 /* vstsdk2.4 */,
+ );
+ name = "FM-Chopper";
+ sourceTree = "<group>";
+ };
+ 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ 2434720A098313350063BBF1 /* QuickTime.framework */,
+ 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */,
+ );
+ name = "External Frameworks and Libraries";
+ sourceTree = "<group>";
+ };
+ 089C167CFE841241C02AAC07 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */,
+ 24CFB70307E7A0220081BD57 /* PkgInfo */,
+ 8D01CCD10486CAD60068D4B7 /* Info.plist */,
+ );
+ name = Resources;
+ sourceTree = "<group>";
+ };
+ 08FB77ADFE841716C02AAC07 /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ 2407DEB6089929BA00EB68BF /* DitherFloat.cpp */,
+ 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */,
+ 245463B80991757100464AD3 /* DitherFloat.h */,
+ );
+ name = Source;
+ sourceTree = "<group>";
+ };
+ 19C28FB4FE9D528D11CA2CBB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 2407DE920899296600EB68BF /* DitherFloat.vst */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 24A200030F90D1DD003BB5A7 /* source */ = {
+ isa = PBXGroup;
+ children = (
+ 24A200040F90D1DD003BB5A7 /* controlsgui.cpp */,
+ 24A200050F90D1DD003BB5A7 /* controlsgui.h */,
+ 24A200060F90D1DD003BB5A7 /* pdrawtesteditor.cpp */,
+ 24A200070F90D1DD003BB5A7 /* pdrawtesteditor.h */,
+ 24A200080F90D1DD003BB5A7 /* pdrawtesteffect.cpp */,
+ 24A200090F90D1DD003BB5A7 /* pdrawtesteffect.h */,
+ 24A2000A0F90D1DD003BB5A7 /* pdrawtestmain.cpp */,
+ 24A2000B0F90D1DD003BB5A7 /* pdrawtestview.cpp */,
+ 24A2000C0F90D1DD003BB5A7 /* pdrawtestview.h */,
+ 24A2000D0F90D1DD003BB5A7 /* pprimitivesviews.cpp */,
+ 24A2000E0F90D1DD003BB5A7 /* pprimitivesviews.h */,
+ );
+ name = source;
+ path = /vstsdk2.4/vstgui.sf/drawtest/source;
+ sourceTree = "<absolute>";
+ };
+ 24A2000F0F90D1DD003BB5A7 /* win */ = {
+ isa = PBXGroup;
+ children = (
+ 24A200100F90D1DD003BB5A7 /* drawtest.def */,
+ 24A200110F90D1DD003BB5A7 /* drawtest.rc */,
+ 24A200120F90D1DD003BB5A7 /* drawtest.vcproj */,
+ );
+ name = win;
+ path = /vstsdk2.4/vstgui.sf/drawtest/win;
+ sourceTree = "<absolute>";
+ };
+ 24A200130F90D1DD003BB5A7 /* win.vc6 */ = {
+ isa = PBXGroup;
+ children = (
+ 24A200140F90D1DD003BB5A7 /* drawtest.dsp */,
+ 24A200150F90D1DD003BB5A7 /* drawtest.dsw */,
+ );
+ name = win.vc6;
+ path = /vstsdk2.4/vstgui.sf/drawtest/win.vc6;
+ sourceTree = "<absolute>";
+ };
+ 24A200160F90D1DD003BB5A7 /* vstgui */ = {
+ isa = PBXGroup;
+ children = (
+ 24A200170F90D1DD003BB5A7 /* aeffguieditor.cpp */,
+ 24A200180F90D1DD003BB5A7 /* aeffguieditor.h */,
+ 24A200190F90D1DD003BB5A7 /* cfileselector.cpp */,
+ 24A2001A0F90D1DD003BB5A7 /* cfileselector.h */,
+ 24A2001B0F90D1DD003BB5A7 /* Changelog */,
+ 24A2001C0F90D1DD003BB5A7 /* cscrollview.cpp */,
+ 24A2001D0F90D1DD003BB5A7 /* cscrollview.h */,
+ 24A2001E0F90D1DD003BB5A7 /* ctabview.cpp */,
+ 24A2001F0F90D1DD003BB5A7 /* ctabview.h */,
+ 24A200200F90D1DD003BB5A7 /* Documentation */,
+ 24A201460F90D1DE003BB5A7 /* plugguieditor.cpp */,
+ 24A201470F90D1DE003BB5A7 /* plugguieditor.h */,
+ 24A201480F90D1DE003BB5A7 /* vstcontrols.cpp */,
+ 24A201490F90D1DE003BB5A7 /* vstcontrols.h */,
+ 24A2014A0F90D1DE003BB5A7 /* vstgui.cpp */,
+ 24A2014B0F90D1DE003BB5A7 /* vstgui.h */,
+ 24A2014C0F90D1DE003BB5A7 /* vstkeycode.h */,
+ 24A2014D0F90D1DE003BB5A7 /* vstplugscarbon.h */,
+ 24A2014E0F90D1DE003BB5A7 /* vstplugsmac.h */,
+ 24A2014F0F90D1DE003BB5A7 /* vstplugsmacho.h */,
+ 24A201500F90D1DE003BB5A7 /* vstplugsquartz.h */,
+ );
+ name = vstgui;
+ path = /vstsdk2.4/vstgui.sf/vstgui;
+ sourceTree = "<absolute>";
+ };
+ 24A200200F90D1DD003BB5A7 /* Documentation */ = {
+ isa = PBXGroup;
+ children = (
+ 24A200210F90D1DD003BB5A7 /* html */,
+ 24A201440F90D1DE003BB5A7 /* index.html */,
+ 24A201450F90D1DE003BB5A7 /* Migrating from 2.3.rtf */,
+ );
+ name = Documentation;
+ path = /vstsdk2.4/vstgui.sf/vstgui/Documentation;
+ sourceTree = "<absolute>";
+ };
+ 24A200210F90D1DD003BB5A7 /* html */ = {
+ isa = PBXGroup;
+ children = (
+ 24A200220F90D1DD003BB5A7 /* aeffguieditor_8cpp.html */,
+ 24A200230F90D1DD003BB5A7 /* aeffguieditor_8h.html */,
+ 24A200240F90D1DD003BB5A7 /* annotated.html */,
+ 24A200250F90D1DD003BB5A7 /* cfileselector_8cpp.html */,
+ 24A200260F90D1DD003BB5A7 /* cfileselector_8h.html */,
+ 24A200270F90D1DD003BB5A7 /* class_a_eff_g_u_i_editor-members.html */,
+ 24A200280F90D1DD003BB5A7 /* class_a_eff_g_u_i_editor.html */,
+ 24A200290F90D1DD003BB5A7 /* class_c_anim_knob-members.html */,
+ 24A2002A0F90D1DD003BB5A7 /* class_c_anim_knob.html */,
+ 24A2002B0F90D1DD003BB5A7 /* class_c_anim_knob.png */,
+ 24A2002C0F90D1DD003BB5A7 /* class_c_attribute_list_entry-members.html */,
+ 24A2002D0F90D1DD003BB5A7 /* class_c_attribute_list_entry.html */,
+ 24A2002E0F90D1DD003BB5A7 /* class_c_auto_animation-members.html */,
+ 24A2002F0F90D1DD003BB5A7 /* class_c_auto_animation.html */,
+ 24A200300F90D1DD003BB5A7 /* class_c_auto_animation.png */,
+ 24A200310F90D1DD003BB5A7 /* class_c_bitmap-members.html */,
+ 24A200320F90D1DD003BB5A7 /* class_c_bitmap.html */,
+ 24A200330F90D1DD003BB5A7 /* class_c_bitmap.png */,
+ 24A200340F90D1DD003BB5A7 /* class_c_c_view-members.html */,
+ 24A200350F90D1DD003BB5A7 /* class_c_c_view.html */,
+ 24A200360F90D1DD003BB5A7 /* class_c_control-members.html */,
+ 24A200370F90D1DD003BB5A7 /* class_c_control.html */,
+ 24A200380F90D1DD003BB5A7 /* class_c_control.png */,
+ 24A200390F90D1DD003BB5A7 /* class_c_control_listener-members.html */,
+ 24A2003A0F90D1DD003BB5A7 /* class_c_control_listener.html */,
+ 24A2003B0F90D1DD003BB5A7 /* class_c_control_listener.png */,
+ 24A2003C0F90D1DD003BB5A7 /* class_c_drag_container-members.html */,
+ 24A2003D0F90D1DD003BB5A7 /* class_c_drag_container.html */,
+ 24A2003E0F90D1DD003BB5A7 /* class_c_drag_container.png */,
+ 24A2003F0F90D1DD003BB5A7 /* class_c_draw_context-members.html */,
+ 24A200400F90D1DD003BB5A7 /* class_c_draw_context.html */,
+ 24A200410F90D1DD003BB5A7 /* class_c_draw_context.png */,
+ 24A200420F90D1DD003BB5A7 /* class_c_file_selector-members.html */,
+ 24A200430F90D1DD003BB5A7 /* class_c_file_selector.html */,
+ 24A200440F90D1DD003BB5A7 /* class_c_frame-members.html */,
+ 24A200450F90D1DD003BB5A7 /* class_c_frame.html */,
+ 24A200460F90D1DD003BB5A7 /* class_c_frame.png */,
+ 24A200470F90D1DD003BB5A7 /* class_c_horizontal_slider-members.html */,
+ 24A200480F90D1DD003BB5A7 /* class_c_horizontal_slider.html */,
+ 24A200490F90D1DD003BB5A7 /* class_c_horizontal_slider.png */,
+ 24A2004A0F90D1DD003BB5A7 /* class_c_horizontal_switch-members.html */,
+ 24A2004B0F90D1DD003BB5A7 /* class_c_horizontal_switch.html */,
+ 24A2004C0F90D1DD003BB5A7 /* class_c_horizontal_switch.png */,
+ 24A2004D0F90D1DD003BB5A7 /* class_c_kick_button-members.html */,
+ 24A2004E0F90D1DD003BB5A7 /* class_c_kick_button.html */,
+ 24A2004F0F90D1DD003BB5A7 /* class_c_kick_button.png */,
+ 24A200500F90D1DD003BB5A7 /* class_c_knob-members.html */,
+ 24A200510F90D1DD003BB5A7 /* class_c_knob.html */,
+ 24A200520F90D1DD003BB5A7 /* class_c_knob.png */,
+ 24A200530F90D1DD003BB5A7 /* class_c_movie_bitmap-members.html */,
+ 24A200540F90D1DD003BB5A7 /* class_c_movie_bitmap.html */,
+ 24A200550F90D1DD003BB5A7 /* class_c_movie_bitmap.png */,
+ 24A200560F90D1DD003BB5A7 /* class_c_movie_button-members.html */,
+ 24A200570F90D1DD003BB5A7 /* class_c_movie_button.html */,
+ 24A200580F90D1DD003BB5A7 /* class_c_movie_button.png */,
+ 24A200590F90D1DD003BB5A7 /* class_c_offscreen_context-members.html */,
+ 24A2005A0F90D1DD003BB5A7 /* class_c_offscreen_context.html */,
+ 24A2005B0F90D1DD003BB5A7 /* class_c_offscreen_context.png */,
+ 24A2005C0F90D1DD003BB5A7 /* class_c_on_off_button-members.html */,
+ 24A2005D0F90D1DD003BB5A7 /* class_c_on_off_button.html */,
+ 24A2005E0F90D1DD003BB5A7 /* class_c_on_off_button.png */,
+ 24A2005F0F90D1DD003BB5A7 /* class_c_option_menu-members.html */,
+ 24A200600F90D1DD003BB5A7 /* class_c_option_menu.html */,
+ 24A200610F90D1DD003BB5A7 /* class_c_option_menu.png */,
+ 24A200620F90D1DD003BB5A7 /* class_c_option_menu_scheme-members.html */,
+ 24A200630F90D1DD003BB5A7 /* class_c_option_menu_scheme.html */,
+ 24A200640F90D1DD003BB5A7 /* class_c_option_menu_scheme.png */,
+ 24A200650F90D1DD003BB5A7 /* class_c_param_display-members.html */,
+ 24A200660F90D1DD003BB5A7 /* class_c_param_display.html */,
+ 24A200670F90D1DD003BB5A7 /* class_c_param_display.png */,
+ 24A200680F90D1DD003BB5A7 /* class_c_reference_counter-members.html */,
+ 24A200690F90D1DD003BB5A7 /* class_c_reference_counter.html */,
+ 24A2006A0F90D1DD003BB5A7 /* class_c_reference_counter.png */,
+ 24A2006B0F90D1DD003BB5A7 /* class_c_rocker_switch-members.html */,
+ 24A2006C0F90D1DD003BB5A7 /* class_c_rocker_switch.html */,
+ 24A2006D0F90D1DD003BB5A7 /* class_c_rocker_switch.png */,
+ 24A2006E0F90D1DD003BB5A7 /* class_c_scroll_container-members.html */,
+ 24A2006F0F90D1DD003BB5A7 /* class_c_scroll_container.html */,
+ 24A200700F90D1DD003BB5A7 /* class_c_scroll_container.png */,
+ 24A200710F90D1DD003BB5A7 /* class_c_scroll_view-members.html */,
+ 24A200720F90D1DD003BB5A7 /* class_c_scroll_view.html */,
+ 24A200730F90D1DD003BB5A7 /* class_c_scroll_view.png */,
+ 24A200740F90D1DD003BB5A7 /* class_c_scrollbar-members.html */,
+ 24A200750F90D1DD003BB5A7 /* class_c_scrollbar.html */,
+ 24A200760F90D1DD003BB5A7 /* class_c_scrollbar.png */,
+ 24A200770F90D1DD003BB5A7 /* class_c_slider-members.html */,
+ 24A200780F90D1DD003BB5A7 /* class_c_slider.html */,
+ 24A200790F90D1DD003BB5A7 /* class_c_slider.png */,
+ 24A2007A0F90D1DD003BB5A7 /* class_c_special_digit-members.html */,
+ 24A2007B0F90D1DD003BB5A7 /* class_c_special_digit.html */,
+ 24A2007C0F90D1DD003BB5A7 /* class_c_special_digit.png */,
+ 24A2007D0F90D1DD003BB5A7 /* class_c_splash_screen-members.html */,
+ 24A2007E0F90D1DD003BB5A7 /* class_c_splash_screen.html */,
+ 24A2007F0F90D1DD003BB5A7 /* class_c_splash_screen.png */,
+ 24A200800F90D1DD003BB5A7 /* class_c_splash_screen_view-members.html */,
+ 24A200810F90D1DD003BB5A7 /* class_c_splash_screen_view.html */,
+ 24A200820F90D1DD003BB5A7 /* class_c_splash_screen_view.png */,
+ 24A200830F90D1DD003BB5A7 /* class_c_tab_button-members.html */,
+ 24A200840F90D1DD003BB5A7 /* class_c_tab_button.html */,
+ 24A200850F90D1DD003BB5A7 /* class_c_tab_button.png */,
+ 24A200860F90D1DD003BB5A7 /* class_c_tab_child_view-members.html */,
+ 24A200870F90D1DD003BB5A7 /* class_c_tab_child_view.html */,
+ 24A200880F90D1DD003BB5A7 /* class_c_tab_child_view.png */,
+ 24A200890F90D1DD003BB5A7 /* class_c_tab_view-members.html */,
+ 24A2008A0F90D1DD003BB5A7 /* class_c_tab_view.html */,
+ 24A2008B0F90D1DD003BB5A7 /* class_c_tab_view.png */,
+ 24A2008C0F90D1DD003BB5A7 /* class_c_text_edit-members.html */,
+ 24A2008D0F90D1DD003BB5A7 /* class_c_text_edit.html */,
+ 24A2008E0F90D1DD003BB5A7 /* class_c_text_edit.png */,
+ 24A2008F0F90D1DD003BB5A7 /* class_c_text_label-members.html */,
+ 24A200900F90D1DD003BB5A7 /* class_c_text_label.html */,
+ 24A200910F90D1DD003BB5A7 /* class_c_text_label.png */,
+ 24A200920F90D1DD003BB5A7 /* class_c_vertical_slider-members.html */,
+ 24A200930F90D1DD003BB5A7 /* class_c_vertical_slider.html */,
+ 24A200940F90D1DD003BB5A7 /* class_c_vertical_slider.png */,
+ 24A200950F90D1DD003BB5A7 /* class_c_vertical_switch-members.html */,
+ 24A200960F90D1DD003BB5A7 /* class_c_vertical_switch.html */,
+ 24A200970F90D1DD003BB5A7 /* class_c_vertical_switch.png */,
+ 24A200980F90D1DD003BB5A7 /* class_c_view-members.html */,
+ 24A200990F90D1DD003BB5A7 /* class_c_view.html */,
+ 24A2009A0F90D1DD003BB5A7 /* class_c_view.png */,
+ 24A2009B0F90D1DD003BB5A7 /* class_c_view_container-members.html */,
+ 24A2009C0F90D1DD003BB5A7 /* class_c_view_container.html */,
+ 24A2009D0F90D1DD003BB5A7 /* class_c_view_container.png */,
+ 24A2009E0F90D1DD003BB5A7 /* class_c_vu_meter-members.html */,
+ 24A2009F0F90D1DD003BB5A7 /* class_c_vu_meter.html */,
+ 24A200A00F90D1DD003BB5A7 /* class_c_vu_meter.png */,
+ 24A200A10F90D1DD003BB5A7 /* class_i_scrollbar_drawer-members.html */,
+ 24A200A20F90D1DD003BB5A7 /* class_i_scrollbar_drawer.html */,
+ 24A200A30F90D1DD003BB5A7 /* class_plugin_g_u_i_editor-members.html */,
+ 24A200A40F90D1DD003BB5A7 /* class_plugin_g_u_i_editor.html */,
+ 24A200A50F90D1DD003BB5A7 /* cscrollview_8cpp.html */,
+ 24A200A60F90D1DD003BB5A7 /* cscrollview_8h.html */,
+ 24A200A70F90D1DD003BB5A7 /* ctabview_8cpp.html */,
+ 24A200A80F90D1DD003BB5A7 /* ctabview_8h.html */,
+ 24A200A90F90D1DD003BB5A7 /* deprecated.html */,
+ 24A200AA0F90D1DD003BB5A7 /* doc_8h.html */,
+ 24A200AB0F90D1DD003BB5A7 /* doxygen.css */,
+ 24A200AC0F90D1DD003BB5A7 /* doxygen.png */,
+ 24A200AD0F90D1DD003BB5A7 /* files.html */,
+ 24A200AE0F90D1DD003BB5A7 /* ftv2blank.png */,
+ 24A200AF0F90D1DD003BB5A7 /* ftv2doc.png */,
+ 24A200B00F90D1DD003BB5A7 /* ftv2folderclosed.png */,
+ 24A200B10F90D1DE003BB5A7 /* ftv2folderopen.png */,
+ 24A200B20F90D1DE003BB5A7 /* ftv2lastnode.png */,
+ 24A200B30F90D1DE003BB5A7 /* ftv2link.png */,
+ 24A200B40F90D1DE003BB5A7 /* ftv2mlastnode.png */,
+ 24A200B50F90D1DE003BB5A7 /* ftv2mnode.png */,
+ 24A200B60F90D1DE003BB5A7 /* ftv2node.png */,
+ 24A200B70F90D1DE003BB5A7 /* ftv2plastnode.png */,
+ 24A200B80F90D1DE003BB5A7 /* ftv2pnode.png */,
+ 24A200B90F90D1DE003BB5A7 /* ftv2vertline.png */,
+ 24A200BA0F90D1DE003BB5A7 /* functions.html */,
+ 24A200BB0F90D1DE003BB5A7 /* functions_0x62.html */,
+ 24A200BC0F90D1DE003BB5A7 /* functions_0x63.html */,
+ 24A200BD0F90D1DE003BB5A7 /* functions_0x64.html */,
+ 24A200BE0F90D1DE003BB5A7 /* functions_0x65.html */,
+ 24A200BF0F90D1DE003BB5A7 /* functions_0x66.html */,
+ 24A200C00F90D1DE003BB5A7 /* functions_0x67.html */,
+ 24A200C10F90D1DE003BB5A7 /* functions_0x68.html */,
+ 24A200C20F90D1DE003BB5A7 /* functions_0x69.html */,
+ 24A200C30F90D1DE003BB5A7 /* functions_0x6b.html */,
+ 24A200C40F90D1DE003BB5A7 /* functions_0x6c.html */,
+ 24A200C50F90D1DE003BB5A7 /* functions_0x6d.html */,
+ 24A200C60F90D1DE003BB5A7 /* functions_0x6e.html */,
+ 24A200C70F90D1DE003BB5A7 /* functions_0x6f.html */,
+ 24A200C80F90D1DE003BB5A7 /* functions_0x70.html */,
+ 24A200C90F90D1DE003BB5A7 /* functions_0x72.html */,
+ 24A200CA0F90D1DE003BB5A7 /* functions_0x73.html */,
+ 24A200CB0F90D1DE003BB5A7 /* functions_0x74.html */,
+ 24A200CC0F90D1DE003BB5A7 /* functions_0x75.html */,
+ 24A200CD0F90D1DE003BB5A7 /* functions_0x76.html */,
+ 24A200CE0F90D1DE003BB5A7 /* functions_0x77.html */,
+ 24A200CF0F90D1DE003BB5A7 /* functions_0x78.html */,
+ 24A200D00F90D1DE003BB5A7 /* functions_0x79.html */,
+ 24A200D10F90D1DE003BB5A7 /* functions_0x7a.html */,
+ 24A200D20F90D1DE003BB5A7 /* functions_0x7e.html */,
+ 24A200D30F90D1DE003BB5A7 /* functions_eval.html */,
+ 24A200D40F90D1DE003BB5A7 /* functions_func.html */,
+ 24A200D50F90D1DE003BB5A7 /* functions_func_0x62.html */,
+ 24A200D60F90D1DE003BB5A7 /* functions_func_0x63.html */,
+ 24A200D70F90D1DE003BB5A7 /* functions_func_0x64.html */,
+ 24A200D80F90D1DE003BB5A7 /* functions_func_0x65.html */,
+ 24A200D90F90D1DE003BB5A7 /* functions_func_0x66.html */,
+ 24A200DA0F90D1DE003BB5A7 /* functions_func_0x67.html */,
+ 24A200DB0F90D1DE003BB5A7 /* functions_func_0x68.html */,
+ 24A200DC0F90D1DE003BB5A7 /* functions_func_0x69.html */,
+ 24A200DD0F90D1DE003BB5A7 /* functions_func_0x6c.html */,
+ 24A200DE0F90D1DE003BB5A7 /* functions_func_0x6d.html */,
+ 24A200DF0F90D1DE003BB5A7 /* functions_func_0x6e.html */,
+ 24A200E00F90D1DE003BB5A7 /* functions_func_0x6f.html */,
+ 24A200E10F90D1DE003BB5A7 /* functions_func_0x70.html */,
+ 24A200E20F90D1DE003BB5A7 /* functions_func_0x72.html */,
+ 24A200E30F90D1DE003BB5A7 /* functions_func_0x73.html */,
+ 24A200E40F90D1DE003BB5A7 /* functions_func_0x74.html */,
+ 24A200E50F90D1DE003BB5A7 /* functions_func_0x75.html */,
+ 24A200E60F90D1DE003BB5A7 /* functions_func_0x76.html */,
+ 24A200E70F90D1DE003BB5A7 /* functions_func_0x77.html */,
+ 24A200E80F90D1DE003BB5A7 /* functions_func_0x7e.html */,
+ 24A200E90F90D1DE003BB5A7 /* functions_rela.html */,
+ 24A200EA0F90D1DE003BB5A7 /* functions_vars.html */,
+ 24A200EB0F90D1DE003BB5A7 /* functions_vars_0x62.html */,
+ 24A200EC0F90D1DE003BB5A7 /* functions_vars_0x63.html */,
+ 24A200ED0F90D1DE003BB5A7 /* functions_vars_0x64.html */,
+ 24A200EE0F90D1DE003BB5A7 /* functions_vars_0x65.html */,
+ 24A200EF0F90D1DE003BB5A7 /* functions_vars_0x66.html */,
+ 24A200F00F90D1DE003BB5A7 /* functions_vars_0x67.html */,
+ 24A200F10F90D1DE003BB5A7 /* functions_vars_0x68.html */,
+ 24A200F20F90D1DE003BB5A7 /* functions_vars_0x69.html */,
+ 24A200F30F90D1DE003BB5A7 /* functions_vars_0x6b.html */,
+ 24A200F40F90D1DE003BB5A7 /* functions_vars_0x6c.html */,
+ 24A200F50F90D1DE003BB5A7 /* functions_vars_0x6d.html */,
+ 24A200F60F90D1DE003BB5A7 /* functions_vars_0x6e.html */,
+ 24A200F70F90D1DE003BB5A7 /* functions_vars_0x6f.html */,
+ 24A200F80F90D1DE003BB5A7 /* functions_vars_0x70.html */,
+ 24A200F90F90D1DE003BB5A7 /* functions_vars_0x72.html */,
+ 24A200FA0F90D1DE003BB5A7 /* functions_vars_0x73.html */,
+ 24A200FB0F90D1DE003BB5A7 /* functions_vars_0x74.html */,
+ 24A200FC0F90D1DE003BB5A7 /* functions_vars_0x75.html */,
+ 24A200FD0F90D1DE003BB5A7 /* functions_vars_0x76.html */,
+ 24A200FE0F90D1DE003BB5A7 /* functions_vars_0x77.html */,
+ 24A200FF0F90D1DE003BB5A7 /* functions_vars_0x78.html */,
+ 24A201000F90D1DE003BB5A7 /* functions_vars_0x79.html */,
+ 24A201010F90D1DE003BB5A7 /* functions_vars_0x7a.html */,
+ 24A201020F90D1DE003BB5A7 /* globals.html */,
+ 24A201030F90D1DE003BB5A7 /* globals_0x61.html */,
+ 24A201040F90D1DE003BB5A7 /* globals_0x62.html */,
+ 24A201050F90D1DE003BB5A7 /* globals_0x63.html */,
+ 24A201060F90D1DE003BB5A7 /* globals_0x65.html */,
+ 24A201070F90D1DE003BB5A7 /* globals_0x66.html */,
+ 24A201080F90D1DE003BB5A7 /* globals_0x67.html */,
+ 24A201090F90D1DE003BB5A7 /* globals_0x6b.html */,
+ 24A2010A0F90D1DE003BB5A7 /* globals_0x6d.html */,
+ 24A2010B0F90D1DE003BB5A7 /* globals_0x6e.html */,
+ 24A2010C0F90D1DE003BB5A7 /* globals_0x6f.html */,
+ 24A2010D0F90D1DE003BB5A7 /* globals_0x71.html */,
+ 24A2010E0F90D1DE003BB5A7 /* globals_0x72.html */,
+ 24A2010F0F90D1DE003BB5A7 /* globals_0x73.html */,
+ 24A201100F90D1DE003BB5A7 /* globals_0x74.html */,
+ 24A201110F90D1DE003BB5A7 /* globals_0x75.html */,
+ 24A201120F90D1DE003BB5A7 /* globals_0x76.html */,
+ 24A201130F90D1DE003BB5A7 /* globals_0x77.html */,
+ 24A201140F90D1DE003BB5A7 /* globals_defs.html */,
+ 24A201150F90D1DE003BB5A7 /* globals_enum.html */,
+ 24A201160F90D1DE003BB5A7 /* globals_eval.html */,
+ 24A201170F90D1DE003BB5A7 /* globals_type.html */,
+ 24A201180F90D1DE003BB5A7 /* globals_vars.html */,
+ 24A201190F90D1DE003BB5A7 /* hierarchy.html */,
+ 24A2011A0F90D1DE003BB5A7 /* index.html */,
+ 24A2011B0F90D1DE003BB5A7 /* intro.html */,
+ 24A2011C0F90D1DE003BB5A7 /* license.html */,
+ 24A2011D0F90D1DE003BB5A7 /* maceditor.html */,
+ 24A2011E0F90D1DE003BB5A7 /* main.html */,
+ 24A2011F0F90D1DE003BB5A7 /* others.html */,
+ 24A201200F90D1DE003BB5A7 /* pages.html */,
+ 24A201210F90D1DE003BB5A7 /* plugguieditor_8cpp.html */,
+ 24A201220F90D1DE003BB5A7 /* plugguieditor_8h.html */,
+ 24A201230F90D1DE003BB5A7 /* sequences.html */,
+ 24A201240F90D1DE003BB5A7 /* struct_c_color-members.html */,
+ 24A201250F90D1DE003BB5A7 /* struct_c_color.html */,
+ 24A201260F90D1DE003BB5A7 /* struct_c_point-members.html */,
+ 24A201270F90D1DE003BB5A7 /* struct_c_point.html */,
+ 24A201280F90D1DE003BB5A7 /* struct_c_rect-members.html */,
+ 24A201290F90D1DE003BB5A7 /* struct_c_rect.html */,
+ 24A2012A0F90D1DE003BB5A7 /* struct_e_rect-members.html */,
+ 24A2012B0F90D1DE003BB5A7 /* struct_e_rect.html */,
+ 24A2012C0F90D1DE003BB5A7 /* struct_vst_file_select-members.html */,
+ 24A2012D0F90D1DE003BB5A7 /* struct_vst_file_select.html */,
+ 24A2012E0F90D1DE003BB5A7 /* struct_vst_file_type-members.html */,
+ 24A2012F0F90D1DE003BB5A7 /* struct_vst_file_type.html */,
+ 24A201300F90D1DE003BB5A7 /* struct_vst_key_code-members.html */,
+ 24A201310F90D1DE003BB5A7 /* struct_vst_key_code.html */,
+ 24A201320F90D1DE003BB5A7 /* tab_b.gif */,
+ 24A201330F90D1DE003BB5A7 /* tab_l.gif */,
+ 24A201340F90D1DE003BB5A7 /* tab_r.gif */,
+ 24A201350F90D1DE003BB5A7 /* tabs.css */,
+ 24A201360F90D1DE003BB5A7 /* thanks.html */,
+ 24A201370F90D1DE003BB5A7 /* tree.html */,
+ 24A201380F90D1DE003BB5A7 /* vstcontrols_8cpp.html */,
+ 24A201390F90D1DE003BB5A7 /* vstcontrols_8h.html */,
+ 24A2013A0F90D1DE003BB5A7 /* vstgui_8cpp.html */,
+ 24A2013B0F90D1DE003BB5A7 /* vstgui_8h.html */,
+ 24A2013C0F90D1DE003BB5A7 /* vstkeycode_8h.html */,
+ 24A2013D0F90D1DE003BB5A7 /* vstoffline.html */,
+ 24A2013E0F90D1DE003BB5A7 /* vstparamstruct.html */,
+ 24A2013F0F90D1DE003BB5A7 /* vstplugscarbon_8h.html */,
+ 24A201400F90D1DE003BB5A7 /* vstplugsmac_8h.html */,
+ 24A201410F90D1DE003BB5A7 /* vstplugsmacho_8h.html */,
+ 24A201420F90D1DE003BB5A7 /* vstplugsquartz_8h.html */,
+ 24A201430F90D1DE003BB5A7 /* whatsnew.html */,
+ );
+ name = html;
+ path = /vstsdk2.4/vstgui.sf/vstgui/Documentation/html;
+ sourceTree = "<absolute>";
+ };
+ 24A203CE0F90D272003BB5A7 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 24A203D70F90D272003BB5A7 /* again.vst */,
+ 24A203D90F90D272003BB5A7 /* adelay.vst */,
+ 24A203DB0F90D272003BB5A7 /* vstxsynth.vst */,
+ 24A203DD0F90D272003BB5A7 /* surrounddelay.vst */,
+ 24A203DF0F90D272003BB5A7 /* minihost.app */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 24A203E00F90D272003BB5A7 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 24A203E50F90D272003BB5A7 /* drawtest.component */,
+ 24A203E70F90D272003BB5A7 /* drawtest.vst */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 24A203E80F90D272003BB5A7 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 24A203ED0F90D272003BB5A7 /* drawtest.component */,
+ 24A203EF0F90D272003BB5A7 /* drawtest.vst */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 24A2FEBB0F90D1DB003BB5A7 /* vstsdk2.4 */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FEBC0F90D1DC003BB5A7 /* artwork */,
+ 24A2FEC20F90D1DC003BB5A7 /* bin */,
+ 24A2FED80F90D1DC003BB5A7 /* doc */,
+ 24A2FF8E0F90D1DD003BB5A7 /* index.html */,
+ 24A2FF8F0F90D1DD003BB5A7 /* pluginterfaces */,
+ 24A2FF940F90D1DD003BB5A7 /* public.sdk */,
+ 24A2FFDE0F90D1DD003BB5A7 /* vstgui.sf */,
+ );
+ name = vstsdk2.4;
+ path = /vstsdk2.4;
+ sourceTree = "<absolute>";
+ };
+ 24A2FEBC0F90D1DC003BB5A7 /* artwork */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FEBD0F90D1DC003BB5A7 /* Thumbs.db */,
+ 24A2FEBE0F90D1DC003BB5A7 /* VST_Logo_Usage_Guideline.pdf */,
+ 24A2FEBF0F90D1DC003BB5A7 /* VSTLogoAlpha.png */,
+ 24A2FEC00F90D1DC003BB5A7 /* VSTLogoBlack.jpg */,
+ 24A2FEC10F90D1DC003BB5A7 /* VSTLogoWhite.jpg */,
+ );
+ name = artwork;
+ path = /vstsdk2.4/artwork;
+ sourceTree = "<absolute>";
+ };
+ 24A2FEC20F90D1DC003BB5A7 /* bin */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FEC30F90D1DC003BB5A7 /* mac */,
+ 24A2FED50F90D1DC003BB5A7 /* win */,
+ );
+ name = bin;
+ path = /vstsdk2.4/bin;
+ sourceTree = "<absolute>";
+ };
+ 24A2FEC30F90D1DC003BB5A7 /* mac */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FEC40F90D1DC003BB5A7 /* VSTMonitor.vst */,
+ 24A2FED40F90D1DC003BB5A7 /* VSTParamTool.app */,
+ );
+ name = mac;
+ path = /vstsdk2.4/bin/mac;
+ sourceTree = "<absolute>";
+ };
+ 24A2FEC40F90D1DC003BB5A7 /* VSTMonitor.vst */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FEC50F90D1DC003BB5A7 /* Contents */,
+ );
+ name = VSTMonitor.vst;
+ path = /vstsdk2.4/bin/mac/VSTMonitor.vst;
+ sourceTree = "<absolute>";
+ };
+ 24A2FEC50F90D1DC003BB5A7 /* Contents */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FEC60F90D1DC003BB5A7 /* Info.plist */,
+ 24A2FEC70F90D1DC003BB5A7 /* MacOS */,
+ 24A2FEC90F90D1DC003BB5A7 /* PkgInfo */,
+ 24A2FECA0F90D1DC003BB5A7 /* Resources */,
+ );
+ name = Contents;
+ path = /vstsdk2.4/bin/mac/VSTMonitor.vst/Contents;
+ sourceTree = "<absolute>";
+ };
+ 24A2FEC70F90D1DC003BB5A7 /* MacOS */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FEC80F90D1DC003BB5A7 /* VSTMonitor */,
+ );
+ name = MacOS;
+ path = /vstsdk2.4/bin/mac/VSTMonitor.vst/Contents/MacOS;
+ sourceTree = "<absolute>";
+ };
+ 24A2FECA0F90D1DC003BB5A7 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FECB0F90D1DC003BB5A7 /* bmp50000.bmp */,
+ 24A2FECC0F90D1DC003BB5A7 /* bmp50001.bmp */,
+ 24A2FECD0F90D1DC003BB5A7 /* bmp50002.bmp */,
+ 24A2FECE0F90D1DC003BB5A7 /* bmp50003.bmp */,
+ 24A2FECF0F90D1DC003BB5A7 /* bmp50004.bmp */,
+ 24A2FED00F90D1DC003BB5A7 /* bmp50005.bmp */,
+ 24A2FED10F90D1DC003BB5A7 /* bmp50006.bmp */,
+ 24A2FED20F90D1DC003BB5A7 /* bmp50007.bmp */,
+ 24A2FED30F90D1DC003BB5A7 /* bmp50008.bmp */,
+ );
+ name = Resources;
+ path = /vstsdk2.4/bin/mac/VSTMonitor.vst/Contents/Resources;
+ sourceTree = "<absolute>";
+ };
+ 24A2FED50F90D1DC003BB5A7 /* win */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FED60F90D1DC003BB5A7 /* vstmonitor.dll */,
+ 24A2FED70F90D1DC003BB5A7 /* vstparamtool.exe */,
+ );
+ name = win;
+ path = /vstsdk2.4/bin/win;
+ sourceTree = "<absolute>";
+ };
+ 24A2FED80F90D1DC003BB5A7 /* doc */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FED90F90D1DC003BB5A7 /* gfx */,
+ 24A2FEDE0F90D1DC003BB5A7 /* html */,
+ 24A2FF8A0F90D1DD003BB5A7 /* sdk.menu.html */,
+ 24A2FF8B0F90D1DD003BB5A7 /* sdk.overview.html */,
+ 24A2FF8C0F90D1DD003BB5A7 /* sdkdoc.css */,
+ 24A2FF8D0F90D1DD003BB5A7 /* VST Licensing Agreement.rtf */,
+ );
+ name = doc;
+ path = /vstsdk2.4/doc;
+ sourceTree = "<absolute>";
+ };
+ 24A2FED90F90D1DC003BB5A7 /* gfx */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FEDA0F90D1DC003BB5A7 /* folder.gif */,
+ 24A2FEDB0F90D1DC003BB5A7 /* mac.gif */,
+ 24A2FEDC0F90D1DC003BB5A7 /* vstpluglogo_small.jpg */,
+ 24A2FEDD0F90D1DC003BB5A7 /* win.gif */,
+ );
+ name = gfx;
+ path = /vstsdk2.4/doc/gfx;
+ sourceTree = "<absolute>";
+ };
+ 24A2FEDE0F90D1DC003BB5A7 /* html */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FEDF0F90D1DC003BB5A7 /* aeffect_8h.html */,
+ 24A2FEE00F90D1DC003BB5A7 /* aeffectx_8h.html */,
+ 24A2FEE10F90D1DC003BB5A7 /* aeffeditor_8h.html */,
+ 24A2FEE20F90D1DC003BB5A7 /* annotated.html */,
+ 24A2FEE30F90D1DC003BB5A7 /* audioeffect_8cpp.html */,
+ 24A2FEE40F90D1DC003BB5A7 /* audioeffect_8h.html */,
+ 24A2FEE50F90D1DC003BB5A7 /* audioeffectx_8cpp.html */,
+ 24A2FEE60F90D1DC003BB5A7 /* audioeffectx_8h.html */,
+ 24A2FEE70F90D1DC003BB5A7 /* Blocksizechange.gif */,
+ 24A2FEE80F90D1DC003BB5A7 /* class_a_eff_editor-members.html */,
+ 24A2FEE90F90D1DC003BB5A7 /* class_a_eff_editor.html */,
+ 24A2FEEA0F90D1DC003BB5A7 /* class_audio_effect-members.html */,
+ 24A2FEEB0F90D1DC003BB5A7 /* class_audio_effect.html */,
+ 24A2FEEC0F90D1DC003BB5A7 /* class_audio_effect.png */,
+ 24A2FEED0F90D1DC003BB5A7 /* class_audio_effect_x-members.html */,
+ 24A2FEEE0F90D1DC003BB5A7 /* class_audio_effect_x.html */,
+ 24A2FEEF0F90D1DC003BB5A7 /* class_audio_effect_x.png */,
+ 24A2FEF00F90D1DC003BB5A7 /* ControlChanged.gif */,
+ 24A2FEF10F90D1DC003BB5A7 /* deprecated.html */,
+ 24A2FEF20F90D1DC003BB5A7 /* dir_2d3252dd12c84c66c1d25b26bb45a1f5.html */,
+ 24A2FEF30F90D1DC003BB5A7 /* dir_77c628dfee72e555f82d5ef53b733f38.html */,
+ 24A2FEF40F90D1DC003BB5A7 /* dir_f81105d3b854bea570aaf3bae5cb64c1.html */,
+ 24A2FEF50F90D1DC003BB5A7 /* dir_fa0454ab79b4262333bf837ea3d765e9.html */,
+ 24A2FEF60F90D1DC003BB5A7 /* dirs.html */,
+ 24A2FEF70F90D1DC003BB5A7 /* doc_8h.html */,
+ 24A2FEF80F90D1DC003BB5A7 /* doxygen.css */,
+ 24A2FEF90F90D1DC003BB5A7 /* doxygen.png */,
+ 24A2FEFA0F90D1DC003BB5A7 /* files.html */,
+ 24A2FEFB0F90D1DC003BB5A7 /* ftv2blank.png */,
+ 24A2FEFC0F90D1DC003BB5A7 /* ftv2doc.png */,
+ 24A2FEFD0F90D1DC003BB5A7 /* ftv2folderclosed.png */,
+ 24A2FEFE0F90D1DC003BB5A7 /* ftv2folderopen.png */,
+ 24A2FEFF0F90D1DC003BB5A7 /* ftv2lastnode.png */,
+ 24A2FF000F90D1DC003BB5A7 /* ftv2link.png */,
+ 24A2FF010F90D1DC003BB5A7 /* ftv2mlastnode.png */,
+ 24A2FF020F90D1DC003BB5A7 /* ftv2mnode.png */,
+ 24A2FF030F90D1DC003BB5A7 /* ftv2node.png */,
+ 24A2FF040F90D1DC003BB5A7 /* ftv2plastnode.png */,
+ 24A2FF050F90D1DC003BB5A7 /* ftv2pnode.png */,
+ 24A2FF060F90D1DC003BB5A7 /* ftv2vertline.png */,
+ 24A2FF070F90D1DC003BB5A7 /* functions.html */,
+ 24A2FF080F90D1DC003BB5A7 /* functions_0x62.html */,
+ 24A2FF090F90D1DC003BB5A7 /* functions_0x63.html */,
+ 24A2FF0A0F90D1DC003BB5A7 /* functions_0x64.html */,
+ 24A2FF0B0F90D1DC003BB5A7 /* functions_0x65.html */,
+ 24A2FF0C0F90D1DC003BB5A7 /* functions_0x66.html */,
+ 24A2FF0D0F90D1DC003BB5A7 /* functions_0x67.html */,
+ 24A2FF0E0F90D1DC003BB5A7 /* functions_0x68.html */,
+ 24A2FF0F0F90D1DC003BB5A7 /* functions_0x69.html */,
+ 24A2FF100F90D1DC003BB5A7 /* functions_0x6b.html */,
+ 24A2FF110F90D1DC003BB5A7 /* functions_0x6c.html */,
+ 24A2FF120F90D1DC003BB5A7 /* functions_0x6d.html */,
+ 24A2FF130F90D1DC003BB5A7 /* functions_0x6e.html */,
+ 24A2FF140F90D1DC003BB5A7 /* functions_0x6f.html */,
+ 24A2FF150F90D1DC003BB5A7 /* functions_0x70.html */,
+ 24A2FF160F90D1DC003BB5A7 /* functions_0x72.html */,
+ 24A2FF170F90D1DC003BB5A7 /* functions_0x73.html */,
+ 24A2FF180F90D1DC003BB5A7 /* functions_0x74.html */,
+ 24A2FF190F90D1DC003BB5A7 /* functions_0x75.html */,
+ 24A2FF1A0F90D1DC003BB5A7 /* functions_0x76.html */,
+ 24A2FF1B0F90D1DC003BB5A7 /* functions_0x77.html */,
+ 24A2FF1C0F90D1DC003BB5A7 /* functions_0x78.html */,
+ 24A2FF1D0F90D1DC003BB5A7 /* functions_0x79.html */,
+ 24A2FF1E0F90D1DC003BB5A7 /* functions_0x7e.html */,
+ 24A2FF1F0F90D1DC003BB5A7 /* functions_func.html */,
+ 24A2FF200F90D1DC003BB5A7 /* functions_vars.html */,
+ 24A2FF210F90D1DC003BB5A7 /* globals.html */,
+ 24A2FF220F90D1DC003BB5A7 /* globals_0x62.html */,
+ 24A2FF230F90D1DC003BB5A7 /* globals_0x63.html */,
+ 24A2FF240F90D1DC003BB5A7 /* globals_0x64.html */,
+ 24A2FF250F90D1DC003BB5A7 /* globals_0x65.html */,
+ 24A2FF260F90D1DC003BB5A7 /* globals_0x66.html */,
+ 24A2FF270F90D1DC003BB5A7 /* globals_0x6b.html */,
+ 24A2FF280F90D1DC003BB5A7 /* globals_0x6d.html */,
+ 24A2FF290F90D1DC003BB5A7 /* globals_0x74.html */,
+ 24A2FF2A0F90D1DC003BB5A7 /* globals_0x76.html */,
+ 24A2FF2B0F90D1DC003BB5A7 /* globals_defs.html */,
+ 24A2FF2C0F90D1DC003BB5A7 /* globals_enum.html */,
+ 24A2FF2D0F90D1DC003BB5A7 /* globals_eval.html */,
+ 24A2FF2E0F90D1DC003BB5A7 /* globals_eval_0x65.html */,
+ 24A2FF2F0F90D1DC003BB5A7 /* globals_eval_0x6b.html */,
+ 24A2FF300F90D1DC003BB5A7 /* globals_eval_0x6d.html */,
+ 24A2FF310F90D1DC003BB5A7 /* globals_eval_0x76.html */,
+ 24A2FF320F90D1DC003BB5A7 /* globals_func.html */,
+ 24A2FF330F90D1DC003BB5A7 /* globals_type.html */,
+ 24A2FF340F90D1DC003BB5A7 /* globals_vars.html */,
+ 24A2FF350F90D1DC003BB5A7 /* hierarchy.html */,
+ 24A2FF360F90D1DC003BB5A7 /* history.html */,
+ 24A2FF370F90D1DC003BB5A7 /* index.html */,
+ 24A2FF380F90D1DC003BB5A7 /* Initialisation.gif */,
+ 24A2FF390F90D1DC003BB5A7 /* intro.html */,
+ 24A2FF3A0F90D1DC003BB5A7 /* IOchange.gif */,
+ 24A2FF3B0F90D1DC003BB5A7 /* license.html */,
+ 24A2FF3C0F90D1DC003BB5A7 /* maceditor.html */,
+ 24A2FF3D0F90D1DC003BB5A7 /* main.html */,
+ 24A2FF3E0F90D1DC003BB5A7 /* namespace_host_can_dos.html */,
+ 24A2FF3F0F90D1DC003BB5A7 /* namespace_plug_can_dos.html */,
+ 24A2FF400F90D1DC003BB5A7 /* namespacemembers.html */,
+ 24A2FF410F90D1DC003BB5A7 /* namespacemembers_vars.html */,
+ 24A2FF420F90D1DC003BB5A7 /* namespaces.html */,
+ 24A2FF430F90D1DC003BB5A7 /* Offlineprocessing.gif */,
+ 24A2FF440F90D1DC003BB5A7 /* others.html */,
+ 24A2FF450F90D1DC003BB5A7 /* pages.html */,
+ 24A2FF460F90D1DC003BB5A7 /* Sampleratechange.gif */,
+ 24A2FF470F90D1DC003BB5A7 /* sequences.html */,
+ 24A2FF480F90D1DC003BB5A7 /* SpeakerarrangementnegotiationforVSTfx.gif */,
+ 24A2FF490F90D1DC003BB5A7 /* struct_a_effect-members.html */,
+ 24A2FF4A0F90D1DC003BB5A7 /* struct_a_effect.html */,
+ 24A2FF4B0F90D1DC003BB5A7 /* struct_e_rect-members.html */,
+ 24A2FF4C0F90D1DC003BB5A7 /* struct_e_rect.html */,
+ 24A2FF4D0F90D1DC003BB5A7 /* struct_midi_key_name-members.html */,
+ 24A2FF4E0F90D1DC003BB5A7 /* struct_midi_key_name.html */,
+ 24A2FF4F0F90D1DC003BB5A7 /* struct_midi_program_category-members.html */,
+ 24A2FF500F90D1DC003BB5A7 /* struct_midi_program_category.html */,
+ 24A2FF510F90D1DC003BB5A7 /* struct_midi_program_name-members.html */,
+ 24A2FF520F90D1DC003BB5A7 /* struct_midi_program_name.html */,
+ 24A2FF530F90D1DC003BB5A7 /* struct_vst_audio_file-members.html */,
+ 24A2FF540F90D1DC003BB5A7 /* struct_vst_audio_file.html */,
+ 24A2FF550F90D1DC003BB5A7 /* struct_vst_audio_file_marker-members.html */,
+ 24A2FF560F90D1DC003BB5A7 /* struct_vst_audio_file_marker.html */,
+ 24A2FF570F90D1DC003BB5A7 /* struct_vst_event-members.html */,
+ 24A2FF580F90D1DC003BB5A7 /* struct_vst_event.html */,
+ 24A2FF590F90D1DD003BB5A7 /* struct_vst_events-members.html */,
+ 24A2FF5A0F90D1DD003BB5A7 /* struct_vst_events.html */,
+ 24A2FF5B0F90D1DD003BB5A7 /* struct_vst_file_select-members.html */,
+ 24A2FF5C0F90D1DD003BB5A7 /* struct_vst_file_select.html */,
+ 24A2FF5D0F90D1DD003BB5A7 /* struct_vst_file_type-members.html */,
+ 24A2FF5E0F90D1DD003BB5A7 /* struct_vst_file_type.html */,
+ 24A2FF5F0F90D1DD003BB5A7 /* struct_vst_key_code-members.html */,
+ 24A2FF600F90D1DD003BB5A7 /* struct_vst_key_code.html */,
+ 24A2FF610F90D1DD003BB5A7 /* struct_vst_midi_event-members.html */,
+ 24A2FF620F90D1DD003BB5A7 /* struct_vst_midi_event.html */,
+ 24A2FF630F90D1DD003BB5A7 /* struct_vst_midi_sysex_event-members.html */,
+ 24A2FF640F90D1DD003BB5A7 /* struct_vst_midi_sysex_event.html */,
+ 24A2FF650F90D1DD003BB5A7 /* struct_vst_offline_task-members.html */,
+ 24A2FF660F90D1DD003BB5A7 /* struct_vst_offline_task.html */,
+ 24A2FF670F90D1DD003BB5A7 /* struct_vst_parameter_properties-members.html */,
+ 24A2FF680F90D1DD003BB5A7 /* struct_vst_parameter_properties.html */,
+ 24A2FF690F90D1DD003BB5A7 /* struct_vst_patch_chunk_info-members.html */,
+ 24A2FF6A0F90D1DD003BB5A7 /* struct_vst_patch_chunk_info.html */,
+ 24A2FF6B0F90D1DD003BB5A7 /* struct_vst_pin_properties-members.html */,
+ 24A2FF6C0F90D1DD003BB5A7 /* struct_vst_pin_properties.html */,
+ 24A2FF6D0F90D1DD003BB5A7 /* struct_vst_speaker_arrangement-members.html */,
+ 24A2FF6E0F90D1DD003BB5A7 /* struct_vst_speaker_arrangement.html */,
+ 24A2FF6F0F90D1DD003BB5A7 /* struct_vst_speaker_properties-members.html */,
+ 24A2FF700F90D1DD003BB5A7 /* struct_vst_speaker_properties.html */,
+ 24A2FF710F90D1DD003BB5A7 /* struct_vst_time_info-members.html */,
+ 24A2FF720F90D1DD003BB5A7 /* struct_vst_time_info.html */,
+ 24A2FF730F90D1DD003BB5A7 /* struct_vst_variable_io-members.html */,
+ 24A2FF740F90D1DD003BB5A7 /* struct_vst_variable_io.html */,
+ 24A2FF750F90D1DD003BB5A7 /* struct_vst_window-members.html */,
+ 24A2FF760F90D1DD003BB5A7 /* struct_vst_window.html */,
+ 24A2FF770F90D1DD003BB5A7 /* structfx_bank-members.html */,
+ 24A2FF780F90D1DD003BB5A7 /* structfx_bank.html */,
+ 24A2FF790F90D1DD003BB5A7 /* structfx_program-members.html */,
+ 24A2FF7A0F90D1DD003BB5A7 /* structfx_program.html */,
+ 24A2FF7B0F90D1DD003BB5A7 /* tab_b.gif */,
+ 24A2FF7C0F90D1DD003BB5A7 /* tab_l.gif */,
+ 24A2FF7D0F90D1DD003BB5A7 /* tab_r.gif */,
+ 24A2FF7E0F90D1DD003BB5A7 /* tabs.css */,
+ 24A2FF7F0F90D1DD003BB5A7 /* Termination.gif */,
+ 24A2FF800F90D1DD003BB5A7 /* thanks.html */,
+ 24A2FF810F90D1DD003BB5A7 /* tree.html */,
+ 24A2FF820F90D1DD003BB5A7 /* TurnOff.gif */,
+ 24A2FF830F90D1DD003BB5A7 /* TurnOn.gif */,
+ 24A2FF840F90D1DD003BB5A7 /* vstfxstore_8h.html */,
+ 24A2FF850F90D1DD003BB5A7 /* vstoffline.html */,
+ 24A2FF860F90D1DD003BB5A7 /* vstparamstruct.html */,
+ 24A2FF870F90D1DD003BB5A7 /* vstpluglogo.jpg */,
+ 24A2FF880F90D1DD003BB5A7 /* vstplugmain_8cpp.html */,
+ 24A2FF890F90D1DD003BB5A7 /* whatsnew.html */,
+ );
+ name = html;
+ path = /vstsdk2.4/doc/html;
+ sourceTree = "<absolute>";
+ };
+ 24A2FF8F0F90D1DD003BB5A7 /* pluginterfaces */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FF900F90D1DD003BB5A7 /* vst2.x */,
+ );
+ name = pluginterfaces;
+ path = /vstsdk2.4/pluginterfaces;
+ sourceTree = "<absolute>";
+ };
+ 24A2FF900F90D1DD003BB5A7 /* vst2.x */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FF910F90D1DD003BB5A7 /* aeffect.h */,
+ 24A2FF920F90D1DD003BB5A7 /* aeffectx.h */,
+ 24A2FF930F90D1DD003BB5A7 /* vstfxstore.h */,
+ );
+ name = vst2.x;
+ path = /vstsdk2.4/pluginterfaces/vst2.x;
+ sourceTree = "<absolute>";
+ };
+ 24A2FF940F90D1DD003BB5A7 /* public.sdk */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FF950F90D1DD003BB5A7 /* samples */,
+ 24A2FFD60F90D1DD003BB5A7 /* source */,
+ );
+ name = public.sdk;
+ path = /vstsdk2.4/public.sdk;
+ sourceTree = "<absolute>";
+ };
+ 24A2FF950F90D1DD003BB5A7 /* samples */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FF960F90D1DD003BB5A7 /* vst2.x */,
+ );
+ name = samples;
+ path = /vstsdk2.4/public.sdk/samples;
+ sourceTree = "<absolute>";
+ };
+ 24A2FF960F90D1DD003BB5A7 /* vst2.x */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FF970F90D1DD003BB5A7 /* adelay */,
+ 24A2FFA80F90D1DD003BB5A7 /* again */,
+ 24A2FFAE0F90D1DD003BB5A7 /* mac */,
+ 24A2FFB40F90D1DD003BB5A7 /* minihost */,
+ 24A2FFBA0F90D1DD003BB5A7 /* vstxsynth */,
+ 24A2FFC50F90D1DD003BB5A7 /* win */,
+ 24A2FFC80F90D1DD003BB5A7 /* win.vc2003 */,
+ 24A2FFCF0F90D1DD003BB5A7 /* win.vc6 */,
+ );
+ name = vst2.x;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x;
+ sourceTree = "<absolute>";
+ };
+ 24A2FF970F90D1DD003BB5A7 /* adelay */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FF980F90D1DD003BB5A7 /* adelay.cpp */,
+ 24A2FF990F90D1DD003BB5A7 /* adelay.h */,
+ 24A2FF9A0F90D1DD003BB5A7 /* adelaymain.cpp */,
+ 24A2FF9B0F90D1DD003BB5A7 /* editor */,
+ 24A2FFA30F90D1DD003BB5A7 /* surrounddelay.cpp */,
+ 24A2FFA40F90D1DD003BB5A7 /* surrounddelay.h */,
+ 24A2FFA50F90D1DD003BB5A7 /* win */,
+ );
+ name = adelay;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/adelay;
+ sourceTree = "<absolute>";
+ };
+ 24A2FF9B0F90D1DD003BB5A7 /* editor */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FF9C0F90D1DD003BB5A7 /* resources */,
+ 24A2FFA10F90D1DD003BB5A7 /* sdeditor.cpp */,
+ 24A2FFA20F90D1DD003BB5A7 /* sdeditor.h */,
+ );
+ name = editor;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor;
+ sourceTree = "<absolute>";
+ };
+ 24A2FF9C0F90D1DD003BB5A7 /* resources */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FF9D0F90D1DD003BB5A7 /* bmp00128.bmp */,
+ 24A2FF9E0F90D1DD003BB5A7 /* bmp00129.bmp */,
+ 24A2FF9F0F90D1DD003BB5A7 /* bmp00130.bmp */,
+ 24A2FFA00F90D1DD003BB5A7 /* surrounddelay.rc */,
+ );
+ name = resources;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/adelay/editor/resources;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFA50F90D1DD003BB5A7 /* win */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFA60F90D1DD003BB5A7 /* adelay.vcproj */,
+ 24A2FFA70F90D1DD003BB5A7 /* surrounddelay.vcproj */,
+ );
+ name = win;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/adelay/win;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFA80F90D1DD003BB5A7 /* again */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFA90F90D1DD003BB5A7 /* source */,
+ 24A2FFAC0F90D1DD003BB5A7 /* win */,
+ );
+ name = again;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/again;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFA90F90D1DD003BB5A7 /* source */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFAA0F90D1DD003BB5A7 /* again.cpp */,
+ 24A2FFAB0F90D1DD003BB5A7 /* again.h */,
+ );
+ name = source;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/again/source;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFAC0F90D1DD003BB5A7 /* win */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFAD0F90D1DD003BB5A7 /* again.vcproj */,
+ );
+ name = win;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/again/win;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFAE0F90D1DD003BB5A7 /* mac */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFAF0F90D1DD003BB5A7 /* minihost-Info.plist */,
+ 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */,
+ 24A2FFB30F90D1DD003BB5A7 /* vst2.4Info.plist */,
+ );
+ name = mac;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/mac;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFB40F90D1DD003BB5A7 /* minihost */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFB50F90D1DD003BB5A7 /* source */,
+ 24A2FFB80F90D1DD003BB5A7 /* win */,
+ );
+ name = minihost;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/minihost;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFB50F90D1DD003BB5A7 /* source */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFB60F90D1DD003BB5A7 /* minieditor.cpp */,
+ 24A2FFB70F90D1DD003BB5A7 /* minihost.cpp */,
+ );
+ name = source;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/minihost/source;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFB80F90D1DD003BB5A7 /* win */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFB90F90D1DD003BB5A7 /* minihost.vcproj */,
+ );
+ name = win;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/minihost/win;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFBA0F90D1DD003BB5A7 /* vstxsynth */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFBB0F90D1DD003BB5A7 /* resource */,
+ 24A2FFBE0F90D1DD003BB5A7 /* source */,
+ 24A2FFC30F90D1DD003BB5A7 /* win */,
+ );
+ name = vstxsynth;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFBB0F90D1DD003BB5A7 /* resource */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFBC0F90D1DD003BB5A7 /* vstxsynth.rc */,
+ 24A2FFBD0F90D1DD003BB5A7 /* vstxsynth.vstxml */,
+ );
+ name = resource;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/resource;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFBE0F90D1DD003BB5A7 /* source */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFBF0F90D1DD003BB5A7 /* gmnames.h */,
+ 24A2FFC00F90D1DD003BB5A7 /* vstxsynth.cpp */,
+ 24A2FFC10F90D1DD003BB5A7 /* vstxsynth.h */,
+ 24A2FFC20F90D1DD003BB5A7 /* vstxsynthproc.cpp */,
+ );
+ name = source;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/source;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFC30F90D1DD003BB5A7 /* win */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFC40F90D1DD003BB5A7 /* vstxsynth.vcproj */,
+ );
+ name = win;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/win;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFC50F90D1DD003BB5A7 /* win */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFC60F90D1DD003BB5A7 /* samples.sln */,
+ 24A2FFC70F90D1DD003BB5A7 /* vstplug.def */,
+ );
+ name = win;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/win;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFC80F90D1DD003BB5A7 /* win.vc2003 */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFC90F90D1DD003BB5A7 /* adelay.vcproj */,
+ 24A2FFCA0F90D1DD003BB5A7 /* again.vcproj */,
+ 24A2FFCB0F90D1DD003BB5A7 /* minihost.vcproj */,
+ 24A2FFCC0F90D1DD003BB5A7 /* samples.sln */,
+ 24A2FFCD0F90D1DD003BB5A7 /* surrounddelay.vcproj */,
+ 24A2FFCE0F90D1DD003BB5A7 /* vstxsynth.vcproj */,
+ );
+ name = win.vc2003;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/win.vc2003;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFCF0F90D1DD003BB5A7 /* win.vc6 */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFD00F90D1DD003BB5A7 /* adelay.dsp */,
+ 24A2FFD10F90D1DD003BB5A7 /* again.dsp */,
+ 24A2FFD20F90D1DD003BB5A7 /* minihost.dsp */,
+ 24A2FFD30F90D1DD003BB5A7 /* samples.dsw */,
+ 24A2FFD40F90D1DD003BB5A7 /* surrounddelay.dsp */,
+ 24A2FFD50F90D1DD003BB5A7 /* vstxsynth.dsp */,
+ );
+ name = win.vc6;
+ path = /vstsdk2.4/public.sdk/samples/vst2.x/win.vc6;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFD60F90D1DD003BB5A7 /* source */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFD70F90D1DD003BB5A7 /* vst2.x */,
+ );
+ name = source;
+ path = /vstsdk2.4/public.sdk/source;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFD70F90D1DD003BB5A7 /* vst2.x */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFD80F90D1DD003BB5A7 /* aeffeditor.h */,
+ 24A2FFD90F90D1DD003BB5A7 /* audioeffect.cpp */,
+ 24A2FFDA0F90D1DD003BB5A7 /* audioeffect.h */,
+ 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */,
+ 24A2FFDC0F90D1DD003BB5A7 /* audioeffectx.h */,
+ 24A2FFDD0F90D1DD003BB5A7 /* vstplugmain.cpp */,
+ );
+ name = vst2.x;
+ path = /vstsdk2.4/public.sdk/source/vst2.x;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFDE0F90D1DD003BB5A7 /* vstgui.sf */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFDF0F90D1DD003BB5A7 /* drawtest */,
+ 24A200160F90D1DD003BB5A7 /* vstgui */,
+ );
+ name = vstgui.sf;
+ path = /vstsdk2.4/vstgui.sf;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFDF0F90D1DD003BB5A7 /* drawtest */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFE00F90D1DD003BB5A7 /* mac */,
+ 24A2FFEE0F90D1DD003BB5A7 /* resources */,
+ 24A200030F90D1DD003BB5A7 /* source */,
+ 24A2000F0F90D1DD003BB5A7 /* win */,
+ 24A200130F90D1DD003BB5A7 /* win.vc6 */,
+ );
+ name = drawtest;
+ path = /vstsdk2.4/vstgui.sf/drawtest;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFE00F90D1DD003BB5A7 /* mac */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFE10F90D1DD003BB5A7 /* audiounit.exp */,
+ 24A2FFE20F90D1DD003BB5A7 /* cw_vst_prefix.pch++ */,
+ 24A2FFE30F90D1DD003BB5A7 /* drawtest.cw9prj */,
+ 24A2FFE40F90D1DD003BB5A7 /* drawtest.plc */,
+ 24A2FFE50F90D1DD003BB5A7 /* drawtest.xcode */,
+ 24A2FFE80F90D1DD003BB5A7 /* drawtest.xcodeproj */,
+ 24A2FFEB0F90D1DD003BB5A7 /* Info.plist */,
+ 24A2FFEC0F90D1DD003BB5A7 /* xcode_au_prefix.h */,
+ 24A2FFED0F90D1DD003BB5A7 /* xcode_vst_prefix.h */,
+ );
+ name = mac;
+ path = /vstsdk2.4/vstgui.sf/drawtest/mac;
+ sourceTree = "<absolute>";
+ };
+ 24A2FFEE0F90D1DD003BB5A7 /* resources */ = {
+ isa = PBXGroup;
+ children = (
+ 24A2FFEF0F90D1DD003BB5A7 /* audiounit.r */,
+ 24A2FFF00F90D1DD003BB5A7 /* bmp00001.png */,
+ 24A2FFF10F90D1DD003BB5A7 /* bmp00100.png */,
+ 24A2FFF20F90D1DD003BB5A7 /* bmp01000.png */,
+ 24A2FFF30F90D1DD003BB5A7 /* bmp10001.bmp */,
+ 24A2FFF40F90D1DD003BB5A7 /* bmp10002.bmp */,
+ 24A2FFF50F90D1DD003BB5A7 /* bmp10003.bmp */,
+ 24A2FFF60F90D1DD003BB5A7 /* bmp10004.bmp */,
+ 24A2FFF70F90D1DD003BB5A7 /* bmp10005.bmp */,
+ 24A2FFF80F90D1DD003BB5A7 /* bmp10006.bmp */,
+ 24A2FFF90F90D1DD003BB5A7 /* bmp10007.bmp */,
+ 24A2FFFA0F90D1DD003BB5A7 /* bmp10008.bmp */,
+ 24A2FFFB0F90D1DD003BB5A7 /* bmp10009.bmp */,
+ 24A2FFFC0F90D1DD003BB5A7 /* bmp10010.bmp */,
+ 24A2FFFD0F90D1DD003BB5A7 /* bmp10011.bmp */,
+ 24A2FFFE0F90D1DD003BB5A7 /* bmp10012.bmp */,
+ 24A2FFFF0F90D1DD003BB5A7 /* bmp10013.bmp */,
+ 24A200000F90D1DD003BB5A7 /* bmp10014.bmp */,
+ 24A200010F90D1DD003BB5A7 /* bmp10015.bmp */,
+ 24A200020F90D1DD003BB5A7 /* bmp10016.bmp */,
+ );
+ name = resources;
+ path = /vstsdk2.4/vstgui.sf/drawtest/resources;
+ sourceTree = "<absolute>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ 8D01CCC70486CAD60068D4B7 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 245463B90991757100464AD3 /* DitherFloat.h in Headers */,
+ 24D8287F09A9164A0093AEF8 /* xcode_vst_prefix.h in Headers */,
+ 24A202190F90D1DE003BB5A7 /* aeffect.h in Headers */,
+ 24A2021A0F90D1DE003BB5A7 /* aeffectx.h in Headers */,
+ 24A2021B0F90D1DE003BB5A7 /* vstfxstore.h in Headers */,
+ 24A2021D0F90D1DE003BB5A7 /* adelay.h in Headers */,
+ 24A202240F90D1DE003BB5A7 /* sdeditor.h in Headers */,
+ 24A202260F90D1DE003BB5A7 /* surrounddelay.h in Headers */,
+ 24A2022A0F90D1DE003BB5A7 /* again.h in Headers */,
+ 24A202330F90D1DE003BB5A7 /* gmnames.h in Headers */,
+ 24A202350F90D1DE003BB5A7 /* vstxsynth.h in Headers */,
+ 24A202460F90D1DE003BB5A7 /* aeffeditor.h in Headers */,
+ 24A202480F90D1DE003BB5A7 /* audioeffect.h in Headers */,
+ 24A2024A0F90D1DE003BB5A7 /* audioeffectx.h in Headers */,
+ 24A2024D0F90D1DE003BB5A7 /* cw_vst_prefix.pch++ in Headers */,
+ 24A202510F90D1DE003BB5A7 /* xcode_au_prefix.h in Headers */,
+ 24A202520F90D1DE003BB5A7 /* xcode_vst_prefix.h in Headers */,
+ 24A202680F90D1DE003BB5A7 /* controlsgui.h in Headers */,
+ 24A2026A0F90D1DE003BB5A7 /* pdrawtesteditor.h in Headers */,
+ 24A2026C0F90D1DE003BB5A7 /* pdrawtesteffect.h in Headers */,
+ 24A2026F0F90D1DE003BB5A7 /* pdrawtestview.h in Headers */,
+ 24A202710F90D1DE003BB5A7 /* pprimitivesviews.h in Headers */,
+ 24A202780F90D1DE003BB5A7 /* aeffguieditor.h in Headers */,
+ 24A2027A0F90D1DE003BB5A7 /* cfileselector.h in Headers */,
+ 24A2027D0F90D1DE003BB5A7 /* cscrollview.h in Headers */,
+ 24A2027F0F90D1DE003BB5A7 /* ctabview.h in Headers */,
+ 24A203A50F90D1DE003BB5A7 /* plugguieditor.h in Headers */,
+ 24A203A70F90D1DE003BB5A7 /* vstcontrols.h in Headers */,
+ 24A203A90F90D1DE003BB5A7 /* vstgui.h in Headers */,
+ 24A203AA0F90D1DE003BB5A7 /* vstkeycode.h in Headers */,
+ 24A203AB0F90D1DE003BB5A7 /* vstplugscarbon.h in Headers */,
+ 24A203AC0F90D1DE003BB5A7 /* vstplugsmac.h in Headers */,
+ 24A203AD0F90D1DE003BB5A7 /* vstplugsmacho.h in Headers */,
+ 24A203AE0F90D1DE003BB5A7 /* vstplugsquartz.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ 8D01CCC60486CAD60068D4B7 /* DitherFloat */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "DitherFloat" */;
+ buildPhases = (
+ 8D01CCC70486CAD60068D4B7 /* Headers */,
+ 8D01CCC90486CAD60068D4B7 /* Resources */,
+ 8D01CCCB0486CAD60068D4B7 /* Sources */,
+ 8D01CCCF0486CAD60068D4B7 /* Rez */,
+ 24CFB70807E7A07C0081BD57 /* Copy PkgInfo */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = DitherFloat;
+ productInstallPath = "$(HOME)/Library/Bundles";
+ productName = "FM-Chopper";
+ productReference = 2407DE920899296600EB68BF /* DitherFloat.vst */;
+ productType = "com.apple.product-type.bundle";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 089C1669FE841209C02AAC07 /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = 24BEAAF108919AE700E695F9 /* Build configuration list for PBXProject "DitherFloat" */;
+ compatibilityVersion = "Xcode 2.4";
+ developmentRegion = English;
+ hasScannedForEncodings = 1;
+ knownRegions = (
+ English,
+ Japanese,
+ French,
+ German,
+ );
+ mainGroup = 089C166AFE841209C02AAC07 /* FM-Chopper */;
+ projectDirPath = "";
+ projectReferences = (
+ {
+ ProductGroup = 24A203E00F90D272003BB5A7 /* Products */;
+ ProjectRef = 24A2FFE50F90D1DD003BB5A7 /* drawtest.xcode */;
+ },
+ {
+ ProductGroup = 24A203E80F90D272003BB5A7 /* Products */;
+ ProjectRef = 24A2FFE80F90D1DD003BB5A7 /* drawtest.xcodeproj */;
+ },
+ {
+ ProductGroup = 24A203CE0F90D272003BB5A7 /* Products */;
+ ProjectRef = 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */;
+ },
+ );
+ projectRoot = "";
+ targets = (
+ 8D01CCC60486CAD60068D4B7 /* DitherFloat */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXReferenceProxy section */
+ 24A203D70F90D272003BB5A7 /* again.vst */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = again.vst;
+ remoteRef = 24A203D60F90D272003BB5A7 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 24A203D90F90D272003BB5A7 /* adelay.vst */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = adelay.vst;
+ remoteRef = 24A203D80F90D272003BB5A7 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 24A203DB0F90D272003BB5A7 /* vstxsynth.vst */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = vstxsynth.vst;
+ remoteRef = 24A203DA0F90D272003BB5A7 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 24A203DD0F90D272003BB5A7 /* surrounddelay.vst */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = surrounddelay.vst;
+ remoteRef = 24A203DC0F90D272003BB5A7 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 24A203DF0F90D272003BB5A7 /* minihost.app */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.application;
+ path = minihost.app;
+ remoteRef = 24A203DE0F90D272003BB5A7 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 24A203E50F90D272003BB5A7 /* drawtest.component */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = drawtest.component;
+ remoteRef = 24A203E40F90D272003BB5A7 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 24A203E70F90D272003BB5A7 /* drawtest.vst */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = drawtest.vst;
+ remoteRef = 24A203E60F90D272003BB5A7 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 24A203ED0F90D272003BB5A7 /* drawtest.component */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = drawtest.component;
+ remoteRef = 24A203EC0F90D272003BB5A7 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 24A203EF0F90D272003BB5A7 /* drawtest.vst */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = drawtest.vst;
+ remoteRef = 24A203EE0F90D272003BB5A7 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+/* End PBXReferenceProxy section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 8D01CCC90486CAD60068D4B7 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 24CFB70407E7A0220081BD57 /* PkgInfo in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXRezBuildPhase section */
+ 8D01CCCF0486CAD60068D4B7 /* Rez */ = {
+ isa = PBXRezBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXRezBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 24CFB70807E7A07C0081BD57 /* Copy PkgInfo */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Copy PkgInfo";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/bash;
+ shellScript = "cp mac/PkgInfo \"$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.vst/Contents/\"";
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 8D01CCCB0486CAD60068D4B7 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2407DEB9089929BA00EB68BF /* DitherFloat.cpp in Sources */,
+ 24D8287009A914000093AEF8 /* DitherFloatProc.cpp in Sources */,
+ 24A203CB0F90D251003BB5A7 /* audioeffect.cpp in Sources */,
+ 24A203CC0F90D251003BB5A7 /* audioeffectx.cpp in Sources */,
+ 24A203CD0F90D251003BB5A7 /* vstplugmain.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 24BEAAEE08919AE700E695F9 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ FRAMEWORK_SEARCH_PATHS = "";
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_ENABLE_TRIGRAPHS = NO;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "";
+ GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
+ GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
+ GCC_WARN_UNKNOWN_PRAGMAS = NO;
+ HEADER_SEARCH_PATHS = "/vstsdk2.4/**";
+ INFOPLIST_FILE = ./mac/Info.plist;
+ LIBRARY_SEARCH_PATHS = "";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = "";
+ OTHER_REZFLAGS = "";
+ PRODUCT_NAME = Gain;
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ WRAPPER_EXTENSION = vst;
+ };
+ name = Debug;
+ };
+ 24BEAAEF08919AE700E695F9 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = (
+ ppc,
+ i386,
+ x86_64,
+ );
+ COPY_PHASE_STRIP = YES;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ FRAMEWORK_SEARCH_PATHS = "";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ GCC_ENABLE_TRIGRAPHS = NO;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G4;
+ GCC_OPTIMIZATION_LEVEL = s;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "";
+ GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
+ GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
+ GCC_WARN_UNKNOWN_PRAGMAS = NO;
+ HEADER_SEARCH_PATHS = "/vstsdk2.4/**";
+ INFOPLIST_FILE = ./mac/Info.plist;
+ LIBRARY_SEARCH_PATHS = "";
+ MACOSX_DEPLOYMENT_TARGET = 10.4;
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = "";
+ OTHER_REZFLAGS = "";
+ PRODUCT_NAME = DitherFloat;
+ SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
+ SECTORDER_FLAGS = "";
+ SKIP_INSTALL = NO;
+ STRIP_INSTALLED_PRODUCT = YES;
+ STRIP_STYLE = all;
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ WRAPPER_EXTENSION = vst;
+ };
+ name = Release;
+ };
+ 24BEAAF208919AE700E695F9 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(NATIVE_ARCH)";
+ GCC_MODEL_TUNING = G5;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
+ INFOPLIST_FILE = "";
+ INFOPLIST_PREPROCESS = NO;
+ };
+ name = Debug;
+ };
+ 24BEAAF308919AE700E695F9 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)";
+ ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "x86_64 i386 ppc";
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_MODEL_TUNING = G4;
+ GCC_OPTIMIZATION_LEVEL = s;
+ INFOPLIST_FILE = "";
+ INFOPLIST_PREPROCESS = NO;
+ SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "DitherFloat" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 24BEAAEE08919AE700E695F9 /* Debug */,
+ 24BEAAEF08919AE700E695F9 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Debug;
+ };
+ 24BEAAF108919AE700E695F9 /* Build configuration list for PBXProject "DitherFloat" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 24BEAAF208919AE700E695F9 /* Debug */,
+ 24BEAAF308919AE700E695F9 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Debug;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 089C1669FE841209C02AAC07 /* Project object */;
+}
diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100755
index 0000000..a80c038
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+ version = "1.0">
+ <FileRef
+ location = "self:Sample.xcodeproj">
+ </FileRef>
+</Workspace>
diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100755
index 0000000..5c38f94
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100755
index 0000000..314de0f
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.mode1v3
new file mode 100755
index 0000000..c572326
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.mode1v3
@@ -0,0 +1,1372 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>ActivePerspectiveName</key>
+ <string>Project</string>
+ <key>AllowedModules</key>
+ <array>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Name</key>
+ <string>Groups and Files Outline View</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Name</key>
+ <string>Editor</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCTaskListModule</string>
+ <key>Name</key>
+ <string>Task List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Name</key>
+ <string>File and Smart Group Detail Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Name</key>
+ <string>Detailed Build Results Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Name</key>
+ <string>Project Batch Find Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Name</key>
+ <string>Project Format Conflicts List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Name</key>
+ <string>Bookmarks Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Name</key>
+ <string>Class Browser</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Name</key>
+ <string>Source Code Control Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXDebugBreakpointsModule</string>
+ <key>Name</key>
+ <string>Debug Breakpoints Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDockableInspector</string>
+ <key>Name</key>
+ <string>Inspector</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXOpenQuicklyModule</string>
+ <key>Name</key>
+ <string>Open Quickly Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Name</key>
+ <string>Debugger</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Name</key>
+ <string>Debug Console</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Name</key>
+ <string>Snapshots Tool</string>
+ </dict>
+ </array>
+ <key>BundlePath</key>
+ <string>/Xcode3/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string>
+ <key>Description</key>
+ <string>DefaultDescriptionKey</string>
+ <key>DockingSystemVisible</key>
+ <false/>
+ <key>Extension</key>
+ <string>mode1v3</string>
+ <key>FavBarConfig</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>91857D9F148EF61800AAA11B</string>
+ <key>XCBarModuleItemNames</key>
+ <dict/>
+ <key>XCBarModuleItems</key>
+ <array/>
+ </dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>com.apple.perspectives.project.mode1v3</string>
+ <key>MajorVersion</key>
+ <integer>33</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Default</string>
+ <key>Notifications</key>
+ <array/>
+ <key>OpenEditors</key>
+ <array/>
+ <key>PerspectiveWidths</key>
+ <array>
+ <integer>-1</integer>
+ <integer>-1</integer>
+ </array>
+ <key>Perspectives</key>
+ <array>
+ <dict>
+ <key>ChosenToolbarItems</key>
+ <array>
+ <string>active-combo-popup</string>
+ <string>action</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>debugger-enable-breakpoints</string>
+ <string>build-and-go</string>
+ <string>com.apple.ide.PBXToolbarStopButton</string>
+ <string>get-info</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>com.apple.pbx.toolbar.searchfield</string>
+ </array>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProjectWithEditor</string>
+ <key>Identifier</key>
+ <string>perspective.project</string>
+ <key>IsVertical</key>
+ <false/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>186</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>089C166AFE841209C02AAC07</string>
+ <string>089C1671FE841209C02AAC07</string>
+ <string>19C28FB4FE9D528D11CA2CBB</string>
+ <string>089C167CFE841241C02AAC07</string>
+ <string>08FB77ADFE841716C02AAC07</string>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FABC05509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>11</integer>
+ <integer>10</integer>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {186, 693}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <true/>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.GFSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {203, 711}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>186</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>286 197 1261 752 0 0 1680 1028 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>203pt</string>
+ </dict>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <true/>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20306471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Gain.cpp</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20406471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Gain.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>911C2A9D1491A5F600A430AF</string>
+ <key>history</key>
+ <array>
+ <string>915DCCBB1491A5B8008574E6</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {1053, 508}}</string>
+ <key>RubberWindowFrame</key>
+ <string>286 197 1261 752 0 0 1680 1028 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>508pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20506471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 513}, {1053, 198}}</string>
+ <key>RubberWindowFrame</key>
+ <string>286 197 1261 752 0 0 1680 1028 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>198pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>1053pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCModuleDock</string>
+ <string>PBXNavigatorGroup</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>911C2A901491A5F600A430AF</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>911C2A911491A5F600A430AF</string>
+ <string>1CE0B20306471E060097A5F4</string>
+ <string>1CE0B20506471E060097A5F4</string>
+ </array>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.defaultV3</string>
+ </dict>
+ <dict>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProject</string>
+ <key>Identifier</key>
+ <string>perspective.morph</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C08E77C0454961000C914BD</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>11E0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>186</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>29B97314FDCFA39411CA2CEA</string>
+ <string>1C37FABC05509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {186, 337}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>1</integer>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.GFSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {203, 355}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>186</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>373 269 690 397 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Morph</string>
+ <key>PreferredWidth</key>
+ <integer>300</integer>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>11E0B1FE06471DED0097A5F4</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.default.shortV3</string>
+ </dict>
+ </array>
+ <key>PerspectivesBarVisible</key>
+ <false/>
+ <key>ShelfIsVisible</key>
+ <false/>
+ <key>SourceDescription</key>
+ <string>file at '/Xcode3/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TimeStamp</key>
+ <real>0.0</real>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarDisplayMode</key>
+ <integer>1</integer>
+ <key>ToolbarIsVisible</key>
+ <true/>
+ <key>ToolbarSizeMode</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Perspectives</string>
+ <key>UpdateMessage</key>
+ <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string>
+ <key>WindowJustification</key>
+ <integer>5</integer>
+ <key>WindowOrderList</key>
+ <array>
+ <string>91857DA0148EF61800AAA11B</string>
+ <string>/Users/spiadmin/Documents/Gain/Gain.xcodeproj</string>
+ </array>
+ <key>WindowString</key>
+ <string>286 197 1261 752 0 0 1680 1028 </string>
+ <key>WindowToolsV3</key>
+ <array>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.build</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528F0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string></string>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {743, 413}}</string>
+ <key>RubberWindowFrame</key>
+ <string>112 208 743 695 0 0 1680 1028 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>413pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Build Results</string>
+ <key>XCBuildResultsTrigger_Collapse</key>
+ <integer>1021</integer>
+ <key>XCBuildResultsTrigger_Open</key>
+ <integer>1011</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 418}, {743, 236}}</string>
+ <key>RubberWindowFrame</key>
+ <string>112 208 743 695 0 0 1680 1028 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Proportion</key>
+ <string>236pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>654pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Build Results</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBuildResultsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>91857DA0148EF61800AAA11B</string>
+ <string>911C2A921491A5F600A430AF</string>
+ <string>1CD0528F0623707200166675</string>
+ <string>XCMainBuildResultsModuleGUID</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.buildV3</string>
+ <key>WindowContentMinSize</key>
+ <string>486 300</string>
+ <key>WindowString</key>
+ <string>112 208 743 695 0 0 1680 1028 </string>
+ <key>WindowToolGUID</key>
+ <string>91857DA0148EF61800AAA11B</string>
+ <key>WindowToolIsVisible</key>
+ <false/>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugger</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>Debugger</key>
+ <dict>
+ <key>HorizontalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {317, 164}}</string>
+ <string>{{317, 0}, {377, 164}}</string>
+ </array>
+ </dict>
+ <key>VerticalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {694, 164}}</string>
+ <string>{{0, 164}, {694, 216}}</string>
+ </array>
+ </dict>
+ </dict>
+ <key>LauncherConfigVersion</key>
+ <string>8</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C162984064C10D400B95A72</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debug - GLUTExamples (Underwater)</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>DebugConsoleDrawerSize</key>
+ <string>{100, 120}</string>
+ <key>DebugConsoleVisible</key>
+ <string>None</string>
+ <key>DebugConsoleWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>DebugSTDIOWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>Frame</key>
+ <string>{{0, 0}, {694, 380}}</string>
+ <key>RubberWindowFrame</key>
+ <string>321 238 694 422 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugSessionModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <string>1C0AD2AB069F1E9B00FABCE6</string>
+ <string>1C162984064C10D400B95A72</string>
+ <string>1C0AD2AC069F1E9B00FABCE6</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugV3</string>
+ <key>WindowString</key>
+ <string>321 238 694 422 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.find</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CDD528C0622207200134675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528D0623707200166675</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {781, 167}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>781pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528E0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Project Find</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{8, 0}, {773, 254}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>428pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Find</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXProjectFindModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <string>1C530D58069F1CE1000CFCEE</string>
+ <string>1C530D59069F1CE1000CFCEE</string>
+ <string>1CDD528C0622207200134675</string>
+ <string>1C530D5A069F1CE1000CFCEE</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CD0528E0623707200166675</string>
+ </array>
+ <key>WindowString</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>MENUSEPARATOR</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debuggerConsole</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAAC065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debugger Console</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {650, 250}}</string>
+ <key>RubberWindowFrame</key>
+ <string>516 632 650 250 0 0 1680 1027 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Proportion</key>
+ <string>209pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>209pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger Console</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugCLIModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAAD065D492600B07095</string>
+ <string>1C78EAAE065D492600B07095</string>
+ <string>1C78EAAC065D492600B07095</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.consoleV3</string>
+ <key>WindowString</key>
+ <string>650 41 650 250 0 0 1280 1002 </string>
+ <key>WindowToolGUID</key>
+ <string>1C78EAAD065D492600B07095</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.snapshots</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Snapshots</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCSnapshotModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <string>Yes</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.snapshots</string>
+ <key>WindowString</key>
+ <string>315 824 300 550 0 0 1440 878 </string>
+ <key>WindowToolIsVisible</key>
+ <string>Yes</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.scm</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB2065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB3065D492600B07095</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {452, 0}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>0pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD052920623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>SCM</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ConsoleFrame</key>
+ <string>{{0, 259}, {452, 0}}</string>
+ <key>Frame</key>
+ <string>{{0, 7}, {452, 259}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ <key>TableConfiguration</key>
+ <array>
+ <string>Status</string>
+ <real>30</real>
+ <string>FileName</string>
+ <real>199</real>
+ <string>Path</string>
+ <real>197.0950012207031</real>
+ </array>
+ <key>TableFrame</key>
+ <string>{{0, 0}, {452, 250}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Proportion</key>
+ <string>262pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>266pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>SCM</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXCVSModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAB4065D492600B07095</string>
+ <string>1C78EAB5065D492600B07095</string>
+ <string>1C78EAB2065D492600B07095</string>
+ <string>1CD052920623707200166675</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.scm</string>
+ <key>WindowString</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.breakpoints</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>no</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>168</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {168, 350}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>0</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {185, 368}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>168</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>185pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA1AED706398EBD00589147</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{190, 0}, {554, 368}}</string>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>554pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>368pt</string>
+ </dict>
+ </array>
+ <key>MajorVersion</key>
+ <integer>3</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Breakpoints</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <string>1CDDB66907F98D9800BB5817</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CA1AED706398EBD00589147</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.breakpointsV3</string>
+ <key>WindowString</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <key>WindowToolIsVisible</key>
+ <integer>1</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugAnimator</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debug Visualizer</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXNavigatorGroup</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugAnimatorV3</string>
+ <key>WindowString</key>
+ <string>100 100 700 500 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.bookmarks</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Bookmarks</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBookmarksModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowString</key>
+ <string>538 42 401 187 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.projectFormatConflicts</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Format Conflicts</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCProjectFormatConflictsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowContentMinSize</key>
+ <string>450 300</string>
+ <key>WindowString</key>
+ <string>50 850 472 307 0 0 1440 877</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.classBrowser</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>OptionsSetName</key>
+ <string>Hierarchy, all classes</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA6456E063B45B4001379D8</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Class Browser - NSObject</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ClassesFrame</key>
+ <string>{{0, 0}, {374, 96}}</string>
+ <key>ClassesTreeTableConfiguration</key>
+ <array>
+ <string>PBXClassNameColumnIdentifier</string>
+ <real>208</real>
+ <string>PBXClassBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>Frame</key>
+ <string>{{0, 0}, {630, 331}}</string>
+ <key>MembersFrame</key>
+ <string>{{0, 105}, {374, 395}}</string>
+ <key>MembersTreeTableConfiguration</key>
+ <array>
+ <string>PBXMemberTypeIconColumnIdentifier</string>
+ <real>22</real>
+ <string>PBXMemberNameColumnIdentifier</string>
+ <real>216</real>
+ <string>PBXMemberTypeColumnIdentifier</string>
+ <real>97</real>
+ <string>PBXMemberBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <integer>1</integer>
+ <key>RubberWindowFrame</key>
+ <string>385 179 630 352 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Proportion</key>
+ <string>332pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>332pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Class Browser</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXClassBrowserModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C0AD2AF069F1E9B00FABCE6</string>
+ <string>1C0AD2B0069F1E9B00FABCE6</string>
+ <string>1CA6456E063B45B4001379D8</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.classbrowser</string>
+ <key>WindowString</key>
+ <string>385 179 630 352 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C0AD2AF069F1E9B00FABCE6</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.refactoring</string>
+ <key>IncludeInToolsMenu</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{0, 0}, {500, 335}</string>
+ <key>RubberWindowFrame</key>
+ <string>{0, 0}, {500, 335}</string>
+ </dict>
+ <key>Module</key>
+ <string>XCRefactoringModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Refactoring</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCRefactoringModule</string>
+ </array>
+ <key>WindowString</key>
+ <string>200 200 500 356 0 0 1920 1200 </string>
+ </dict>
+ </array>
+</dict>
+</plist>
diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.pbxuser
new file mode 100755
index 0000000..df94780
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.pbxuser
@@ -0,0 +1,143 @@
+// !$*UTF8*$!
+{
+ 089C1669FE841209C02AAC07 /* Project object */ = {
+ activeBuildConfigurationName = Release;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* Gain */;
+ codeSenseManager = 91857D95148EF55400AAA11B /* Code sense */;
+ perUserDictionary = {
+ PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 829,
+ 20,
+ 48,
+ 43,
+ 43,
+ 20,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ PBXFileDataSource_Target_ColumnID,
+ );
+ };
+ PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 789,
+ 60,
+ 20,
+ 48,
+ 43,
+ 43,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXTargetDataSource_PrimaryAttribute,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ );
+ };
+ PBXPerProjectTemplateStateSaveDate = 345089498;
+ PBXWorkspaceStateSaveDate = 345089498;
+ };
+ perUserProjectItems = {
+ 911C2A9D1491A5F600A430AF /* PBXTextBookmark */ = 911C2A9D1491A5F600A430AF /* PBXTextBookmark */;
+ 915DCCBB1491A5B8008574E6 /* PBXTextBookmark */ = 915DCCBB1491A5B8008574E6 /* PBXTextBookmark */;
+ };
+ sourceControlManager = 91857D94148EF55400AAA11B /* Source Control */;
+ userBuildSettings = {
+ };
+ };
+ 2407DEB6089929BA00EB68BF /* Gain.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {992, 1768}}";
+ sepNavSelRange = "{247, 0}";
+ sepNavVisRange = "{0, 1657}";
+ };
+ };
+ 245463B80991757100464AD3 /* Gain.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {992, 975}}";
+ sepNavSelRange = "{1552, 0}";
+ sepNavVisRange = "{796, 1857}";
+ sepNavWindowFrame = "{{15, 465}, {750, 558}}";
+ };
+ };
+ 24A2FF9A0F90D1DD003BB5A7 /* adelaymain.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {992, 488}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRange = "{0, 798}";
+ };
+ };
+ 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {859, 19825}}";
+ sepNavSelRange = "{10641, 0}";
+ sepNavVisRange = "{10076, 1095}";
+ };
+ };
+ 24D8286F09A914000093AEF8 /* GainProc.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {992, 482}}";
+ sepNavSelRange = "{239, 0}";
+ sepNavVisRange = "{0, 950}";
+ };
+ };
+ 24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {992, 493}}";
+ sepNavSelRange = "{249, 0}";
+ sepNavVisRange = "{0, 249}";
+ };
+ };
+ 8D01CCC60486CAD60068D4B7 /* Gain */ = {
+ activeExec = 0;
+ };
+ 911C2A9D1491A5F600A430AF /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2407DEB6089929BA00EB68BF /* Gain.cpp */;
+ name = "Gain.cpp: 10";
+ rLen = 0;
+ rLoc = 247;
+ rType = 0;
+ vrLen = 1657;
+ vrLoc = 0;
+ };
+ 915DCCBB1491A5B8008574E6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2407DEB6089929BA00EB68BF /* Gain.cpp */;
+ name = "Gain.cpp: 10";
+ rLen = 0;
+ rLoc = 247;
+ rType = 0;
+ vrLen = 1625;
+ vrLoc = 0;
+ };
+ 91857D94148EF55400AAA11B /* Source Control */ = {
+ isa = PBXSourceControlManager;
+ fallbackIsa = XCSourceControlManager;
+ isSCMEnabled = 0;
+ scmConfiguration = {
+ repositoryNamesForRoots = {
+ "" = "";
+ };
+ };
+ };
+ 91857D95148EF55400AAA11B /* Code sense */ = {
+ isa = PBXCodeSenseManager;
+ indexTemplatePath = "";
+ };
+}
diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
new file mode 100755
index 0000000..8ee693f
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+ LastUpgradeVersion = "0720"
+ version = "1.3">
+ <BuildAction
+ parallelizeBuildables = "YES"
+ buildImplicitDependencies = "YES">
+ <BuildActionEntries>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
+ BuildableName = "Gain.vst"
+ BlueprintName = "Gain"
+ ReferencedContainer = "container:Gain.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ </BuildActionEntries>
+ </BuildAction>
+ <TestAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ shouldUseLaunchSchemeArgsEnv = "YES">
+ <Testables>
+ </Testables>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </TestAction>
+ <LaunchAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ launchStyle = "0"
+ useCustomWorkingDirectory = "NO"
+ ignoresPersistentStateOnLaunch = "NO"
+ debugDocumentVersioning = "YES"
+ debugServiceExtension = "internal"
+ allowLocationSimulation = "YES">
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
+ BuildableName = "Gain.vst"
+ BlueprintName = "Gain"
+ ReferencedContainer = "container:Gain.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </LaunchAction>
+ <ProfileAction
+ buildConfiguration = "Release"
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ savedToolIdentifier = ""
+ useCustomWorkingDirectory = "NO"
+ debugDocumentVersioning = "YES">
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
+ BuildableName = "Gain.vst"
+ BlueprintName = "Gain"
+ ReferencedContainer = "container:Gain.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ </ProfileAction>
+ <AnalyzeAction
+ buildConfiguration = "Debug">
+ </AnalyzeAction>
+ <ArchiveAction
+ buildConfiguration = "Release"
+ revealArchiveInOrganizer = "YES">
+ </ArchiveAction>
+</Scheme>
diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100755
index 0000000..5bccbcb
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>Gain.xcscheme</key>
+ <dict>
+ <key>orderHint</key>
+ <integer>8</integer>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict>
+ <key>8D01CCC60486CAD60068D4B7</key>
+ <dict>
+ <key>primary</key>
+ <true/>
+ </dict>
+ </dict>
+</dict>
+</plist>
diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100755
index 0000000..a7bdd62
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>SchemeUserState</key>
+ <dict>
+ <key>«PROJECTNAME».xcscheme</key>
+ <dict>
+ <key>orderHint</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <key>SuppressBuildableAutocreation</key>
+ <dict>
+ <key>8D01CCC60486CAD60068D4B7</key>
+ <dict>
+ <key>primary</key>
+ <true/>
+ </dict>
+ </dict>
+</dict>
+</plist>
diff --git a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
new file mode 100755
index 0000000..0df2de4
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+ version = "1.3">
+ <BuildAction
+ parallelizeBuildables = "YES"
+ buildImplicitDependencies = "YES">
+ <BuildActionEntries>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
+ BuildableName = "&#171;PROJECTNAME&#187;.vst"
+ BlueprintName = "&#171;PROJECTNAME&#187;"
+ ReferencedContainer = "container:Sample.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ </BuildActionEntries>
+ </BuildAction>
+ <TestAction
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ buildConfiguration = "Debug">
+ <Testables>
+ </Testables>
+ </TestAction>
+ <LaunchAction
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
+ launchStyle = "0"
+ useCustomWorkingDirectory = "NO"
+ buildConfiguration = "Debug"
+ debugDocumentVersioning = "YES"
+ allowLocationSimulation = "YES">
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </LaunchAction>
+ <ProfileAction
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ savedToolIdentifier = ""
+ useCustomWorkingDirectory = "NO"
+ buildConfiguration = "Release"
+ debugDocumentVersioning = "YES">
+ </ProfileAction>
+ <AnalyzeAction
+ buildConfiguration = "Debug">
+ </AnalyzeAction>
+ <ArchiveAction
+ buildConfiguration = "Release"
+ revealArchiveInOrganizer = "YES">
+ </ArchiveAction>
+</Scheme>
diff --git a/plugins/MacVST/DitherFloat/mac/Info.plist b/plugins/MacVST/DitherFloat/mac/Info.plist
new file mode 100755
index 0000000..8167b96
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/mac/Info.plist
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>DitherFloat</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.airwindows.DitherFloat</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>BNDL</string>
+ <key>CFBundleSignature</key>
+ <string>Dthr</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>CSResourcesFileMapped</key>
+ <true/>
+</dict>
+</plist>
diff --git a/plugins/MacVST/DitherFloat/mac/PkgInfo b/plugins/MacVST/DitherFloat/mac/PkgInfo
new file mode 100755
index 0000000..19a9cf6
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/mac/PkgInfo
@@ -0,0 +1 @@
+BNDL???? \ No newline at end of file
diff --git a/plugins/MacVST/DitherFloat/mac/xcode_vst_prefix.h b/plugins/MacVST/DitherFloat/mac/xcode_vst_prefix.h
new file mode 100755
index 0000000..eaf4c0b
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/mac/xcode_vst_prefix.h
@@ -0,0 +1,17 @@
+#define MAC 1
+#define MACX 1
+
+#define USE_NAMESPACE 0
+
+#define TARGET_API_MAC_CARBON 1
+#define USENAVSERVICES 1
+
+#define __CF_USE_FRAMEWORK_INCLUDES__
+
+#if __MWERKS__
+#define __NOEXTENSIONS__
+#endif
+
+#define QUARTZ 1
+
+#include <AvailabilityMacros.h> \ No newline at end of file
diff --git a/plugins/MacVST/DitherFloat/source/DitherFloat.cpp b/plugins/MacVST/DitherFloat/source/DitherFloat.cpp
new file mode 100755
index 0000000..ffd9e94
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/source/DitherFloat.cpp
@@ -0,0 +1,127 @@
+/* ========================================
+ * DitherFloat - DitherFloat.h
+ * Copyright (c) 2016 airwindows, All rights reserved
+ * ======================================== */
+
+#ifndef __DitherFloat_H
+#include "DitherFloat.h"
+#endif
+
+AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new DitherFloat(audioMaster);}
+
+DitherFloat::DitherFloat(audioMasterCallback audioMaster) :
+ AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
+{
+ A = 0.0;
+ B = 1.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+ _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
+ _canDo.insert("plugAsSend"); // plug-in can be used as a send effect.
+ _canDo.insert("x2in2out");
+ setNumInputs(kNumInputs);
+ setNumOutputs(kNumOutputs);
+ setUniqueID(kUniqueId);
+ canProcessReplacing(); // supports output replacing
+ canDoubleReplacing(); // supports double precision processing
+ programsAreChunks(true);
+ vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name
+}
+
+DitherFloat::~DitherFloat() {}
+VstInt32 DitherFloat::getVendorVersion () {return 1000;}
+void DitherFloat::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
+void DitherFloat::getProgramName(char *name) {vst_strncpy (name, _programName, kVstMaxProgNameLen);}
+//airwindows likes to ignore this stuff. Make your own programs, and make a different plugin rather than
+//trying to do versioning and preventing people from using older versions. Maybe they like the old one!
+
+static float pinParameter(float data)
+{
+ if (data < 0.0f) return 0.0f;
+ if (data > 1.0f) return 1.0f;
+ return data;
+}
+
+VstInt32 DitherFloat::getChunk (void** data, bool isPreset)
+{
+ float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
+ chunkData[0] = A;
+ chunkData[1] = B;
+ /* Note: The way this is set up, it will break if you manage to save settings on an Intel
+ machine and load them on a PPC Mac. However, it's fine if you stick to the machine you
+ started with. */
+
+ *data = chunkData;
+ return kNumParameters * sizeof(float);
+}
+
+VstInt32 DitherFloat::setChunk (void* data, VstInt32 byteSize, bool isPreset)
+{
+ float *chunkData = (float *)data;
+ A = pinParameter(chunkData[0]);
+ B = pinParameter(chunkData[1]);
+ /* We're ignoring byteSize as we found it to be a filthy liar */
+
+ /* calculate any other fields you need here - you could copy in
+ code from setParameter() here. */
+ return 0;
+}
+
+void DitherFloat::setParameter(VstInt32 index, float value) {
+ switch (index) {
+ case kParamA: A = value; break;
+ case kParamB: B = value; break;
+ default: throw; // unknown parameter, shouldn't happen!
+ }
+}
+
+float DitherFloat::getParameter(VstInt32 index) {
+ switch (index) {
+ case kParamA: return A; break;
+ case kParamB: return B; break;
+ default: break; // unknown parameter, shouldn't happen!
+ } return 0.0; //we only need to update the relevant name, this is simple to manage
+}
+
+void DitherFloat::getParameterName(VstInt32 index, char *text) {
+ switch (index) {
+ case kParamA: vst_strncpy (text, "Offset", kVstMaxParamStrLen); break;
+ case kParamB: vst_strncpy (text, "Dither", kVstMaxParamStrLen); break;
+ default: break; // unknown parameter, shouldn't happen!
+ } //this is our labels for displaying in the VST host
+}
+
+void DitherFloat::getParameterDisplay(VstInt32 index, char *text) {
+ switch (index) {
+ case kParamA: int2string ((VstInt32)(A * 32), text, kVstMaxParamStrLen); break;
+ case kParamB: float2string (B, text, kVstMaxParamStrLen); break;
+ default: break; // unknown parameter, shouldn't happen!
+ } //this displays the values and handles 'popups' where it's discrete choices
+}
+
+void DitherFloat::getParameterLabel(VstInt32 index, char *text) {
+ switch (index) {
+ case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
+ case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
+ default: break; // unknown parameter, shouldn't happen!
+ }
+}
+
+VstInt32 DitherFloat::canDo(char *text)
+{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
+
+bool DitherFloat::getEffectName(char* name) {
+ vst_strncpy(name, "DitherFloat", kVstMaxProductStrLen); return true;
+}
+
+VstPlugCategory DitherFloat::getPlugCategory() {return kPlugCategEffect;}
+
+bool DitherFloat::getProductString(char* text) {
+ vst_strncpy (text, "airwindows DitherFloat", kVstMaxProductStrLen); return true;
+}
+
+bool DitherFloat::getVendorString(char* text) {
+ vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
+}
diff --git a/plugins/MacVST/DitherFloat/source/DitherFloat.h b/plugins/MacVST/DitherFloat/source/DitherFloat.h
new file mode 100755
index 0000000..b8ddf51
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/source/DitherFloat.h
@@ -0,0 +1,64 @@
+/* ========================================
+ * DitherFloat - DitherFloat.h
+ * Created 8/12/11 by SPIAdmin
+ * Copyright (c) 2011 __MyCompanyName__, All rights reserved
+ * ======================================== */
+
+#ifndef __DitherFloat_H
+#define __DitherFloat_H
+
+#ifndef __audioeffect__
+#include "audioeffectx.h"
+#endif
+
+#include <set>
+#include <string>
+#include <math.h>
+
+enum {
+ kParamA = 0,
+ kParamB = 1,
+ kNumParameters = 2
+}; //
+
+const int kNumPrograms = 0;
+const int kNumInputs = 2;
+const int kNumOutputs = 2;
+const unsigned long kUniqueId = 'dthf'; //Change this to what the AU identity is!
+
+class DitherFloat :
+ public AudioEffectX
+{
+public:
+ DitherFloat(audioMasterCallback audioMaster);
+ ~DitherFloat();
+ virtual bool getEffectName(char* name); // The plug-in name
+ virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in
+ virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg
+ virtual bool getVendorString(char* text); // Vendor info
+ virtual VstInt32 getVendorVersion(); // Version number
+ virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);
+ virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames);
+ virtual void getProgramName(char *name); // read the name from the host
+ virtual void setProgramName(char *name); // changes the name of the preset displayed in the host
+ virtual VstInt32 getChunk (void** data, bool isPreset);
+ virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset);
+ virtual float getParameter(VstInt32 index); // get the parameter value at the specified index
+ virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value
+ virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB)
+ virtual void getParameterName(VstInt32 index, char *text); // name of the parameter
+ virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value
+ virtual VstInt32 canDo(char *text);
+private:
+ char _programName[kVstMaxProgNameLen + 1];
+ std::set< std::string > _canDo;
+
+ long double fpNShapeL;
+ long double fpNShapeR;
+ //default stuff
+
+ float A;
+ float B;
+};
+
+#endif
diff --git a/plugins/MacVST/DitherFloat/source/DitherFloatProc.cpp b/plugins/MacVST/DitherFloat/source/DitherFloatProc.cpp
new file mode 100755
index 0000000..3c76a1a
--- /dev/null
+++ b/plugins/MacVST/DitherFloat/source/DitherFloatProc.cpp
@@ -0,0 +1,184 @@
+/* ========================================
+ * DitherFloat - DitherFloat.h
+ * Copyright (c) 2016 airwindows, All rights reserved
+ * ======================================== */
+
+#ifndef __DitherFloat_H
+#include "DitherFloat.h"
+#endif
+
+void DitherFloat::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
+{
+ float* in1 = inputs[0];
+ float* in2 = inputs[1];
+ float* out1 = outputs[0];
+ float* out2 = outputs[1];
+
+ double overallscale = 1.0;
+ overallscale /= 44100.0;
+ overallscale *= getSampleRate();
+
+ int floatOffset = (A * 32);
+ long double blend = B;
+
+ long double gain = 0;
+
+ switch (floatOffset)
+ {
+ case 0: gain = 1.0; break;
+ case 1: gain = 2.0; break;
+ case 2: gain = 4.0; break;
+ case 3: gain = 8.0; break;
+ case 4: gain = 16.0; break;
+ case 5: gain = 32.0; break;
+ case 6: gain = 64.0; break;
+ case 7: gain = 128.0; break;
+ case 8: gain = 256.0; break;
+ case 9: gain = 512.0; break;
+ case 10: gain = 1024.0; break;
+ case 11: gain = 2048.0; break;
+ case 12: gain = 4096.0; break;
+ case 13: gain = 8192.0; break;
+ case 14: gain = 16384.0; break;
+ case 15: gain = 32768.0; break;
+ case 16: gain = 65536.0; break;
+ case 17: gain = 131072.0; break;
+ case 18: gain = 262144.0; break;
+ case 19: gain = 524288.0; break;
+ case 20: gain = 1048576.0; break;
+ case 21: gain = 2097152.0; break;
+ case 22: gain = 4194304.0; break;
+ case 23: gain = 8388608.0; break;
+ case 24: gain = 16777216.0; break;
+ case 25: gain = 33554432.0; break;
+ case 26: gain = 67108864.0; break;
+ case 27: gain = 134217728.0; break;
+ case 28: gain = 268435456.0; break;
+ case 29: gain = 536870912.0; break;
+ case 30: gain = 1073741824.0; break;
+ case 31: gain = 2147483648.0; break;
+ case 32: gain = 4294967296.0; break;
+ }
+ //we are directly punching in the gain values rather than calculating them
+
+ while (--sampleFrames >= 0)
+ {
+ long double inputSampleL = *in1 + (gain-1);
+ long double inputSampleR = *in2 + (gain-1);
+
+
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo;
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo;
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+
+
+
+ inputSampleL = (float)inputSampleL; //equivalent of 'floor' for 32 bit floating point
+ inputSampleR = (float)inputSampleR; //equivalent of 'floor' for 32 bit floating point
+ //We do that separately, we're truncating to floating point WHILE heavily offset.
+
+ *out1 = inputSampleL - (gain-1);
+ *out2 = inputSampleR - (gain-1);
+
+ *in1++;
+ *in2++;
+ *out1++;
+ *out2++;
+ }
+}
+
+void DitherFloat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
+{
+ double* in1 = inputs[0];
+ double* in2 = inputs[1];
+ double* out1 = outputs[0];
+ double* out2 = outputs[1];
+
+ double overallscale = 1.0;
+ overallscale /= 44100.0;
+ overallscale *= getSampleRate();
+
+ int floatOffset = (A * 32);
+ long double blend = B;
+
+ long double gain = 0;
+
+ switch (floatOffset)
+ {
+ case 0: gain = 1.0; break;
+ case 1: gain = 2.0; break;
+ case 2: gain = 4.0; break;
+ case 3: gain = 8.0; break;
+ case 4: gain = 16.0; break;
+ case 5: gain = 32.0; break;
+ case 6: gain = 64.0; break;
+ case 7: gain = 128.0; break;
+ case 8: gain = 256.0; break;
+ case 9: gain = 512.0; break;
+ case 10: gain = 1024.0; break;
+ case 11: gain = 2048.0; break;
+ case 12: gain = 4096.0; break;
+ case 13: gain = 8192.0; break;
+ case 14: gain = 16384.0; break;
+ case 15: gain = 32768.0; break;
+ case 16: gain = 65536.0; break;
+ case 17: gain = 131072.0; break;
+ case 18: gain = 262144.0; break;
+ case 19: gain = 524288.0; break;
+ case 20: gain = 1048576.0; break;
+ case 21: gain = 2097152.0; break;
+ case 22: gain = 4194304.0; break;
+ case 23: gain = 8388608.0; break;
+ case 24: gain = 16777216.0; break;
+ case 25: gain = 33554432.0; break;
+ case 26: gain = 67108864.0; break;
+ case 27: gain = 134217728.0; break;
+ case 28: gain = 268435456.0; break;
+ case 29: gain = 536870912.0; break;
+ case 30: gain = 1073741824.0; break;
+ case 31: gain = 2147483648.0; break;
+ case 32: gain = 4294967296.0; break;
+ }
+ //we are directly punching in the gain values rather than calculating them
+
+ while (--sampleFrames >= 0)
+ {
+ long double inputSampleL = *in1 + (gain-1);
+ long double inputSampleR = *in2 + (gain-1);
+
+
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo;
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo;
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+
+
+
+ inputSampleL = (float)inputSampleL; //equivalent of 'floor' for 32 bit floating point
+ inputSampleR = (float)inputSampleR; //equivalent of 'floor' for 32 bit floating point
+ //We do that separately, we're truncating to floating point WHILE heavily offset.
+
+ //note for 64 bit version: this is not for actually dithering 64 bit floats!
+ //This is specifically for demonstrating the sound of 32 bit floating point dither
+ //even over a 64 bit buss. Therefore it should be using float, above!
+
+ *out1 = inputSampleL - (gain-1);
+ *out2 = inputSampleR - (gain-1);
+
+ *in1++;
+ *in2++;
+ *out1++;
+ *out2++;
+ }
+}
diff --git a/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser
index 79d6624..a600232 100755
--- a/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 566520525;
- PBXWorkspaceStateSaveDate = 566520525;
+ PBXPerProjectTemplateStateSaveDate = 569734615;
+ PBXWorkspaceStateSaveDate = 569734615;
};
perUserProjectItems = {
- 8BBB33E421C45DDB00825986 /* PBXTextBookmark */ = 8BBB33E421C45DDB00825986 /* PBXTextBookmark */;
+ 8B79387A21F575DF006E9731 /* PBXTextBookmark */ = 8B79387A21F575DF006E9731 /* PBXTextBookmark */;
8BBB33F821C46ADB00825986 /* PBXTextBookmark */ = 8BBB33F821C46ADB00825986 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -62,9 +62,9 @@
};
2407DEB6089929BA00EB68BF /* DitherMeDiskers.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {649, 1209}}";
+ sepNavIntBoundsRect = "{{0, 0}, {649, 1183}}";
sepNavSelRange = "{2491, 0}";
- sepNavVisRange = "{2343, 150}";
+ sepNavVisRange = "{2345, 148}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
@@ -106,15 +106,15 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BBB33E421C45DDB00825986 /* PBXTextBookmark */ = {
+ 8B79387A21F575DF006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* DitherMeDiskers.cpp */;
name = "DitherMeDiskers.cpp: 69";
rLen = 0;
rLoc = 2491;
rType = 0;
- vrLen = 219;
- vrLoc = 2274;
+ vrLen = 148;
+ vrLoc = 2345;
};
8BBB33F821C46ADB00825986 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3
index 6f5eba5..a10a837 100755
--- a/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBB33F821C46ADB00825986</string>
+ <string>8B79387A21F575DF006E9731</string>
<key>history</key>
<array>
- <string>8BBB33E421C45DDB00825986</string>
+ <string>8BBB33F821C46ADB00825986</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 102}}</string>
<key>RubberWindowFrame</key>
<string>320 286 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>102pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>339pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 312}}</string>
<key>RubberWindowFrame</key>
<string>320 286 810 487 0 0 1440 878 </string>
</dict>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBB33F921C46ADB00825986</string>
+ <string>8B79387B21F575DF006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBB33FA21C46ADB00825986</string>
+ <string>8B79387C21F575DF006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBB33FB21C46ADB00825986</string>
+ <string>8B79387D21F575DF006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>566520539.86159599</real>
+ <real>569734623.23729205</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBB33FC21C46ADB00825986</string>
<string>/Users/christopherjohnson/Desktop/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser
index 3192b34..67d6ce9 100755
--- a/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 566520842;
- PBXWorkspaceStateSaveDate = 566520842;
+ PBXPerProjectTemplateStateSaveDate = 569734651;
+ PBXWorkspaceStateSaveDate = 569734651;
};
perUserProjectItems = {
8B416DB721B6143700DD5013 /* PBXTextBookmark */ = 8B416DB721B6143700DD5013 /* PBXTextBookmark */;
8B416DB821B6143700DD5013 /* PBXBookmark */ = 8B416DB821B6143700DD5013 /* PBXBookmark */;
+ 8B79389A21F57607006E9731 /* PBXTextBookmark */ = 8B79389A21F57607006E9731 /* PBXTextBookmark */;
8BBB310321B8993300825986 /* PBXTextBookmark */ = 8BBB310321B8993300825986 /* PBXTextBookmark */;
- 8BBB34C021C46EA800825986 /* PBXTextBookmark */ = 8BBB34C021C46EA800825986 /* PBXTextBookmark */;
8BBB34C121C46EA800825986 /* PBXTextBookmark */ = 8BBB34C121C46EA800825986 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -123,18 +123,22 @@
isa = PBXBookmark;
fRef = 245463B80991757100464AD3 /* DitherMeTimbers.h */;
};
+ 8B79389A21F57607006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* DitherMeTimbersProc.cpp */;
+ name = "DitherMeTimbersProc.cpp: 122";
+ rLen = 0;
+ rLoc = 3612;
+ rType = 0;
+ vrLen = 0;
+ vrLoc = 0;
+ };
8BBB308D21B7F07D00825986 /* DitherMeTImbers.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
name = DitherMeTImbers.h;
path = /Users/christopherjohnson/Desktop/MacVST/DitherMeTimbers/source/DitherMeTImbers.h;
sourceTree = "<absolute>";
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 819}}";
- sepNavSelRange = "{2473, 86}";
- sepNavVisRange = "{283, 2287}";
- sepNavWindowFrame = "{{555, 47}, {895, 831}}";
- };
};
8BBB310321B8993300825986 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
@@ -146,16 +150,6 @@
vrLen = 7;
vrLoc = 2563;
};
- 8BBB34C021C46EA800825986 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 24D8286F09A914000093AEF8 /* DitherMeTimbersProc.cpp */;
- name = "DitherMeTimbersProc.cpp: 122";
- rLen = 0;
- rLoc = 3612;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
8BBB34C121C46EA800825986 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* DitherMeTimbersProc.cpp */;
diff --git a/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3
index e3b2aee..66ebae8 100755
--- a/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj/christopherjohnson.perspectivev3
@@ -351,13 +351,13 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBB34C121C46EA800825986</string>
+ <string>8B79389A21F57607006E9731</string>
<key>history</key>
<array>
<string>8B416DB721B6143700DD5013</string>
<string>8B416DB821B6143700DD5013</string>
<string>8BBB310321B8993300825986</string>
- <string>8BBB34C021C46EA800825986</string>
+ <string>8BBB34C121C46EA800825986</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>613 141 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,7 +396,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
<string>613 141 810 487 0 0 1440 878 </string>
</dict>
@@ -480,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBB34C221C46EA800825986</string>
+ <string>8B79389B21F57607006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBB34C321C46EA800825986</string>
+ <string>8B79389C21F57607006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBB34C421C46EA800825986</string>
+ <string>8B79389D21F57607006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -637,7 +637,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>566521512.17248595</real>
+ <real>569734663.38253498</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -654,7 +654,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBB34C521C46EA800825986</string>
<string>/Users/christopherjohnson/Desktop/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser
index fafb484..32eaf98 100755
--- a/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 557697507;
- PBXWorkspaceStateSaveDate = 557697507;
+ PBXPerProjectTemplateStateSaveDate = 569734571;
+ PBXWorkspaceStateSaveDate = 569734571;
};
perUserProjectItems = {
- 8B913F89213DBC2200BA6EEC /* PBXTextBookmark */ = 8B913F89213DBC2200BA6EEC /* PBXTextBookmark */;
+ 8B79385A21F575BA006E9731 /* PBXTextBookmark */ = 8B79385A21F575BA006E9731 /* PBXTextBookmark */;
8B914093213DCA1600BA6EEC /* PBXTextBookmark */ = 8B914093213DCA1600BA6EEC /* PBXTextBookmark */;
8B914094213DCA1600BA6EEC /* PBXTextBookmark */ = 8B914094213DCA1600BA6EEC /* PBXTextBookmark */;
};
@@ -87,9 +87,9 @@
};
24D8286F09A914000093AEF8 /* DitherboxProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {565, 26065}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 26065}}";
sepNavSelRange = "{81896, 0}";
- sepNavVisRange = "{39186, 42}";
+ sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{516, 47}, {895, 831}}";
};
};
@@ -107,15 +107,15 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B913F89213DBC2200BA6EEC /* PBXTextBookmark */ = {
+ 8B79385A21F575BA006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* DitherboxProc.cpp */;
- name = "DitherboxProc.cpp: 1829";
+ name = "DitherboxProc.cpp: 2008";
rLen = 0;
rLoc = 81896;
rType = 0;
- vrLen = 246;
- vrLoc = 38973;
+ vrLen = 0;
+ vrLoc = 0;
};
8B914093213DCA1600BA6EEC /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3
index b9f897f..dfee9c0 100755
--- a/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Ditherbox/Ditherbox.xcodeproj/christopherjohnson.perspectivev3
@@ -351,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B914094213DCA1600BA6EEC</string>
+ <string>8B79385A21F575BA006E9731</string>
<key>history</key>
<array>
<string>8B914093213DCA1600BA6EEC</string>
- <string>8B913F89213DBC2200BA6EEC</string>
+ <string>8B914094213DCA1600BA6EEC</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 51}}</string>
+ <string>{{0, 0}, {603, 32}}</string>
<key>RubberWindowFrame</key>
<string>34 315 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>51pt</string>
+ <string>32pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>390pt</string>
+ <string>409pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,7 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
+ <string>{{10, 27}, {603, 382}}</string>
<key>RubberWindowFrame</key>
<string>34 315 810 487 0 0 1440 878 </string>
</dict>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B914095213DCA1600BA6EEC</string>
+ <string>8B79385B21F575BA006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B914096213DCA1600BA6EEC</string>
+ <string>8B79385C21F575BA006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B914097213DCA1600BA6EEC</string>
+ <string>8B79385D21F575BA006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>557697558.29189706</real>
+ <real>569734586.84466803</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,7 +652,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B914098213DCA1600BA6EEC</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Ditherbox/Ditherbox.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser
index d51737f..87088d6 100755
--- a/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460183;
- PBXWorkspaceStateSaveDate = 528460183;
+ PBXPerProjectTemplateStateSaveDate = 569734688;
+ PBXWorkspaceStateSaveDate = 569734688;
};
perUserProjectItems = {
- 8B9D6B781F7EE06F007AB60F /* PBXTextBookmark */ = 8B9D6B781F7EE06F007AB60F /* PBXTextBookmark */;
- 8B9D79991F7FA9C1007AB60F /* PBXTextBookmark */ = 8B9D79991F7FA9C1007AB60F /* PBXTextBookmark */;
+ 8B7938BA21F5762A006E9731 /* PBXTextBookmark */ = 8B7938BA21F5762A006E9731 /* PBXTextBookmark */;
+ 8B913F4F213DBA1400BA6EEC /* PBXTextBookmark */ = 8B913F4F213DBA1400BA6EEC /* PBXTextBookmark */;
+ 8B913F51213DBA1400BA6EEC /* PBXTextBookmark */ = 8B913F51213DBA1400BA6EEC /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -78,18 +79,18 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {747, 19864}}";
+ sepNavIntBoundsRect = "{{0, 0}, {747, 19877}}";
sepNavSelRange = "{10616, 0}";
- sepNavVisRange = "{0, 0}";
+ sepNavVisRange = "{107, 280}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
24D8286F09A914000093AEF8 /* DoublePaulProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3601}}";
+ sepNavIntBoundsRect = "{{0, 0}, {684, 3328}}";
sepNavSelRange = "{615, 0}";
- sepNavVisRange = "{445, 2248}";
- sepNavWindowFrame = "{{328, 47}, {895, 831}}";
+ sepNavVisRange = "{522, 172}";
+ sepNavWindowFrame = "{{15, 47}, {895, 831}}";
};
};
8B02375E1D42B1C400E1E8C8 /* Source Control */ = {
@@ -106,25 +107,35 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6B781F7EE06F007AB60F /* PBXTextBookmark */ = {
+ 8B7938BA21F5762A006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
- name = "audioeffectx.cpp: 307";
+ fRef = 24D8286F09A914000093AEF8 /* DoublePaulProc.cpp */;
+ name = "DoublePaulProc.cpp: 25";
rLen = 0;
- rLoc = 10616;
+ rLoc = 615;
rType = 0;
- vrLen = 0;
- vrLoc = 0;
+ vrLen = 172;
+ vrLoc = 522;
};
- 8B9D79991F7FA9C1007AB60F /* PBXTextBookmark */ = {
+ 8B913F4F213DBA1400BA6EEC /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
rLen = 0;
rLoc = 10616;
rType = 0;
- vrLen = 0;
- vrLoc = 0;
+ vrLen = 280;
+ vrLoc = 107;
+ };
+ 8B913F51213DBA1400BA6EEC /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* DoublePaulProc.cpp */;
+ name = "DoublePaulProc.cpp: 25";
+ rLen = 0;
+ rLoc = 615;
+ rType = 0;
+ vrLen = 291;
+ vrLoc = 522;
};
8D01CCC60486CAD60068D4B7 /* DoublePaul */ = {
activeExec = 0;
diff --git a/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3
index fe838cb..d88c235 100755
--- a/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/DoublePaul/DoublePaul.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>318 298 810 487 0 0 1440 878 </string>
+ <string>73 294 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -339,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>audioeffectx.cpp</string>
+ <string>DoublePaulProc.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -347,14 +347,15 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>audioeffectx.cpp</string>
+ <string>DoublePaulProc.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D79991F7FA9C1007AB60F</string>
+ <string>8B7938BA21F5762A006E9731</string>
<key>history</key>
<array>
- <string>8B9D6B781F7EE06F007AB60F</string>
+ <string>8B913F4F213DBA1400BA6EEC</string>
+ <string>8B913F51213DBA1400BA6EEC</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>318 298 810 487 0 0 1440 878 </string>
+ <string>73 294 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,9 +394,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
<key>RubberWindowFrame</key>
- <string>318 298 810 487 0 0 1440 878 </string>
+ <string>73 294 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -477,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D799A1F7FA9C1007AB60F</string>
+ <string>8B7938BB21F5762A006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D799B1F7FA9C1007AB60F</string>
+ <string>8B7938BC21F5762A006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D799C1F7FA9C1007AB60F</string>
+ <string>8B7938BD21F5762A006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460225.04550499</real>
+ <real>569734698.54333794</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,11 +652,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BB6DDFD1E5A8BDB00F3CD1D</string>
<string>/Users/christopherjohnson/Desktop/MacVST/DoublePaul/DoublePaul.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>318 298 810 487 0 0 1440 878 </string>
+ <string>73 294 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.pbxuser
index 0d13528..a5f5df4 100755
--- a/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460236;
- PBXWorkspaceStateSaveDate = 528460236;
+ PBXPerProjectTemplateStateSaveDate = 569734718;
+ PBXWorkspaceStateSaveDate = 569734718;
};
perUserProjectItems = {
+ 8B7938E821F5766D006E9731 /* PBXTextBookmark */ = 8B7938E821F5766D006E9731 /* PBXTextBookmark */;
+ 8B7938E921F5766D006E9731 /* XCBuildMessageTextBookmark */ = 8B7938E921F5766D006E9731 /* XCBuildMessageTextBookmark */;
+ 8B7938EA21F5766D006E9731 /* PBXTextBookmark */ = 8B7938EA21F5766D006E9731 /* PBXTextBookmark */;
8B93B4861DB80EC5000D49A5 /* PBXTextBookmark */ = 8B93B4861DB80EC5000D49A5 /* PBXTextBookmark */;
- 8B93B4C41DB816DE000D49A5 /* PBXTextBookmark */ = 8B93B4C41DB816DE000D49A5 /* PBXTextBookmark */;
- 8B9D6BA21F7EE49F007AB60F /* PBXTextBookmark */ = 8B9D6BA21F7EE49F007AB60F /* PBXTextBookmark */;
- 8B9D79AE1F7FA9E9007AB60F /* PBXTextBookmark */ = 8B9D79AE1F7FA9E9007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -64,17 +64,17 @@
};
2407DEB6089929BA00EB68BF /* Drive.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 2002}}";
- sepNavSelRange = "{459, 0}";
- sepNavVisRange = "{44, 296}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 2015}}";
+ sepNavSelRange = "{558, 0}";
+ sepNavVisRange = "{0, 1867}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Drive.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 1105}}";
- sepNavSelRange = "{2619, 0}";
- sepNavVisRange = "{2555, 79}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 962}}";
+ sepNavSelRange = "{2565, 0}";
+ sepNavVisRange = "{375, 2316}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
@@ -88,9 +88,9 @@
};
24D8286F09A914000093AEF8 /* DriveProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 4004}}";
- sepNavSelRange = "{6223, 1892}";
- sepNavVisRange = "{855, 2341}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 3393}}";
+ sepNavSelRange = "{3343, 0}";
+ sepNavVisRange = "{3322, 44}";
sepNavWindowFrame = "{{378, 39}, {895, 831}}";
};
};
@@ -108,45 +108,44 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B93B4861DB80EC5000D49A5 /* PBXTextBookmark */ = {
+ 8B7938E821F5766D006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 2407DEB6089929BA00EB68BF /* Drive.cpp */;
- name = "Drive.cpp: 18";
+ fRef = 245463B80991757100464AD3 /* Drive.h */;
+ name = "Drive.h: 69";
rLen = 0;
- rLoc = 459;
+ rLoc = 2630;
rType = 0;
- vrLen = 296;
- vrLoc = 44;
+ vrLen = 100;
+ vrLoc = 2568;
};
- 8B93B4C41DB816DE000D49A5 /* PBXTextBookmark */ = {
+ 8B7938E921F5766D006E9731 /* XCBuildMessageTextBookmark */ = {
isa = PBXTextBookmark;
+ comments = "'fpFlip' was not declared in this scope";
fRef = 24D8286F09A914000093AEF8 /* DriveProc.cpp */;
- name = "DriveProc.cpp: 142";
- rLen = 26;
- rLoc = 5927;
- rType = 0;
- vrLen = 200;
- vrLoc = 3942;
+ fallbackIsa = XCBuildMessageTextBookmark;
+ rLen = 1;
+ rLoc = 94;
+ rType = 1;
};
- 8B9D6BA21F7EE49F007AB60F /* PBXTextBookmark */ = {
+ 8B7938EA21F5766D006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 245463B80991757100464AD3 /* Drive.h */;
- name = "Drive.h: 68";
+ fRef = 24D8286F09A914000093AEF8 /* DriveProc.cpp */;
+ name = "DriveProc.cpp: 95";
rLen = 0;
- rLoc = 2619;
+ rLoc = 3343;
rType = 0;
- vrLen = 100;
- vrLoc = 2534;
+ vrLen = 44;
+ vrLoc = 3322;
};
- 8B9D79AE1F7FA9E9007AB60F /* PBXTextBookmark */ = {
+ 8B93B4861DB80EC5000D49A5 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 245463B80991757100464AD3 /* Drive.h */;
- name = "Drive.h: 68";
+ fRef = 2407DEB6089929BA00EB68BF /* Drive.cpp */;
+ name = "Drive.cpp: 18";
rLen = 0;
- rLoc = 2619;
+ rLoc = 459;
rType = 0;
- vrLen = 79;
- vrLoc = 2555;
+ vrLen = 296;
+ vrLoc = 44;
};
8D01CCC60486CAD60068D4B7 /* Drive */ = {
activeExec = 0;
diff --git a/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3
index c708842..1a33639 100755
--- a/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Drive/Drive.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>7</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -339,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Drive.h</string>
+ <string>DriveProc.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -347,16 +347,16 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Drive.h</string>
+ <string>DriveProc.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D79AE1F7FA9E9007AB60F</string>
+ <string>8B7938EA21F5766D006E9731</string>
<key>history</key>
<array>
<string>8B93B4861DB80EC5000D49A5</string>
- <string>8B93B4C41DB816DE000D49A5</string>
- <string>8B9D6BA21F7EE49F007AB60F</string>
+ <string>8B7938E821F5766D006E9731</string>
+ <string>8B7938E921F5766D006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 86}}</string>
+ <string>{{0, 0}, {603, 69}}</string>
<key>RubberWindowFrame</key>
<string>332 336 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>86pt</string>
+ <string>69pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>355pt</string>
+ <string>372pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
- <key>RubberWindowFrame</key>
- <string>332 336 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 345}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 345}}</string>
+ <key>RubberWindowFrame</key>
+ <string>332 336 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D79AF1F7FA9E9007AB60F</string>
+ <string>8B7938EB21F5766D006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D79B01F7FA9E9007AB60F</string>
+ <string>8B7938EC21F5766D006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D79B11F7FA9E9007AB60F</string>
+ <string>8B7938ED21F5766D006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460265.50522298</real>
+ <real>569734765.92090094</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,7 +653,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D79B21F7FA9E9007AB60F</string>
+ <string>8B7938EE21F5766D006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Drive/Drive.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Drive/source/Drive.cpp b/plugins/MacVST/Drive/source/Drive.cpp
index 35d0594..ac5f228 100755
--- a/plugins/MacVST/Drive/source/Drive.cpp
+++ b/plugins/MacVST/Drive/source/Drive.cpp
@@ -20,12 +20,9 @@ Drive::Drive(audioMasterCallback audioMaster) :
iirSampleBL = 0.0;
iirSampleAR = 0.0;
iirSampleBR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Drive/source/Drive.h b/plugins/MacVST/Drive/source/Drive.h
index c7039c5..525a09e 100755
--- a/plugins/MacVST/Drive/source/Drive.h
+++ b/plugins/MacVST/Drive/source/Drive.h
@@ -55,17 +55,14 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double iirSampleAL;
double iirSampleBL;
double iirSampleAR;
double iirSampleBR;
-
+ bool fpFlip;
float A;
float B;
float C;
diff --git a/plugins/MacVST/Drive/source/DriveProc.cpp b/plugins/MacVST/Drive/source/DriveProc.cpp
index 3670e85..074ccfd 100755
--- a/plugins/MacVST/Drive/source/DriveProc.cpp
+++ b/plugins/MacVST/Drive/source/DriveProc.cpp
@@ -26,9 +26,6 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double glitch = 0.60;
double out;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -95,6 +92,7 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR -= iirSampleBR;
}
//highpass section
+ fpFlip = !fpFlip;
if (inputSampleL > 1.0) inputSampleL = 1.0;
@@ -129,25 +127,14 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -178,9 +165,6 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double glitch = 0.60;
double out;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -247,6 +231,7 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR -= iirSampleBR;
}
//highpass section
+ fpFlip = !fpFlip;
if (inputSampleL > 1.0) inputSampleL = 1.0;
@@ -281,25 +266,16 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser
index 37e894a..085419c 100755
--- a/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.pbxuser
@@ -51,8 +51,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 547825371;
- PBXWorkspaceStateSaveDate = 547825371;
+ PBXPerProjectTemplateStateSaveDate = 569734786;
+ PBXWorkspaceStateSaveDate = 569734786;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -60,17 +60,17 @@
};
2407DEB6089929BA00EB68BF /* DrumSlam.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 2067}}";
- sepNavSelRange = "{4174, 11}";
- sepNavVisRange = "{3277, 2173}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 2132}}";
+ sepNavSelRange = "{852, 0}";
+ sepNavVisRange = "{0, 1541}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* DrumSlam.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 1209}}";
- sepNavSelRange = "{435, 0}";
- sepNavVisRange = "{663, 2389}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 1170}}";
+ sepNavSelRange = "{2870, 0}";
+ sepNavVisRange = "{655, 2346}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
diff --git a/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3
index 48ceca2..d1c4f80 100755
--- a/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/DrumSlam/DrumSlam.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -298,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>7</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -321,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>28 345 810 487 0 0 1440 878 </string>
+ <string>176 340 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -360,7 +362,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>28 345 810 487 0 0 1440 878 </string>
+ <string>176 340 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -439,7 +441,7 @@
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
- <string>28 345 810 487 0 0 1440 878 </string>
+ <string>176 340 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -467,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B7E3F2420A72F9200482CB5</string>
+ <string>8B79390D21F576B0006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B7E3F2520A72F9200482CB5</string>
+ <string>8B79390E21F576B0006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B7E3F2620A72F9200482CB5</string>
+ <string>8B79390F21F576B0006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -644,7 +646,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>547827602.36658394</real>
+ <real>569734832.13053405</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -661,11 +663,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B7E3F2D20A72F9200482CB5</string>
- <string>/Users/christopherjohnson/Desktop/DrumSlam/DrumSlam.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/DrumSlam/DrumSlam.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>28 345 810 487 0 0 1440 878 </string>
+ <string>176 340 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/DrumSlam/source/DrumSlam.cpp b/plugins/MacVST/DrumSlam/source/DrumSlam.cpp
index 8a6ae7b..5b88619 100755
--- a/plugins/MacVST/DrumSlam/source/DrumSlam.cpp
+++ b/plugins/MacVST/DrumSlam/source/DrumSlam.cpp
@@ -35,12 +35,9 @@ DrumSlam::DrumSlam(audioMasterCallback audioMaster) :
iirSampleGR = 0.0;
iirSampleHR = 0.0;
lastSampleR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/DrumSlam/source/DrumSlam.h b/plugins/MacVST/DrumSlam/source/DrumSlam.h
index 5ec2fda..418282d 100755
--- a/plugins/MacVST/DrumSlam/source/DrumSlam.h
+++ b/plugins/MacVST/DrumSlam/source/DrumSlam.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double iirSampleAL;
@@ -80,7 +77,7 @@ private:
double iirSampleGR;
double iirSampleHR;
double lastSampleR;
-
+ bool fpFlip;
float A;
float B;
float C;
diff --git a/plugins/MacVST/DrumSlam/source/DrumSlamProc.cpp b/plugins/MacVST/DrumSlam/source/DrumSlamProc.cpp
index 171b353..2e86142 100755
--- a/plugins/MacVST/DrumSlam/source/DrumSlamProc.cpp
+++ b/plugins/MacVST/DrumSlam/source/DrumSlamProc.cpp
@@ -25,8 +25,6 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample
double out = B;
double wet = C;
double dry = 1.0 - wet;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -125,6 +123,8 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample
highSampleL = inputSampleL - iirSampleHL;
highSampleR = inputSampleR - iirSampleHR;
}
+ fpFlip = !fpFlip;
+
//generate the tone bands we're using
if (lowSampleL > 1.0) {lowSampleL = 1.0;}
if (lowSampleL < -1.0) {lowSampleL = -1.0;}
@@ -219,26 +219,14 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -268,8 +256,6 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double out = B;
double wet = C;
double dry = 1.0 - wet;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -368,6 +354,8 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3
highSampleL = inputSampleL - iirSampleHL;
highSampleR = inputSampleR - iirSampleHR;
}
+ fpFlip = !fpFlip;
+
//generate the tone bands we're using
if (lowSampleL > 1.0) {lowSampleL = 1.0;}
if (lowSampleL < -1.0) {lowSampleL = -1.0;}
@@ -462,26 +450,16 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser
index 1ef293f..540fd54 100755
--- a/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561848737;
- PBXWorkspaceStateSaveDate = 561848737;
- };
- perUserProjectItems = {
- 8B560C61217D21A400D3BC37 /* PBXBookmark */ = 8B560C61217D21A400D3BC37 /* PBXBookmark */;
- 8B560C71217D21F300D3BC37 /* PBXTextBookmark */ = 8B560C71217D21F300D3BC37 /* PBXTextBookmark */;
+ PBXPerProjectTemplateStateSaveDate = 569734854;
+ PBXWorkspaceStateSaveDate = 569734854;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -86,9 +82,9 @@
};
24D8286F09A914000093AEF8 /* DubCenterProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 8359}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 8086}}";
sepNavSelRange = "{6339, 0}";
- sepNavVisRange = "{5917, 3197}";
+ sepNavVisRange = "{5899, 3296}";
sepNavWindowFrame = "{{45, 47}, {895, 831}}";
};
};
@@ -106,20 +102,6 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B560C61217D21A400D3BC37 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 24D8286F09A914000093AEF8 /* DubCenterProc.cpp */;
- };
- 8B560C71217D21F300D3BC37 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 24D8286F09A914000093AEF8 /* DubCenterProc.cpp */;
- name = "DubCenterProc.cpp: 189";
- rLen = 0;
- rLoc = 6339;
- rType = 0;
- vrLen = 3197;
- vrLoc = 5917;
- };
8D01CCC60486CAD60068D4B7 /* DubCenter */ = {
activeExec = 0;
};
diff --git a/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3
index 7593523..1b66276 100755
--- a/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/DubCenter/DubCenter.xcodeproj/christopherjohnson.perspectivev3
@@ -222,48 +222,7 @@
</dict>
</array>
<key>OpenEditors</key>
- <array>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B560C6F217D21F300D3BC37</string>
- <key>PBXProjectModuleLabel</key>
- <string>DubCenterProc.cpp</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B560C70217D21F300D3BC37</string>
- <key>PBXProjectModuleLabel</key>
- <string>DubCenterProc.cpp</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>8B560C71217D21F300D3BC37</string>
- <key>history</key>
- <array>
- <string>8B560C61217D21A400D3BC37</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {895, 734}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>45 103 895 775 0 0 1440 878 </string>
- </dict>
- </dict>
- </array>
+ <array/>
<key>PerspectiveWidths</key>
<array>
<integer>810</integer>
@@ -510,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B560C6C217D21F300D3BC37</string>
+ <string>8B79392221F576D2006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B560C6D217D21F300D3BC37</string>
+ <string>8B79392321F576D2006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B560C6E217D21F300D3BC37</string>
+ <string>8B79392421F576D2006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -667,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561848819.78781903</real>
+ <real>569734870.07559299</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -685,7 +644,6 @@
<key>WindowOrderList</key>
<array>
<string>/Users/christopherjohnson/Desktop/MacVST/DubCenter/DubCenter.xcodeproj</string>
- <string>8B560C6F217D21F300D3BC37</string>
</array>
<key>WindowString</key>
<string>28 291 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/DubCenter/source/DubCenterProc.cpp b/plugins/MacVST/DubCenter/source/DubCenterProc.cpp
index 75c162b..b0c49a3 100755
--- a/plugins/MacVST/DubCenter/source/DubCenterProc.cpp
+++ b/plugins/MacVST/DubCenter/source/DubCenterProc.cpp
@@ -306,18 +306,14 @@ void DubCenter::processReplacing(float **inputs, float **outputs, VstInt32 sampl
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -327,12 +323,6 @@ void DubCenter::processReplacing(float **inputs, float **outputs, VstInt32 sampl
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -633,18 +623,16 @@ void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -654,10 +642,4 @@ void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser
index d93b3f3..759f11f 100755
--- a/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 560565932;
- PBXWorkspaceStateSaveDate = 560565932;
+ PBXPerProjectTemplateStateSaveDate = 569734904;
+ PBXWorkspaceStateSaveDate = 569734904;
};
perUserProjectItems = {
- 8B42FC0221604E960092969A /* PBXTextBookmark */ = 8B42FC0221604E960092969A /* PBXTextBookmark */;
- 8B42FC0321604E960092969A /* PBXTextBookmark */ = 8B42FC0321604E960092969A /* PBXTextBookmark */;
- 8B42FE27216978EE0092969A /* PBXTextBookmark */ = 8B42FE27216978EE0092969A /* PBXTextBookmark */;
- 8B42FE6F216992760092969A /* PBXTextBookmark */ = 8B42FE6F216992760092969A /* PBXTextBookmark */;
+ 8B15DBE121788E19007AD769 /* PBXTextBookmark */ = 8B15DBE121788E19007AD769 /* PBXTextBookmark */;
+ 8B15DC4F21789111007AD769 /* PBXTextBookmark */ = 8B15DC4F21789111007AD769 /* PBXTextBookmark */;
+ 8B15DC6F217891D4007AD769 /* PBXTextBookmark */ = 8B15DC6F217891D4007AD769 /* PBXTextBookmark */;
+ 8B79394121F57705006E9731 /* PBXTextBookmark */ = 8B79394121F57705006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -64,18 +64,18 @@
};
2407DEB6089929BA00EB68BF /* DubSub.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3237}}";
- sepNavSelRange = "{7461, 0}";
- sepNavVisRange = "{6004, 3058}";
- sepNavWindowFrame = "{{4, 38}, {895, 831}}";
+ sepNavIntBoundsRect = "{{0, 0}, {712, 3575}}";
+ sepNavSelRange = "{8745, 0}";
+ sepNavVisRange = "{44, 171}";
+ sepNavWindowFrame = "{{705, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* DubSub.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 2314}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 99}";
- sepNavWindowFrame = "{{20, 47}, {895, 831}}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 2340}}";
+ sepNavSelRange = "{2508, 2128}";
+ sepNavVisRange = "{3746, 901}";
+ sepNavWindowFrame = "{{659, 47}, {895, 831}}";
};
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
@@ -88,10 +88,10 @@
};
24D8286F09A914000093AEF8 /* DubSubProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 10296}}";
- sepNavSelRange = "{30534, 0}";
- sepNavVisRange = "{29455, 2823}";
- sepNavWindowFrame = "{{229, 47}, {895, 831}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 10985}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRange = "{0, 0}";
+ sepNavWindowFrame = "{{563, 47}, {895, 831}}";
};
};
8B02375E1D42B1C400E1E8C8 /* Source Control */ = {
@@ -108,45 +108,45 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B42FC0221604E960092969A /* PBXTextBookmark */ = {
+ 8B15DBE121788E19007AD769 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 2407DEB6089929BA00EB68BF /* DubSub.cpp */;
- name = "DubSub.cpp: 142";
+ fRef = 245463B80991757100464AD3 /* DubSub.h */;
+ name = "DubSub.h: 1";
rLen = 0;
- rLoc = 8745;
+ rLoc = 0;
rType = 0;
- vrLen = 281;
- vrLoc = 1938;
+ vrLen = 66;
+ vrLoc = 0;
};
- 8B42FC0321604E960092969A /* PBXTextBookmark */ = {
+ 8B15DC4F21789111007AD769 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* DubSubProc.cpp */;
name = "DubSubProc.cpp: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 208;
+ vrLen = 0;
vrLoc = 0;
};
- 8B42FE27216978EE0092969A /* PBXTextBookmark */ = {
+ 8B15DC6F217891D4007AD769 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 245463B80991757100464AD3 /* DubSub.h */;
- name = "DubSub.h: 1";
+ fRef = 2407DEB6089929BA00EB68BF /* DubSub.cpp */;
+ name = "DubSub.cpp: 267";
rLen = 0;
- rLoc = 0;
+ rLoc = 8745;
rType = 0;
- vrLen = 208;
- vrLoc = 0;
+ vrLen = 172;
+ vrLoc = 44;
};
- 8B42FE6F216992760092969A /* PBXTextBookmark */ = {
+ 8B79394121F57705006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 245463B80991757100464AD3 /* DubSub.h */;
- name = "DubSub.h: 1";
+ fRef = 2407DEB6089929BA00EB68BF /* DubSub.cpp */;
+ name = "DubSub.cpp: 267";
rLen = 0;
- rLoc = 0;
+ rLoc = 8745;
rType = 0;
- vrLen = 99;
- vrLoc = 0;
+ vrLen = 171;
+ vrLoc = 44;
};
8D01CCC60486CAD60068D4B7 /* DubSub */ = {
activeExec = 0;
diff --git a/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3
index 681760b..f2fabd2 100755
--- a/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/DubSub/DubSub.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>86 201 810 487 0 0 1440 878 </string>
+ <string>613 292 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -339,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>DubSub.h</string>
+ <string>DubSub.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -347,16 +347,16 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>DubSub.h</string>
+ <string>DubSub.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B42FE6F216992760092969A</string>
+ <string>8B79394121F57705006E9731</string>
<key>history</key>
<array>
- <string>8B42FC0221604E960092969A</string>
- <string>8B42FC0321604E960092969A</string>
- <string>8B42FE27216978EE0092969A</string>
+ <string>8B15DBE121788E19007AD769</string>
+ <string>8B15DC4F21789111007AD769</string>
+ <string>8B15DC6F217891D4007AD769</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>86 201 810 487 0 0 1440 878 </string>
+ <string>613 292 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
<key>RubberWindowFrame</key>
- <string>86 201 810 487 0 0 1440 878 </string>
+ <string>613 292 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B42FE70216992760092969A</string>
+ <string>8B79394221F57705006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B42FE71216992760092969A</string>
+ <string>8B79394321F57705006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B42FE72216992760092969A</string>
+ <string>8B79394421F57705006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>560566902.22521102</real>
+ <real>569734917.70818102</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -656,7 +656,7 @@
<string>/Users/christopherjohnson/Desktop/MacVST/DubSub/DubSub.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>86 201 810 487 0 0 1440 878 </string>
+ <string>613 292 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/DubSub/source/DubSubProc.cpp b/plugins/MacVST/DubSub/source/DubSubProc.cpp
index 037480c..7a0349d 100755
--- a/plugins/MacVST/DubSub/source/DubSubProc.cpp
+++ b/plugins/MacVST/DubSub/source/DubSubProc.cpp
@@ -392,18 +392,14 @@ void DubSub::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -413,12 +409,6 @@ void DubSub::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -805,18 +795,16 @@ void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -826,10 +814,4 @@ void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser
index 0ecdf87..d0f3d39 100755
--- a/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.pbxuser
@@ -51,11 +51,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460275;
- PBXWorkspaceStateSaveDate = 528460275;
+ PBXPerProjectTemplateStateSaveDate = 569734942;
+ PBXWorkspaceStateSaveDate = 569734942;
};
perUserProjectItems = {
- 8B9D6BC21F7EE4EE007AB60F /* PBXTextBookmark */ = 8B9D6BC21F7EE4EE007AB60F /* PBXTextBookmark */;
+ 8B79396121F5772F006E9731 /* PBXTextBookmark */ = 8B79396121F5772F006E9731 /* PBXTextBookmark */;
8B9D79DA1F7FAA9D007AB60F /* PBXTextBookmark */ = 8B9D79DA1F7FAA9D007AB60F /* PBXTextBookmark */;
8BCF31DB1F4E436800632CB6 /* PBXTextBookmark */ = 8BCF31DB1F4E436800632CB6 /* PBXTextBookmark */;
};
@@ -65,9 +65,9 @@
};
2407DEB6089929BA00EB68BF /* DustBunny.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {656, 1612}}";
+ sepNavIntBoundsRect = "{{0, 0}, {656, 1638}}";
sepNavSelRange = "{1342, 0}";
- sepNavVisRange = "{1146, 454}";
+ sepNavVisRange = "{1232, 294}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
@@ -109,15 +109,15 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6BC21F7EE4EE007AB60F /* PBXTextBookmark */ = {
+ 8B79396121F5772F006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* DustBunny.cpp */;
name = "DustBunny.cpp: 30";
rLen = 0;
rLoc = 1342;
rType = 0;
- vrLen = 454;
- vrLoc = 1146;
+ vrLen = 294;
+ vrLoc = 1232;
};
8B9D79DA1F7FAA9D007AB60F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3
index e122df8..8d8c720 100755
--- a/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/DustBunny/DustBunny.xcodeproj/christopherjohnson.perspectivev3
@@ -351,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D79DA1F7FAA9D007AB60F</string>
+ <string>8B79396121F5772F006E9731</string>
<key>history</key>
<array>
<string>8BCF31DB1F4E436800632CB6</string>
- <string>8B9D6BC21F7EE4EE007AB60F</string>
+ <string>8B9D79DA1F7FAA9D007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 102}}</string>
+ <string>{{0, 0}, {603, 86}}</string>
<key>RubberWindowFrame</key>
<string>354 325 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>102pt</string>
+ <string>86pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>355pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,7 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 312}}</string>
+ <string>{{10, 27}, {603, 328}}</string>
<key>RubberWindowFrame</key>
<string>354 325 810 487 0 0 1440 878 </string>
</dict>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D79DB1F7FAA9D007AB60F</string>
+ <string>8B79396221F5772F006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D79DC1F7FAA9D007AB60F</string>
+ <string>8B79396321F5772F006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D79DD1F7FAA9D007AB60F</string>
+ <string>8B79396421F5772F006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -655,7 +655,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460445.29056901</real>
+ <real>569734959.42124605</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -672,7 +672,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D79DE1F7FAA9D007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/DustBunny/DustBunny.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.pbxuser
index a376012..b00c262 100755
--- a/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541887553;
- PBXWorkspaceStateSaveDate = 541887553;
+ PBXPerProjectTemplateStateSaveDate = 569735191;
+ PBXWorkspaceStateSaveDate = 569735191;
};
perUserProjectItems = {
- 8B181AF7204C941100516BEE /* XCBuildMessageTextBookmark */ = 8B181AF7204C941100516BEE /* XCBuildMessageTextBookmark */;
8B181AF8204C941100516BEE /* PBXTextBookmark */ = 8B181AF8204C941100516BEE /* PBXTextBookmark */;
+ 8B793A0321F57823006E9731 /* PBXTextBookmark */ = 8B793A0321F57823006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -78,9 +78,9 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}";
+ sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}";
sepNavSelRange = "{10616, 0}";
- sepNavVisRange = "{10459, 399}";
+ sepNavVisRange = "{10459, 280}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
@@ -106,23 +106,24 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B181AF7204C941100516BEE /* XCBuildMessageTextBookmark */ = {
+ 8B181AF8204C941100516BEE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- comments = "Deprecated conversion from string constant to 'char*'";
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
- fallbackIsa = XCBuildMessageTextBookmark;
- rLen = 1;
- rLoc = 306;
- rType = 1;
+ name = "audioeffectx.cpp: 307";
+ rLen = 0;
+ rLoc = 10616;
+ rType = 0;
+ vrLen = 399;
+ vrLoc = 10459;
};
- 8B181AF8204C941100516BEE /* PBXTextBookmark */ = {
+ 8B793A0321F57823006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
rLen = 0;
rLoc = 10616;
rType = 0;
- vrLen = 399;
+ vrLen = 280;
vrLoc = 10459;
};
8D01CCC60486CAD60068D4B7 /* EQ */ = {
diff --git a/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3
index b6f9507..708c37d 100755
--- a/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/EQ/EQ.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -349,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B181AF8204C941100516BEE</string>
+ <string>8B793A0321F57823006E9731</string>
<key>history</key>
<array>
- <string>8B181AF7204C941100516BEE</string>
+ <string>8B181AF8204C941100516BEE</string>
</array>
</dict>
<key>SplitCount</key>
@@ -366,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
<string>15 373 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -391,7 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>15 373 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -446,8 +450,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>15 373 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -475,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B181AAB204C8C4800516BEE</string>
+ <string>8B793A0421F57823006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B181AAC204C8C4800516BEE</string>
+ <string>8B793A0521F57823006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B181AAD204C8C4800516BEE</string>
+ <string>8B793A0621F57823006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -632,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541889553.15927601</real>
+ <real>569735203.85904706</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -649,8 +651,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B181AF9204C941100516BEE</string>
- <string>/Users/christopherjohnson/Desktop/EQ/EQ.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/EQ/EQ.xcodeproj</string>
</array>
<key>WindowString</key>
<string>15 373 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/EQ/source/EQ.cpp b/plugins/MacVST/EQ/source/EQ.cpp
index ebdadaa..f2e4e01 100755
--- a/plugins/MacVST/EQ/source/EQ.cpp
+++ b/plugins/MacVST/EQ/source/EQ.cpp
@@ -111,11 +111,8 @@ EQ::EQ(audioMasterCallback audioMaster) :
flip = false;
flipthree = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/EQ/source/EQ.h b/plugins/MacVST/EQ/source/EQ.h
index 4317a2d..26fade4 100755
--- a/plugins/MacVST/EQ/source/EQ.h
+++ b/plugins/MacVST/EQ/source/EQ.h
@@ -59,11 +59,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/MacVST/EQ/source/EQProc.cpp b/plugins/MacVST/EQ/source/EQProc.cpp
index 6d994a9..917dc7e 100755
--- a/plugins/MacVST/EQ/source/EQProc.cpp
+++ b/plugins/MacVST/EQ/source/EQProc.cpp
@@ -20,9 +20,6 @@ void EQ::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames
overallscale = getSampleRate();
compscale = compscale * overallscale;
//compscale is the one that's 1 or something like 2.2 for 96K rates
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -434,25 +431,14 @@ void EQ::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames
inputSampleR *= outputgain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -477,9 +463,6 @@ void EQ::processDoubleReplacing(double **inputs, double **outputs, VstInt32 samp
overallscale = getSampleRate();
compscale = compscale * overallscale;
//compscale is the one that's 1 or something like 2.2 for 96K rates
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -891,25 +874,16 @@ void EQ::processDoubleReplacing(double **inputs, double **outputs, VstInt32 samp
inputSampleR *= outputgain;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser
index 594376e..83c37d0 100755
--- a/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460458;
- PBXWorkspaceStateSaveDate = 528460458;
+ PBXPerProjectTemplateStateSaveDate = 569735013;
+ PBXWorkspaceStateSaveDate = 569735013;
};
perUserProjectItems = {
- 8B9D6BE11F7EE521007AB60F /* PBXTextBookmark */ = 8B9D6BE11F7EE521007AB60F /* PBXTextBookmark */;
+ 8B79398121F57771006E9731 /* PBXTextBookmark */ = 8B79398121F57771006E9731 /* PBXTextBookmark */;
8B9D79F01F7FAAB9007AB60F /* PBXTextBookmark */ = 8B9D79F01F7FAAB9007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -106,7 +106,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6BE11F7EE521007AB60F /* PBXTextBookmark */ = {
+ 8B79398121F57771006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
diff --git a/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3
index cf4c5fa..0d8290a 100755
--- a/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/EdIsDim/EdIsDim.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>108 310 810 487 0 0 1440 878 </string>
+ <string>267 298 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D79F01F7FAAB9007AB60F</string>
+ <string>8B79398121F57771006E9731</string>
<key>history</key>
<array>
- <string>8B9D6BE11F7EE521007AB60F</string>
+ <string>8B9D79F01F7FAAB9007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,7 +370,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>108 310 810 487 0 0 1440 878 </string>
+ <string>267 298 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -395,7 +395,7 @@
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
- <string>108 310 810 487 0 0 1440 878 </string>
+ <string>267 298 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D79F11F7FAAB9007AB60F</string>
+ <string>8B79398221F57771006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D79F21F7FAAB9007AB60F</string>
+ <string>8B79398321F57771006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D79F31F7FAAB9007AB60F</string>
+ <string>8B79398421F57771006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460473.03459197</real>
+ <real>569735025.80681503</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,11 +651,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D79F41F7FAAB9007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/EdIsDim/EdIsDim.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>108 310 810 487 0 0 1440 878 </string>
+ <string>267 298 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/EdIsDim/source/EdIsDim.cpp b/plugins/MacVST/EdIsDim/source/EdIsDim.cpp
index 6af5dd4..eb6abd3 100755
--- a/plugins/MacVST/EdIsDim/source/EdIsDim.cpp
+++ b/plugins/MacVST/EdIsDim/source/EdIsDim.cpp
@@ -13,11 +13,8 @@ EdIsDim::EdIsDim(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/EdIsDim/source/EdIsDim.h b/plugins/MacVST/EdIsDim/source/EdIsDim.h
index 8c51883..4f62705 100755
--- a/plugins/MacVST/EdIsDim/source/EdIsDim.h
+++ b/plugins/MacVST/EdIsDim/source/EdIsDim.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/EdIsDim/source/EdIsDimProc.cpp b/plugins/MacVST/EdIsDim/source/EdIsDimProc.cpp
index 8ee927d..0d033eb 100755
--- a/plugins/MacVST/EdIsDim/source/EdIsDimProc.cpp
+++ b/plugins/MacVST/EdIsDim/source/EdIsDimProc.cpp
@@ -14,9 +14,6 @@ void EdIsDim::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -75,25 +72,14 @@ void EdIsDim::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
mid = (inputSampleL+inputSampleR)/2.0;
side = (inputSampleL-inputSampleR)/2.0;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = mid;
*out2 = side;
@@ -112,9 +98,6 @@ void EdIsDim::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -174,25 +157,16 @@ void EdIsDim::processDoubleReplacing(double **inputs, double **outputs, VstInt32
mid = (inputSampleL+inputSampleR)/2.0;
side = (inputSampleL-inputSampleR)/2.0;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = mid;
*out2 = side;
diff --git a/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser
index 002e6ef..bf3d2b1 100755
--- a/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.pbxuser
@@ -49,15 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541289959;
- PBXWorkspaceStateSaveDate = 541289959;
+ PBXPerProjectTemplateStateSaveDate = 569735050;
+ PBXWorkspaceStateSaveDate = 569735050;
};
perUserProjectItems = {
+ 8B7939A121F57797006E9731 /* PBXTextBookmark */ = 8B7939A121F57797006E9731 /* PBXTextBookmark */;
8BC009F720436BB500304BC7 /* PBXTextBookmark */ = 8BC009F720436BB500304BC7 /* PBXTextBookmark */;
- 8BC009F920436BB500304BC7 /* PBXTextBookmark */ = 8BC009F920436BB500304BC7 /* PBXTextBookmark */;
- 8BC00A0C20436DEA00304BC7 /* PBXBookmark */ = 8BC00A0C20436DEA00304BC7 /* PBXBookmark */;
8BC00A1E20436E0500304BC7 /* PBXTextBookmark */ = 8BC00A1E20436E0500304BC7 /* PBXTextBookmark */;
- 8BC00A1F20436E0500304BC7 /* PBXTextBookmark */ = 8BC00A1F20436E0500304BC7 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -89,9 +87,9 @@
};
24D8286F09A914000093AEF8 /* ElectroHatProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 3952}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 3705}}";
sepNavSelRange = "{5210, 0}";
- sepNavVisRange = "{5074, 138}";
+ sepNavVisRange = "{5118, 103}";
sepNavWindowFrame = "{{57, 47}, {895, 831}}";
};
};
@@ -109,6 +107,16 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
+ 8B7939A121F57797006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* ElectroHatProc.cpp */;
+ name = "ElectroHatProc.cpp: 182";
+ rLen = 0;
+ rLoc = 5210;
+ rType = 0;
+ vrLen = 103;
+ vrLoc = 5118;
+ };
8BC009F720436BB500304BC7 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* ElectroHat.cpp */;
@@ -119,20 +127,6 @@
vrLen = 124;
vrLoc = 508;
};
- 8BC009F920436BB500304BC7 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 24D8286F09A914000093AEF8 /* ElectroHatProc.cpp */;
- name = "ElectroHatProc.cpp: 183";
- rLen = 0;
- rLoc = 5210;
- rType = 0;
- vrLen = 158;
- vrLoc = 5057;
- };
- 8BC00A0C20436DEA00304BC7 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 24D8286F09A914000093AEF8 /* ElectroHatProc.cpp */;
- };
8BC00A1E20436E0500304BC7 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ElectroHatProc.cpp */;
@@ -143,16 +137,6 @@
vrLen = 138;
vrLoc = 5074;
};
- 8BC00A1F20436E0500304BC7 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 24D8286F09A914000093AEF8 /* ElectroHatProc.cpp */;
- name = "ElectroHatProc.cpp: 111";
- rLen = 0;
- rLoc = 3370;
- rType = 0;
- vrLen = 1769;
- vrLoc = 2424;
- };
8D01CCC60486CAD60068D4B7 /* ElectroHat */ = {
activeExec = 0;
};
diff --git a/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3
index fa3c51a..c845be7 100755
--- a/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/ElectroHat/ElectroHat.xcodeproj/christopherjohnson.perspectivev3
@@ -222,48 +222,7 @@
</dict>
</array>
<key>OpenEditors</key>
- <array>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8BC00A1120436E0500304BC7</string>
- <key>PBXProjectModuleLabel</key>
- <string>ElectroHatProc.cpp</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8BC00A1220436E0500304BC7</string>
- <key>PBXProjectModuleLabel</key>
- <string>ElectroHatProc.cpp</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>8BC00A1F20436E0500304BC7</string>
- <key>history</key>
- <array>
- <string>8BC00A0C20436DEA00304BC7</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {895, 734}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>57 103 895 775 0 0 1440 878 </string>
- </dict>
- </dict>
- </array>
+ <array/>
<key>PerspectiveWidths</key>
<array>
<integer>810</integer>
@@ -392,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BC00A1E20436E0500304BC7</string>
+ <string>8B7939A121F57797006E9731</string>
<key>history</key>
<array>
<string>8BC009F720436BB500304BC7</string>
- <string>8BC009F920436BB500304BC7</string>
+ <string>8BC00A1E20436E0500304BC7</string>
</array>
</dict>
<key>SplitCount</key>
@@ -410,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 102}}</string>
+ <string>{{0, 0}, {603, 86}}</string>
<key>RubberWindowFrame</key>
<string>35 342 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>102pt</string>
+ <string>86pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>355pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -435,7 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 312}}</string>
+ <string>{{10, 27}, {603, 328}}</string>
<key>RubberWindowFrame</key>
<string>35 342 810 487 0 0 1440 878 </string>
</dict>
@@ -519,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC00A0E20436E0500304BC7</string>
+ <string>8B7939A221F57797006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC00A0F20436E0500304BC7</string>
+ <string>8B7939A321F57797006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BC00A1020436E0500304BC7</string>
+ <string>8B7939A421F57797006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -676,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541289989.72780704</real>
+ <real>569735063.85601294</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -694,7 +653,6 @@
<key>WindowOrderList</key>
<array>
<string>/Users/christopherjohnson/Desktop/MacVST/ElectroHat/ElectroHat.xcodeproj</string>
- <string>8BC00A1120436E0500304BC7</string>
</array>
<key>WindowString</key>
<string>35 342 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/ElectroHat/source/ElectroHat.cpp b/plugins/MacVST/ElectroHat/source/ElectroHat.cpp
index 33d1058..6be41e4 100755
--- a/plugins/MacVST/ElectroHat/source/ElectroHat.cpp
+++ b/plugins/MacVST/ElectroHat/source/ElectroHat.cpp
@@ -25,11 +25,8 @@ ElectroHat::ElectroHat(audioMasterCallback audioMaster) :
lok = 0;
flip = true;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/ElectroHat/source/ElectroHat.h b/plugins/MacVST/ElectroHat/source/ElectroHat.h
index e8aa325..85315cd 100755
--- a/plugins/MacVST/ElectroHat/source/ElectroHat.h
+++ b/plugins/MacVST/ElectroHat/source/ElectroHat.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double storedSampleL;
diff --git a/plugins/MacVST/ElectroHat/source/ElectroHatProc.cpp b/plugins/MacVST/ElectroHat/source/ElectroHatProc.cpp
index 69b1a00..ee5a307 100755
--- a/plugins/MacVST/ElectroHat/source/ElectroHatProc.cpp
+++ b/plugins/MacVST/ElectroHat/source/ElectroHatProc.cpp
@@ -20,9 +20,6 @@ void ElectroHat::processReplacing(float **inputs, float **outputs, VstInt32 samp
bool highSample = false;
if (getSampleRate() > 64000) highSample = true;
//we will go to another dither for 88 and 96K
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -126,25 +123,14 @@ void ElectroHat::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -169,9 +155,6 @@ void ElectroHat::processDoubleReplacing(double **inputs, double **outputs, VstIn
bool highSample = false;
if (getSampleRate() > 64000) highSample = true;
//we will go to another dither for 88 and 96K
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -275,25 +258,16 @@ void ElectroHat::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.pbxuser
index 04d99ae..92d94ca 100755
--- a/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* Energy */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
breakpoints = (
);
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
@@ -51,12 +51,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 547867604;
- PBXWorkspaceStateSaveDate = 547867604;
- };
- perUserProjectItems = {
- 8B7E3F4220A7CBD700482CB5 /* PBXBookmark */ = 8B7E3F4220A7CBD700482CB5 /* PBXBookmark */;
- 8B7E3F5620A7CBF900482CB5 /* PBXTextBookmark */ = 8B7E3F5620A7CBF900482CB5 /* PBXTextBookmark */;
+ PBXPerProjectTemplateStateSaveDate = 569735086;
+ PBXWorkspaceStateSaveDate = 569735086;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -64,7 +60,7 @@
};
2407DEB6089929BA00EB68BF /* Energy.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3328}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 3289}}";
sepNavSelRange = "{6741, 0}";
sepNavVisRange = "{6042, 2997}";
sepNavWindowFrame = "{{31, 47}, {895, 831}}";
@@ -108,21 +104,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B7E3F4220A7CBD700482CB5 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 2407DEB6089929BA00EB68BF /* Energy.cpp */;
- };
- 8B7E3F5620A7CBF900482CB5 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2407DEB6089929BA00EB68BF /* Energy.cpp */;
- name = "Energy.cpp: 272";
- rLen = 0;
- rLoc = 6741;
- rType = 0;
- vrLen = 2997;
- vrLoc = 6042;
- };
- 8D01CCC60486CAD60068D4B7 /* Energy */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3
index 7ec6aec..90db29b 100755
--- a/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Energy/Energy.xcodeproj/christopherjohnson.perspectivev3
@@ -222,48 +222,7 @@
</dict>
</array>
<key>OpenEditors</key>
- <array>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B7E3F5420A7CBF900482CB5</string>
- <key>PBXProjectModuleLabel</key>
- <string>Energy.cpp</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B7E3F5520A7CBF900482CB5</string>
- <key>PBXProjectModuleLabel</key>
- <string>Energy.cpp</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>8B7E3F5620A7CBF900482CB5</string>
- <key>history</key>
- <array>
- <string>8B7E3F4220A7CBD700482CB5</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {895, 734}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>31 103 895 775 0 0 1440 878 </string>
- </dict>
- </dict>
- </array>
+ <array/>
<key>PerspectiveWidths</key>
<array>
<integer>810</integer>
@@ -364,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>4 348 810 487 0 0 1440 878 </string>
+ <string>218 341 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -403,7 +362,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>4 348 810 487 0 0 1440 878 </string>
+ <string>218 341 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -428,7 +387,7 @@
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
- <string>4 348 810 487 0 0 1440 878 </string>
+ <string>218 341 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -510,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B7E3F5120A7CBF900482CB5</string>
+ <string>8B7939C121F577BA006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B7E3F5220A7CBF900482CB5</string>
+ <string>8B7939C221F577BA006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B7E3F5320A7CBF900482CB5</string>
+ <string>8B7939C321F577BA006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -687,7 +646,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>547867641.91280901</real>
+ <real>569735098.81678498</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -705,10 +664,9 @@
<key>WindowOrderList</key>
<array>
<string>/Users/christopherjohnson/Desktop/MacVST/Energy/Energy.xcodeproj</string>
- <string>8B7E3F5420A7CBF900482CB5</string>
</array>
<key>WindowString</key>
- <string>4 348 810 487 0 0 1440 878 </string>
+ <string>218 341 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Energy/Energy.xcodeproj/project.pbxproj b/plugins/MacVST/Energy/Energy.xcodeproj/project.pbxproj
index 38f994d..d701601 100755
--- a/plugins/MacVST/Energy/Energy.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/Energy/Energy.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* Energy */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Energy" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* Energy */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/Energy/source/EnergyProc.cpp b/plugins/MacVST/Energy/source/EnergyProc.cpp
index a72b868..a0a86f8 100755
--- a/plugins/MacVST/Energy/source/EnergyProc.cpp
+++ b/plugins/MacVST/Energy/source/EnergyProc.cpp
@@ -742,18 +742,14 @@ void Energy::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
//we don't need a drySample because we never touched inputSample
//so, this provides the inv/dry/wet control all by itself
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -763,12 +759,6 @@ void Energy::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -1506,18 +1496,16 @@ void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//we don't need a drySample because we never touched inputSample
//so, this provides the inv/dry/wet control all by itself
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -1527,10 +1515,4 @@ void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser
index 599610a..2c3d879 100755
--- a/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.pbxuser
@@ -51,12 +51,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 529847444;
- PBXWorkspaceStateSaveDate = 529847444;
+ PBXPerProjectTemplateStateSaveDate = 569735122;
+ PBXWorkspaceStateSaveDate = 569735122;
};
perUserProjectItems = {
- 8B4C965F1F94E0F300064452 /* XCBuildMessageTextBookmark */ = 8B4C965F1F94E0F300064452 /* XCBuildMessageTextBookmark */;
- 8B4C96601F94E0F300064452 /* PBXTextBookmark */ = 8B4C96601F94E0F300064452 /* PBXTextBookmark */;
+ 8B7939DE21F577D7006E9731 /* PBXTextBookmark */ = 8B7939DE21F577D7006E9731 /* PBXTextBookmark */;
+ 8B7939ED21F57803006E9731 /* PBXTextBookmark */ = 8B7939ED21F57803006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -64,17 +64,17 @@
};
2407DEB6089929BA00EB68BF /* Ensemble.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {628, 2171}}";
+ sepNavIntBoundsRect = "{{0, 0}, {628, 2067}}";
sepNavSelRange = "{656, 0}";
- sepNavVisRange = "{485, 184}";
+ sepNavVisRange = "{570, 99}";
sepNavWindowFrame = "{{46, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Ensemble.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 1118}}";
- sepNavSelRange = "{2554, 0}";
- sepNavVisRange = "{624, 2262}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 1079}}";
+ sepNavSelRange = "{2770, 0}";
+ sepNavVisRange = "{538, 2294}";
sepNavWindowFrame = "{{505, 39}, {895, 831}}";
};
};
@@ -108,24 +108,25 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B4C965F1F94E0F300064452 /* XCBuildMessageTextBookmark */ = {
+ 8B7939DE21F577D7006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- comments = "Incompatible types in assignment of 'double' to 'double [49]'";
fRef = 2407DEB6089929BA00EB68BF /* Ensemble.cpp */;
- fallbackIsa = XCBuildMessageTextBookmark;
- rLen = 1;
- rLoc = 21;
- rType = 1;
+ name = "Ensemble.cpp: 22";
+ rLen = 0;
+ rLoc = 656;
+ rType = 0;
+ vrLen = 99;
+ vrLoc = 570;
};
- 8B4C96601F94E0F300064452 /* PBXTextBookmark */ = {
+ 8B7939ED21F57803006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* Ensemble.cpp */;
name = "Ensemble.cpp: 22";
rLen = 0;
rLoc = 656;
rType = 0;
- vrLen = 184;
- vrLoc = 485;
+ vrLen = 99;
+ vrLoc = 570;
};
8D01CCC60486CAD60068D4B7 /* Ensemble */ = {
activeExec = 0;
diff --git a/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3
index 6da0cef..3188f6d 100755
--- a/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Ensemble/Ensemble.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -298,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>7</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -321,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>13 367 810 487 0 0 1440 878 </string>
+ <string>348 289 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -349,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4C96601F94E0F300064452</string>
+ <string>8B7939ED21F57803006E9731</string>
<key>history</key>
<array>
- <string>8B4C965F1F94E0F300064452</string>
+ <string>8B7939DE21F577D7006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -366,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {603, 51}}</string>
<key>RubberWindowFrame</key>
- <string>13 367 810 487 0 0 1440 878 </string>
+ <string>348 289 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>390pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -391,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 363}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -445,9 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 363}}</string>
<key>RubberWindowFrame</key>
- <string>13 367 810 487 0 0 1440 878 </string>
+ <string>348 289 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -475,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4C96611F94E0F300064452</string>
+ <string>8B7939EE21F57803006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4C96621F94E0F300064452</string>
+ <string>8B7939EF21F57803006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B4C96631F94E0F300064452</string>
+ <string>8B7939F021F57803006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -652,7 +654,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>529850611.29679602</real>
+ <real>569735171.20292497</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -669,11 +671,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B4C96641F94E0F300064452</string>
- <string>/Users/christopherjohnson/Desktop/Ensemble/Ensemble.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/Ensemble/Ensemble.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>13 367 810 487 0 0 1440 878 </string>
+ <string>348 289 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Ensemble/source/Ensemble.cpp b/plugins/MacVST/Ensemble/source/Ensemble.cpp
index be624b2..b90bf6e 100755
--- a/plugins/MacVST/Ensemble/source/Ensemble.cpp
+++ b/plugins/MacVST/Ensemble/source/Ensemble.cpp
@@ -28,12 +28,9 @@ Ensemble::Ensemble(audioMasterCallback audioMaster) :
airEvenR = 0.0;
airOddR = 0.0;
airFactorR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Ensemble/source/Ensemble.h b/plugins/MacVST/Ensemble/source/Ensemble.h
index 32ba8c0..7697d93 100755
--- a/plugins/MacVST/Ensemble/source/Ensemble.h
+++ b/plugins/MacVST/Ensemble/source/Ensemble.h
@@ -55,11 +55,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
const static int totalsamples = 65540;
float dL[totalsamples];
@@ -74,7 +71,7 @@ private:
double airEvenR;
double airOddR;
double airFactorR;
-
+ bool fpFlip;
float A;
float B;
float C;
diff --git a/plugins/MacVST/Ensemble/source/EnsembleProc.cpp b/plugins/MacVST/Ensemble/source/EnsembleProc.cpp
index 679e868..e9a3a43 100755
--- a/plugins/MacVST/Ensemble/source/EnsembleProc.cpp
+++ b/plugins/MacVST/Ensemble/source/EnsembleProc.cpp
@@ -37,9 +37,6 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample
double tempL;
double tempR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -117,7 +114,8 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample
airPrevR = inputSampleR;
inputSampleR += (airFactorR*brighten);
//air, compensates for loss of highs in flanger's interpolation
-
+ fpFlip = !fpFlip;
+
if (gcount < 1 || gcount > 32767) {gcount = 32767;}
count = gcount;
dL[count+32767] = dL[count] = tempL = inputSampleL;
@@ -155,25 +153,14 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -215,9 +202,6 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double tempL;
double tempR;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -295,6 +279,7 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3
airPrevR = inputSampleR;
inputSampleR += (airFactorR*brighten);
//air, compensates for loss of highs in flanger's interpolation
+ fpFlip = !fpFlip;
if (gcount < 1 || gcount > 32767) {gcount = 32767;}
count = gcount;
@@ -333,25 +318,16 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser
index ebc50eb..b623a38 100755
--- a/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* EveryTrim */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 532471894;
- PBXWorkspaceStateSaveDate = 532471894;
+ PBXPerProjectTemplateStateSaveDate = 569735228;
+ PBXWorkspaceStateSaveDate = 569735228;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* EveryTrim */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3
index cc28805..09818e7 100755
--- a/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>653 231 810 487 0 0 1440 878 </string>
+ <string>630 231 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -362,7 +362,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>653 231 810 487 0 0 1440 878 </string>
+ <string>630 231 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -387,7 +387,7 @@
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
- <string>653 231 810 487 0 0 1440 878 </string>
+ <string>630 231 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BB5DD0E1FBCE05D008B4570</string>
+ <string>8B793A2521F57858006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BB5DD0F1FBCE05D008B4570</string>
+ <string>8B793A2621F57858006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BB5DD101FBCE05D008B4570</string>
+ <string>8B793A2721F57858006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>532472312.54818797</real>
+ <real>569735256.70818996</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,11 +643,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BB5DD481FBCE1F8008B4570</string>
<string>/Users/christopherjohnson/Desktop/MacVST/EveryTrim/EveryTrim.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>653 231 810 487 0 0 1440 878 </string>
+ <string>630 231 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/project.pbxproj b/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/project.pbxproj
index d45d548..e1a1fd8 100755
--- a/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/EveryTrim/EveryTrim.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* EveryTrim */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "EveryTrim" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* EveryTrim */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/EveryTrim/source/EveryTrim.cpp b/plugins/MacVST/EveryTrim/source/EveryTrim.cpp
index 1e81d35..b0a98d4 100755
--- a/plugins/MacVST/EveryTrim/source/EveryTrim.cpp
+++ b/plugins/MacVST/EveryTrim/source/EveryTrim.cpp
@@ -17,11 +17,8 @@ EveryTrim::EveryTrim(audioMasterCallback audioMaster) :
C = 0.5;
D = 0.5;
E = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/EveryTrim/source/EveryTrim.h b/plugins/MacVST/EveryTrim/source/EveryTrim.h
index 28d9c27..4efc3cd 100755
--- a/plugins/MacVST/EveryTrim/source/EveryTrim.h
+++ b/plugins/MacVST/EveryTrim/source/EveryTrim.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/EveryTrim/source/EveryTrimProc.cpp b/plugins/MacVST/EveryTrim/source/EveryTrimProc.cpp
index 30d764f..3c30eda 100755
--- a/plugins/MacVST/EveryTrim/source/EveryTrimProc.cpp
+++ b/plugins/MacVST/EveryTrim/source/EveryTrimProc.cpp
@@ -14,9 +14,6 @@ void EveryTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double leftgain = pow(10.0,((A*24.0)-12.0)/20.0);
double rightgain = pow(10.0,((B*24.0)-12.0)/20.0);
@@ -83,25 +80,14 @@ void EveryTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -120,9 +106,6 @@ void EveryTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double leftgain = pow(10.0,((A*24.0)-12.0)/20.0);
double rightgain = pow(10.0,((B*24.0)-12.0)/20.0);
@@ -189,25 +172,16 @@ void EveryTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser
index 8762267..ce01624 100755
--- a/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460484;
- PBXWorkspaceStateSaveDate = 528460484;
+ PBXPerProjectTemplateStateSaveDate = 569735282;
+ PBXWorkspaceStateSaveDate = 569735282;
};
perUserProjectItems = {
8B21780D1D7BA3A500797BDD /* PBXTextBookmark */ = 8B21780D1D7BA3A500797BDD /* PBXTextBookmark */;
8B4E72C81D7B161E00EE9940 /* PBXTextBookmark */ = 8B4E72C81D7B161E00EE9940 /* PBXTextBookmark */;
- 8B9D6C161F7EE565007AB60F /* PBXTextBookmark */ = 8B9D6C161F7EE565007AB60F /* PBXTextBookmark */;
+ 8B793A4421F57884006E9731 /* PBXTextBookmark */ = 8B793A4421F57884006E9731 /* PBXTextBookmark */;
8B9D7A101F7FAAD9007AB60F /* PBXTextBookmark */ = 8B9D7A101F7FAAD9007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -72,9 +72,9 @@
};
245463B80991757100464AD3 /* FathomFive.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {600, 1131}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 1079}}";
sepNavSelRange = "{491, 0}";
- sepNavVisRange = "{464, 55}";
+ sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{513, 39}, {895, 831}}";
};
};
@@ -144,15 +144,15 @@
vrLen = 0;
vrLoc = 0;
};
- 8B9D6C161F7EE565007AB60F /* PBXTextBookmark */ = {
+ 8B793A4421F57884006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* FathomFive.h */;
name = "FathomFive.h: 26";
rLen = 0;
rLoc = 491;
rType = 0;
- vrLen = 55;
- vrLoc = 464;
+ vrLen = 0;
+ vrLoc = 0;
};
8B9D7A101F7FAAD9007AB60F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3
index 0719e14..eb66b06 100755
--- a/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/FathomFive/FathomFive.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>630 284 810 487 0 0 1440 878 </string>
+ <string>607 307 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,12 +351,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7A101F7FAAD9007AB60F</string>
+ <string>8B793A4421F57884006E9731</string>
<key>history</key>
<array>
<string>8B4E72C81D7B161E00EE9940</string>
<string>8B21780D1D7BA3A500797BDD</string>
- <string>8B9D6C161F7EE565007AB60F</string>
+ <string>8B9D7A101F7FAAD9007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 51}}</string>
+ <string>{{0, 0}, {603, 32}}</string>
<key>RubberWindowFrame</key>
- <string>630 284 810 487 0 0 1440 878 </string>
+ <string>607 307 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>51pt</string>
+ <string>32pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>390pt</string>
+ <string>409pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
+ <string>{{10, 27}, {603, 382}}</string>
<key>RubberWindowFrame</key>
- <string>630 284 810 487 0 0 1440 878 </string>
+ <string>607 307 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7A111F7FAAD9007AB60F</string>
+ <string>8B793A4521F57884006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7A121F7FAAD9007AB60F</string>
+ <string>8B793A4621F57884006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7A131F7FAAD9007AB60F</string>
+ <string>8B793A4721F57884006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460505.71975499</real>
+ <real>569735300.74946201</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +653,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7A141F7FAAD9007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/FathomFive/FathomFive.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>630 284 810 487 0 0 1440 878 </string>
+ <string>607 307 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/FathomFive/source/FathomFive.cpp b/plugins/MacVST/FathomFive/source/FathomFive.cpp
index 8cd3f52..fd04b6d 100755
--- a/plugins/MacVST/FathomFive/source/FathomFive.cpp
+++ b/plugins/MacVST/FathomFive/source/FathomFive.cpp
@@ -100,16 +100,6 @@ void FathomFive::setParameter(VstInt32 index, float value) {
//variables can also be set in the processreplacing loop, and there they'll be set every buffersize
//here they're set when a parameter's actually changed, which should be less frequent, but
//you must use global variables in the FathomFive.h file to do it.
-// switch((VstInt32)( D * 3.999 ))
-// {
-// case 0: fpFlip = true; break; //choice A
-// case 1: fpFlip = false; break; //choice B
-// case 2: break; //choice C
-// case 3: break; //choice D
-// default: break; //should not happen
-// }
- //this relates to using D as a 'popup' and changing things based on that switch.
- //we are using fpFlip just because it's already there globally, as an example.
}
float FathomFive::getParameter(VstInt32 index) {
diff --git a/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.pbxuser
index 612e5ad..80b3123 100755
--- a/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561685582;
- PBXWorkspaceStateSaveDate = 561685582;
+ PBXPerProjectTemplateStateSaveDate = 569735322;
+ PBXWorkspaceStateSaveDate = 569735322;
};
perUserProjectItems = {
8B15DD34217AAF67007AD769 /* PBXTextBookmark */ = 8B15DD34217AAF67007AD769 /* PBXTextBookmark */;
- 8B42FCB721604F9E0092969A /* PBXTextBookmark */ = 8B42FCB721604F9E0092969A /* PBXTextBookmark */;
+ 8B793A6E21F578D2006E9731 /* PBXTextBookmark */ = 8B793A6E21F578D2006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -70,9 +70,9 @@
};
245463B80991757100464AD3 /* Floor.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 1170}}";
+ sepNavIntBoundsRect = "{{0, 0}, {600, 1365}}";
sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{485, 163}";
+ sepNavVisRange = "{485, 155}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
@@ -116,15 +116,15 @@
vrLen = 163;
vrLoc = 485;
};
- 8B42FCB721604F9E0092969A /* PBXTextBookmark */ = {
+ 8B793A6E21F578D2006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* Floor.h */;
name = "Floor.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 217;
- vrLoc = 459;
+ vrLen = 155;
+ vrLoc = 485;
};
8D01CCC60486CAD60068D4B7 /* Floor */ = {
activeExec = 0;
diff --git a/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3
index 853f35f..3af6cc1 100755
--- a/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Floor/Floor.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>21 338 810 487 0 0 1440 878 </string>
+ <string>334 313 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B15DD34217AAF67007AD769</string>
+ <string>8B793A6E21F578D2006E9731</string>
<key>history</key>
<array>
- <string>8B42FCB721604F9E0092969A</string>
+ <string>8B15DD34217AAF67007AD769</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 102}}</string>
<key>RubberWindowFrame</key>
- <string>21 338 810 487 0 0 1440 878 </string>
+ <string>334 313 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>102pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>339pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,9 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 312}}</string>
<key>RubberWindowFrame</key>
- <string>21 338 810 487 0 0 1440 878 </string>
+ <string>334 313 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B15DD35217AAF67007AD769</string>
+ <string>8B793A6F21F578D2006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B15DD36217AAF67007AD769</string>
+ <string>8B793A7021F578D2006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B15DD37217AAF67007AD769</string>
+ <string>8B793A7121F578D2006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561688423.58535099</real>
+ <real>569735378.06358504</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,12 +651,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B15DD38217AAF67007AD769</string>
- <string>8B15DD39217AAF67007AD769</string>
- <string>/Users/christopherjohnson/Desktop/Floor/Floor.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/Floor/Floor.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>21 338 810 487 0 0 1440 878 </string>
+ <string>334 313 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Floor/source/FloorProc.cpp b/plugins/MacVST/Floor/source/FloorProc.cpp
index 69a2ccb..865446b 100755
--- a/plugins/MacVST/Floor/source/FloorProc.cpp
+++ b/plugins/MacVST/Floor/source/FloorProc.cpp
@@ -247,18 +247,14 @@ void Floor::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -268,12 +264,6 @@ void Floor::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -516,18 +506,16 @@ void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -537,10 +525,4 @@ void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser
index 319327c..46f29ff 100755
--- a/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460537;
- PBXWorkspaceStateSaveDate = 528460537;
+ PBXPerProjectTemplateStateSaveDate = 569735404;
+ PBXWorkspaceStateSaveDate = 569735404;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
diff --git a/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3
index 3c29fa7..da6f297 100755
--- a/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Fracture/Fracture.xcodeproj/christopherjohnson.perspectivev3
@@ -339,13 +339,15 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>&lt;No Editor&gt;</string>
+ <string></string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
+ <key>PBXProjectModuleLabel</key>
+ <string></string>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -467,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7A301F7FAB0C007AB60F</string>
+ <string>8B793A8421F578F8006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7A311F7FAB0C007AB60F</string>
+ <string>8B793A8521F578F8006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7A321F7FAB0C007AB60F</string>
+ <string>8B793A8621F578F8006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -624,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460556.044348</real>
+ <real>569735416.520316</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -641,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7A331F7FAB0C007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Fracture/Fracture.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Fracture/source/Fracture.cpp b/plugins/MacVST/Fracture/source/Fracture.cpp
index 255475a..03f3b19 100755
--- a/plugins/MacVST/Fracture/source/Fracture.cpp
+++ b/plugins/MacVST/Fracture/source/Fracture.cpp
@@ -16,11 +16,8 @@ Fracture::Fracture(audioMasterCallback audioMaster) :
B = 0.5; //2 from 1 to 3: (B*2.999)+1
C = 1.0;
D = 1.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Fracture/source/Fracture.h b/plugins/MacVST/Fracture/source/Fracture.h
index 659f94b..49d2718 100755
--- a/plugins/MacVST/Fracture/source/Fracture.h
+++ b/plugins/MacVST/Fracture/source/Fracture.h
@@ -55,11 +55,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Fracture/source/FractureProc.cpp b/plugins/MacVST/Fracture/source/FractureProc.cpp
index 8e217d8..5c1aaa9 100755
--- a/plugins/MacVST/Fracture/source/FractureProc.cpp
+++ b/plugins/MacVST/Fracture/source/FractureProc.cpp
@@ -14,9 +14,6 @@ void Fracture::processReplacing(float **inputs, float **outputs, VstInt32 sample
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double density = A*4;
double fracture = (((B*2.999)+1)*3.14159265358979);
@@ -101,25 +98,14 @@ void Fracture::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (drySampleL * dry)+(inputSampleL * wet);
inputSampleR = (drySampleR * dry)+(inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -141,9 +127,6 @@ void Fracture::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double density = A*4;
double fracture = (((B*2.999)+1)*3.14159265358979);
@@ -228,25 +211,16 @@ void Fracture::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (drySampleL * dry)+(inputSampleL * wet);
inputSampleR = (drySampleR * dry)+(inputSampleR * wet);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser
index c1ba3e0..dc3d1fa 100755
--- a/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* FromTape */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
breakpoints = (
);
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
@@ -51,12 +51,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460565;
- PBXWorkspaceStateSaveDate = 528460565;
- };
- perUserProjectItems = {
- 8B9D6C631F7EE5D4007AB60F /* PBXTextBookmark */ = 8B9D6C631F7EE5D4007AB60F /* PBXTextBookmark */;
- 8B9D7A521F7FAB2D007AB60F /* PBXTextBookmark */ = 8B9D7A521F7FAB2D007AB60F /* PBXTextBookmark */;
+ PBXPerProjectTemplateStateSaveDate = 569735440;
+ PBXWorkspaceStateSaveDate = 569735440;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -72,7 +68,7 @@
};
245463B80991757100464AD3 /* FromTape.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 1807}}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 1768}}";
sepNavSelRange = "{3812, 0}";
sepNavVisRange = "{329, 2291}";
sepNavWindowFrame = "{{545, 47}, {895, 831}}";
@@ -108,27 +104,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6C631F7EE5D4007AB60F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 245463B80991757100464AD3 /* FromTape.h */;
- name = "FromTape.h: 128";
- rLen = 0;
- rLoc = 3812;
- rType = 0;
- vrLen = 2291;
- vrLoc = 329;
- };
- 8B9D7A521F7FAB2D007AB60F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 245463B80991757100464AD3 /* FromTape.h */;
- name = "FromTape.h: 128";
- rLen = 0;
- rLoc = 3812;
- rType = 0;
- vrLen = 2291;
- vrLoc = 329;
- };
- 8D01CCC60486CAD60068D4B7 /* FromTape */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3
index 8d556d7..070d7b1 100755
--- a/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/FromTape/FromTape.xcodeproj/christopherjohnson.perspectivev3
@@ -222,48 +222,7 @@
</dict>
</array>
<key>OpenEditors</key>
- <array>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B2B778A1F6D6FF800A2CD5B</string>
- <key>PBXProjectModuleLabel</key>
- <string>FromTape.h</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B2B778B1F6D6FF800A2CD5B</string>
- <key>PBXProjectModuleLabel</key>
- <string>FromTape.h</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>8B9D7A521F7FAB2D007AB60F</string>
- <key>history</key>
- <array>
- <string>8B9D6C631F7EE5D4007AB60F</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {895, 734}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>545 103 895 775 0 0 1440 878 </string>
- </dict>
- </dict>
- </array>
+ <array/>
<key>PerspectiveWidths</key>
<array>
<integer>810</integer>
@@ -510,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7A4F1F7FAB2D007AB60F</string>
+ <string>8B793AA321F5791C006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7A501F7FAB2D007AB60F</string>
+ <string>8B793AA421F5791C006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7A511F7FAB2D007AB60F</string>
+ <string>8B793AA521F5791C006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -687,7 +646,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460589.56712198</real>
+ <real>569735452.09700799</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -704,7 +663,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7A531F7FAB2D007AB60F</string>
<string>8B2B778A1F6D6FF800A2CD5B</string>
<string>/Users/christopherjohnson/Desktop/MacVST/FromTape/FromTape.xcodeproj</string>
</array>
diff --git a/plugins/MacVST/FromTape/FromTape.xcodeproj/project.pbxproj b/plugins/MacVST/FromTape/FromTape.xcodeproj/project.pbxproj
index 1f0cea0..8175f33 100755
--- a/plugins/MacVST/FromTape/FromTape.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/FromTape/FromTape.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* FromTape */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "FromTape" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* FromTape */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/FromTape/source/FromTape.cpp b/plugins/MacVST/FromTape/source/FromTape.cpp
index 55c5ced..40b7876 100755
--- a/plugins/MacVST/FromTape/source/FromTape.cpp
+++ b/plugins/MacVST/FromTape/source/FromTape.cpp
@@ -82,11 +82,8 @@ FromTape::FromTape(audioMasterCallback audioMaster) :
flip = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/FromTape/source/FromTape.h b/plugins/MacVST/FromTape/source/FromTape.h
index 376b767..40efabc 100755
--- a/plugins/MacVST/FromTape/source/FromTape.h
+++ b/plugins/MacVST/FromTape/source/FromTape.h
@@ -120,11 +120,8 @@ private:
double iirSampleYR;
double iirSampleZR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/FromTape/source/FromTapeProc.cpp b/plugins/MacVST/FromTape/source/FromTapeProc.cpp
index 42753e5..2d268ef 100755
--- a/plugins/MacVST/FromTape/source/FromTapeProc.cpp
+++ b/plugins/MacVST/FromTape/source/FromTapeProc.cpp
@@ -37,9 +37,6 @@ void FromTape::processReplacing(float **inputs, float **outputs, VstInt32 sample
double drySampleR;
double randy;
double invrandy;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -224,25 +221,14 @@ void FromTape::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -284,9 +270,6 @@ void FromTape::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double drySampleR;
double randy;
double invrandy;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -471,25 +454,16 @@ void FromTape::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser
index b9cbf51..bc12e1c 100755
--- a/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 565578826;
- PBXWorkspaceStateSaveDate = 565578826;
+ PBXPerProjectTemplateStateSaveDate = 569735474;
+ PBXWorkspaceStateSaveDate = 569735474;
};
perUserProjectItems = {
8B416DA521B60DFE00DD5013 /* PBXTextBookmark */ = 8B416DA521B60DFE00DD5013 /* PBXTextBookmark */;
- 8BDA3BB721B3655A00CC56FA /* PBXTextBookmark */ = 8BDA3BB721B3655A00CC56FA /* PBXTextBookmark */;
+ 8B793AC221F57942006E9731 /* PBXTextBookmark */ = 8B793AC221F57942006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -78,9 +78,9 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {838, 19838}}";
+ sepNavIntBoundsRect = "{{0, 0}, {747, 19864}}";
sepNavSelRange = "{10616, 0}";
- sepNavVisRange = "{10613, 123}";
+ sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
@@ -116,15 +116,15 @@
vrLen = 123;
vrLoc = 10613;
};
- 8BDA3BB721B3655A00CC56FA /* PBXTextBookmark */ = {
+ 8B793AC221F57942006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
rLen = 0;
rLoc = 10616;
rType = 0;
- vrLen = 123;
- vrLoc = 10613;
+ vrLen = 0;
+ vrLoc = 0;
};
8D01CCC60486CAD60068D4B7 /* Gatelope */ = {
activeExec = 0;
diff --git a/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3
index f01e0a3..f643443 100755
--- a/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Gatelope/Gatelope.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>17 371 810 487 0 0 1440 878 </string>
+ <string>460 296 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B416DA521B60DFE00DD5013</string>
+ <string>8B793AC221F57942006E9731</string>
<key>history</key>
<array>
- <string>8BDA3BB721B3655A00CC56FA</string>
+ <string>8B416DA521B60DFE00DD5013</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 51}}</string>
+ <string>{{0, 0}, {603, 32}}</string>
<key>RubberWindowFrame</key>
- <string>17 371 810 487 0 0 1440 878 </string>
+ <string>460 296 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>51pt</string>
+ <string>32pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>390pt</string>
+ <string>409pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,9 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
+ <string>{{10, 27}, {603, 382}}</string>
<key>RubberWindowFrame</key>
- <string>17 371 810 487 0 0 1440 878 </string>
+ <string>460 296 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B416DA621B60DFE00DD5013</string>
+ <string>8B793AC321F57942006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B416DA721B60DFE00DD5013</string>
+ <string>8B793AC421F57942006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B416DA821B60DFE00DD5013</string>
+ <string>8B793AC521F57942006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>565579262.52925205</real>
+ <real>569735490.74607503</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -654,7 +654,7 @@
<string>/Users/christopherjohnson/Desktop/MacVST/Gatelope/Gatelope.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>17 371 810 487 0 0 1440 878 </string>
+ <string>460 296 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Gatelope/source/GatelopeProc.cpp b/plugins/MacVST/Gatelope/source/GatelopeProc.cpp
index b32bddb..f429042 100755
--- a/plugins/MacVST/Gatelope/source/GatelopeProc.cpp
+++ b/plugins/MacVST/Gatelope/source/GatelopeProc.cpp
@@ -196,18 +196,14 @@ void Gatelope::processReplacing(float **inputs, float **outputs, VstInt32 sample
flip = !flip;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -217,12 +213,6 @@ void Gatelope::processReplacing(float **inputs, float **outputs, VstInt32 sample
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -414,18 +404,16 @@ void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt3
flip = !flip;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -435,10 +423,4 @@ void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt3
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.pbxuser
index 795dec3..92a9864 100755
--- a/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 546574396;
- PBXWorkspaceStateSaveDate = 546574396;
+ PBXPerProjectTemplateStateSaveDate = 569735514;
+ PBXWorkspaceStateSaveDate = 569735514;
};
perUserProjectItems = {
- 8BC5D0B1209410C30058B257 /* PBXTextBookmark */ = 8BC5D0B1209410C30058B257 /* PBXTextBookmark */;
- 8BC5D0B2209410C30058B257 /* PBXTextBookmark */ = 8BC5D0B2209410C30058B257 /* PBXTextBookmark */;
+ 8B793AE021F57961006E9731 /* PBXTextBookmark */ = 8B793AE021F57961006E9731 /* PBXTextBookmark */;
+ 8B793AF221F579C4006E9731 /* PBXTextBookmark */ = 8B793AF221F579C4006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -62,17 +62,17 @@
};
2407DEB6089929BA00EB68BF /* Golem.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1963}}";
- sepNavSelRange = "{3822, 11}";
- sepNavVisRange = "{2936, 2411}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1989}}";
+ sepNavSelRange = "{558, 0}";
+ sepNavVisRange = "{0, 1950}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Golem.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 897}}";
- sepNavSelRange = "{2496, 0}";
- sepNavVisRange = "{2414, 147}";
+ sepNavIntBoundsRect = "{{0, 0}, {817, 923}}";
+ sepNavSelRange = "{2444, 0}";
+ sepNavVisRange = "{2413, 96}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
@@ -86,9 +86,9 @@
};
24D8286F09A914000093AEF8 /* GolemProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3653}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 3354}}";
sepNavSelRange = "{5207, 0}";
- sepNavVisRange = "{4697, 1871}";
+ sepNavVisRange = "{6969, 1540}";
sepNavWindowFrame = "{{54, 47}, {895, 831}}";
};
};
@@ -106,25 +106,25 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BC5D0B1209410C30058B257 /* PBXTextBookmark */ = {
+ 8B793AE021F57961006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* Golem.h */;
name = "Golem.h: 61";
rLen = 0;
- rLoc = 2496;
+ rLoc = 2444;
rType = 0;
- vrLen = 147;
+ vrLen = 133;
vrLoc = 2414;
};
- 8BC5D0B2209410C30058B257 /* PBXTextBookmark */ = {
+ 8B793AF221F579C4006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* Golem.h */;
- name = "Golem.h: 61";
+ name = "Golem.h: 59";
rLen = 0;
- rLoc = 2496;
+ rLoc = 2444;
rType = 0;
- vrLen = 147;
- vrLoc = 2414;
+ vrLen = 96;
+ vrLoc = 2413;
};
8D01CCC60486CAD60068D4B7 /* Golem */ = {
activeExec = 0;
diff --git a/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3
index 62ce38b..0726bc5 100755
--- a/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Golem/Golem.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>23 322 810 487 0 0 1440 878 </string>
+ <string>504 266 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BC5D0B2209410C30058B257</string>
+ <string>8B793AF221F579C4006E9731</string>
<key>history</key>
<array>
- <string>8BC5D0B1209410C30058B257</string>
+ <string>8B793AE021F57961006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>23 322 810 487 0 0 1440 878 </string>
+ <string>504 266 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>23 322 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 297}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -449,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>504 266 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC5D0B3209410C30058B257</string>
+ <string>8B793AF321F579C4006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC5D0B4209410C30058B257</string>
+ <string>8B793AF421F579C4006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BC5D0B5209410C30058B257</string>
+ <string>8B793AF521F579C4006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>546574531.81958306</real>
+ <real>569735620.885432</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -654,7 +654,7 @@
<string>/Users/christopherjohnson/Desktop/MacVST/Golem/Golem.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>23 322 810 487 0 0 1440 878 </string>
+ <string>504 266 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Golem/source/Golem.cpp b/plugins/MacVST/Golem/source/Golem.cpp
index 8f63b48..c99c5cd 100755
--- a/plugins/MacVST/Golem/source/Golem.cpp
+++ b/plugins/MacVST/Golem/source/Golem.cpp
@@ -17,10 +17,8 @@ Golem::Golem(audioMasterCallback audioMaster) :
C = 0.0;
for(count = 0; count < 4098; count++) {p[count] = 0.0;}
count = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
flip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/MacVST/Golem/source/Golem.h b/plugins/MacVST/Golem/source/Golem.h
index 8bb81d8..e02ab78 100755
--- a/plugins/MacVST/Golem/source/Golem.h
+++ b/plugins/MacVST/Golem/source/Golem.h
@@ -54,10 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
//default stuff
double p[4099];
diff --git a/plugins/MacVST/Golem/source/GolemProc.cpp b/plugins/MacVST/Golem/source/GolemProc.cpp
index 9235869..1d7e9f5 100755
--- a/plugins/MacVST/Golem/source/GolemProc.cpp
+++ b/plugins/MacVST/Golem/source/GolemProc.cpp
@@ -14,9 +14,6 @@ void Golem::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int phase = (int)((C * 5.999)+1);
double balance = ((A*2.0)-1.0) / 2.0;
double gainL = 0.5 - balance;
@@ -115,25 +112,14 @@ void Golem::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR = inputSampleL;
//the output is totally mono
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -152,9 +138,6 @@ void Golem::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int phase = (int)((C * 5.999)+1);
double balance = ((A*2.0)-1.0) / 2.0;
double gainL = 0.5 - balance;
@@ -253,25 +236,16 @@ void Golem::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR = inputSampleL;
//the output is totally mono
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser
index 32ae3e2..d93196d 100644..100755
--- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* GrooveWear */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538681972;
- PBXWorkspaceStateSaveDate = 538681972;
+ PBXPerProjectTemplateStateSaveDate = 569735642;
+ PBXWorkspaceStateSaveDate = 569735642;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -58,18 +58,18 @@
};
2407DEB6089929BA00EB68BF /* GrooveWear.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1976}}";
- sepNavSelRange = "{853, 0}";
- sepNavVisRange = "{3082, 2076}";
- sepNavWindowFrame = "{{12, 47}, {895, 831}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1989}}";
+ sepNavSelRange = "{3622, 151}";
+ sepNavVisRange = "{2572, 2004}";
+ sepNavWindowFrame = "{{538, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* GrooveWear.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {866, 1144}}";
- sepNavSelRange = "{2839, 0}";
+ sepNavSelRange = "{2541, 368}";
sepNavVisRange = "{708, 2201}";
- sepNavWindowFrame = "{{20, 47}, {895, 831}}";
+ sepNavWindowFrame = "{{548, 47}, {895, 831}}";
};
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
@@ -82,10 +82,10 @@
};
24D8286F09A914000093AEF8 /* GrooveWearProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {876, 12779}}";
- sepNavSelRange = "{41930, 0}";
+ sepNavIntBoundsRect = "{{0, 0}, {876, 11960}}";
+ sepNavSelRange = "{21536, 21122}";
sepNavVisRange = "{40820, 1838}";
- sepNavWindowFrame = "{{222, 39}, {923, 828}}";
+ sepNavWindowFrame = "{{523, 50}, {923, 828}}";
};
};
8B02375E1D42B1C400E1E8C8 /* Source Control */ = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* GrooveWear */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3
index 4a8fe96..c016b37 100644..100755
--- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>21 368 810 487 0 0 1440 878 </string>
+ <string>630 296 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -362,7 +362,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>21 368 810 487 0 0 1440 878 </string>
+ <string>630 296 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -387,7 +387,7 @@
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
- <string>21 368 810 487 0 0 1440 878 </string>
+ <string>630 296 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E5432201BA7F900B5DC2A</string>
+ <string>8B793B0821F579E6006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E5433201BA7F900B5DC2A</string>
+ <string>8B793B0921F579E6006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B4E5434201BA7F900B5DC2A</string>
+ <string>8B793B0A21F579E6006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538683385.46335804</real>
+ <real>569735654.76659203</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,10 +643,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/GrooveWear/GrooveWear.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/GrooveWear/GrooveWear.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>21 368 810 487 0 0 1440 878 </string>
+ <string>630 296 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.pbxproj b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.pbxproj
index 0dd9583..e19f322 100755
--- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* GrooveWear */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "GrooveWear" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* GrooveWear */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index a80c038..a80c038 100644..100755
--- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
index 5c38f94..5c38f94 100644..100755
--- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
index 314de0f..314de0f 100644..100755
--- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.mode1v3
index c572326..c572326 100644..100755
--- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.mode1v3
+++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.mode1v3
diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.pbxuser
index df94780..df94780 100644..100755
--- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.pbxuser
+++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.pbxuser
diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
index 8ee693f..8ee693f 100644..100755
--- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
+++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
index 5bccbcb..5bccbcb 100644..100755
--- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
index a7bdd62..a7bdd62 100644..100755
--- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
index 0df2de4..0df2de4 100644..100755
--- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
+++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
diff --git a/plugins/MacVST/GrooveWear/source/GrooveWear.cpp b/plugins/MacVST/GrooveWear/source/GrooveWear.cpp
index e553daa..cbe1fc5 100755
--- a/plugins/MacVST/GrooveWear/source/GrooveWear.cpp
+++ b/plugins/MacVST/GrooveWear/source/GrooveWear.cpp
@@ -36,11 +36,8 @@ GrooveWear::GrooveWear(audioMasterCallback audioMaster) :
cMidPrevR = 0.0;
dMidPrevR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/GrooveWear/source/GrooveWear.h b/plugins/MacVST/GrooveWear/source/GrooveWear.h
index 7b933c2..4bf9745 100755
--- a/plugins/MacVST/GrooveWear/source/GrooveWear.h
+++ b/plugins/MacVST/GrooveWear/source/GrooveWear.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double aMidL[21];
diff --git a/plugins/MacVST/GrooveWear/source/GrooveWearProc.cpp b/plugins/MacVST/GrooveWear/source/GrooveWearProc.cpp
index a22f6df..e663203 100755
--- a/plugins/MacVST/GrooveWear/source/GrooveWearProc.cpp
+++ b/plugins/MacVST/GrooveWear/source/GrooveWearProc.cpp
@@ -14,9 +14,6 @@ void GrooveWear::processReplacing(float **inputs, float **outputs, VstInt32 samp
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = (pow(A,2)*19.0)+1.0;
double gain = overallscale;
@@ -433,25 +430,14 @@ void GrooveWear::processReplacing(float **inputs, float **outputs, VstInt32 samp
drySampleR = inputSampleR;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -470,9 +456,6 @@ void GrooveWear::processDoubleReplacing(double **inputs, double **outputs, VstIn
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = (pow(A,2)*19.0)+1.0;
double gain = overallscale;
@@ -889,25 +872,16 @@ void GrooveWear::processDoubleReplacing(double **inputs, double **outputs, VstIn
drySampleR = inputSampleR;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser
index c50d00a..878b3b6 100755
--- a/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460599;
- PBXWorkspaceStateSaveDate = 528460599;
+ PBXPerProjectTemplateStateSaveDate = 569735678;
+ PBXWorkspaceStateSaveDate = 569735678;
};
perUserProjectItems = {
8B55B2CB1D5E372E00B8D4D6 /* PBXTextBookmark */ = 8B55B2CB1D5E372E00B8D4D6 /* PBXTextBookmark */;
- 8B9D6C941F7EE6EE007AB60F /* PBXTextBookmark */ = 8B9D6C941F7EE6EE007AB60F /* PBXTextBookmark */;
- 8B9D7A791F7FAB58007AB60F /* PBXTextBookmark */ = 8B9D7A791F7FAB58007AB60F /* PBXTextBookmark */;
+ 8B793B2521F57A02006E9731 /* PBXTextBookmark */ = 8B793B2521F57A02006E9731 /* PBXTextBookmark */;
+ 8B793B3421F57A3B006E9731 /* PBXTextBookmark */ = 8B793B3421F57A3B006E9731 /* PBXTextBookmark */;
8BA186921D49975600F8B3DC /* PBXTextBookmark */ = 8BA186921D49975600F8B3DC /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -64,15 +64,15 @@
};
2407DEB6089929BA00EB68BF /* GuitarConditioner.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1365}}";
- sepNavSelRange = "{3738, 0}";
- sepNavVisRange = "{1973, 2300}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1287}}";
+ sepNavSelRange = "{558, 0}";
+ sepNavVisRange = "{0, 2385}";
sepNavWindowFrame = "{{46, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* GuitarConditioner.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 1014}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 975}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
@@ -113,22 +113,22 @@
fRef = 2407DEB6089929BA00EB68BF /* GuitarConditioner.cpp */;
name = "Gain.cpp: 103";
rLen = 0;
- rLoc = 3202;
+ rLoc = 3216;
rType = 0;
vrLen = 156;
vrLoc = 3340;
};
- 8B9D6C941F7EE6EE007AB60F /* PBXTextBookmark */ = {
+ 8B793B2521F57A02006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* GuitarConditioner.h */;
name = "GuitarConditioner.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
- vrLen = 88;
+ vrLen = 0;
vrLoc = 0;
};
- 8B9D7A791F7FAB58007AB60F /* PBXTextBookmark */ = {
+ 8B793B3421F57A3B006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* GuitarConditioner.h */;
name = "GuitarConditioner.h: 1";
diff --git a/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3
index 01d3095..dc3886b 100755
--- a/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>7</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -351,12 +351,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7A791F7FAB58007AB60F</string>
+ <string>8B793B3421F57A3B006E9731</string>
<key>history</key>
<array>
<string>8BA186921D49975600F8B3DC</string>
<string>8B55B2CB1D5E372E00B8D4D6</string>
- <string>8B9D6C941F7EE6EE007AB60F</string>
+ <string>8B793B2521F57A02006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 32}}</string>
+ <string>{{0, 0}, {603, 13}}</string>
<key>RubberWindowFrame</key>
<string>306 299 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>32pt</string>
+ <string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>409pt</string>
+ <string>428pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
- <key>RubberWindowFrame</key>
- <string>306 299 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 401}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 401}}</string>
+ <key>RubberWindowFrame</key>
+ <string>306 299 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7A7A1F7FAB58007AB60F</string>
+ <string>8B793B3521F57A3B006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7A7B1F7FAB58007AB60F</string>
+ <string>8B793B3621F57A3B006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7A7C1F7FAB58007AB60F</string>
+ <string>8B793B3721F57A3B006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460632.65863901</real>
+ <real>569735739.28810406</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,7 +653,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7A7D1F7FAB58007AB60F</string>
+ <string>8B793B3821F57A3B006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.cpp b/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.cpp
index 8f3ccfc..b0388ab 100755
--- a/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.cpp
+++ b/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.cpp
@@ -12,12 +12,9 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new G
GuitarConditioner::GuitarConditioner(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
-
lastSampleTL = 0.0;
lastSampleBL = 0.0; //for Slews. T for treble, B for bass
iirSampleTAL = 0.0;
diff --git a/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.h b/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.h
index 7bd73ab..3be09e1 100755
--- a/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.h
+++ b/plugins/MacVST/GuitarConditioner/source/GuitarConditioner.h
@@ -49,13 +49,10 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
-
+ bool fpFlip;
double lastSampleTL;
double lastSampleBL; //for Slews
double iirSampleTAL;
diff --git a/plugins/MacVST/GuitarConditioner/source/GuitarConditionerProc.cpp b/plugins/MacVST/GuitarConditioner/source/GuitarConditionerProc.cpp
index 83970f2..b25d600 100755
--- a/plugins/MacVST/GuitarConditioner/source/GuitarConditionerProc.cpp
+++ b/plugins/MacVST/GuitarConditioner/source/GuitarConditionerProc.cpp
@@ -17,9 +17,6 @@ void GuitarConditioner::processReplacing(float **inputs, float **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -164,26 +161,18 @@ void GuitarConditioner::processReplacing(float **inputs, float **outputs, VstInt
lastSampleBR = bassR; //bassR slew
inputSampleL = trebleL + bassL; //final merge
- inputSampleR = trebleR + bassR; //final merge
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
+ inputSampleR = trebleR + bassR; //final merge
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -205,9 +194,6 @@ void GuitarConditioner::processDoubleReplacing(double **inputs, double **outputs
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -353,26 +339,19 @@ void GuitarConditioner::processDoubleReplacing(double **inputs, double **outputs
lastSampleBR = bassR; //bassR slew
inputSampleL = trebleL + bassL; //final merge
- inputSampleR = trebleR + bassR; //final merge
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
+ inputSampleR = trebleR + bassR; //final merge
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser
index c302fa1..2dae48f 100755
--- a/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541823415;
- PBXWorkspaceStateSaveDate = 541823415;
+ PBXPerProjectTemplateStateSaveDate = 569767859;
+ PBXWorkspaceStateSaveDate = 569767859;
};
perUserProjectItems = {
- 8B181A1A204B984700516BEE /* XCBuildMessageTextBookmark */ = 8B181A1A204B984700516BEE /* XCBuildMessageTextBookmark */;
8B181A1B204B984700516BEE /* PBXTextBookmark */ = 8B181A1B204B984700516BEE /* PBXTextBookmark */;
+ 8B793B5521F5F802006E9731 /* PBXTextBookmark */ = 8B793B5521F5F802006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -78,9 +78,9 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}";
+ sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}";
sepNavSelRange = "{10616, 0}";
- sepNavVisRange = "{10459, 399}";
+ sepNavVisRange = "{10459, 280}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
@@ -106,23 +106,24 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B181A1A204B984700516BEE /* XCBuildMessageTextBookmark */ = {
+ 8B181A1B204B984700516BEE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- comments = "Deprecated conversion from string constant to 'char*'";
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
- fallbackIsa = XCBuildMessageTextBookmark;
- rLen = 1;
- rLoc = 306;
- rType = 1;
+ name = "audioeffectx.cpp: 307";
+ rLen = 0;
+ rLoc = 10616;
+ rType = 0;
+ vrLen = 399;
+ vrLoc = 10459;
};
- 8B181A1B204B984700516BEE /* PBXTextBookmark */ = {
+ 8B793B5521F5F802006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
rLen = 0;
rLoc = 10616;
rType = 0;
- vrLen = 399;
+ vrLen = 280;
vrLoc = 10459;
};
8D01CCC60486CAD60068D4B7 /* HardVacuum */ = {
diff --git a/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3
index eda5e23..b731835 100755
--- a/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/HardVacuum/HardVacuum.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -349,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B181A1B204B984700516BEE</string>
+ <string>8B793B5521F5F802006E9731</string>
<key>history</key>
<array>
- <string>8B181A1A204B984700516BEE</string>
+ <string>8B181A1B204B984700516BEE</string>
</array>
</dict>
<key>SplitCount</key>
@@ -366,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
<string>23 367 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -391,7 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>23 367 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -446,8 +450,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>23 367 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -475,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B1819D9204B91BA00516BEE</string>
+ <string>8B793B5621F5F802006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B1819DA204B91BA00516BEE</string>
+ <string>8B793B5721F5F802006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B1819DB204B91BA00516BEE</string>
+ <string>8B793B5821F5F802006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -632,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541825095.83224404</real>
+ <real>569767938.33907902</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -649,7 +651,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/HardVacuum/HardVacuum.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/HardVacuum/HardVacuum.xcodeproj</string>
</array>
<key>WindowString</key>
<string>23 367 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/HardVacuum/source/HardVacuum.cpp b/plugins/MacVST/HardVacuum/source/HardVacuum.cpp
index 2ad1a4a..9c14f89 100755
--- a/plugins/MacVST/HardVacuum/source/HardVacuum.cpp
+++ b/plugins/MacVST/HardVacuum/source/HardVacuum.cpp
@@ -19,11 +19,8 @@ HardVacuum::HardVacuum(audioMasterCallback audioMaster) :
E = 1.0;
lastSampleL = 0.0;
lastSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/HardVacuum/source/HardVacuum.h b/plugins/MacVST/HardVacuum/source/HardVacuum.h
index 6321df6..7f4c098 100755
--- a/plugins/MacVST/HardVacuum/source/HardVacuum.h
+++ b/plugins/MacVST/HardVacuum/source/HardVacuum.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/MacVST/HardVacuum/source/HardVacuumProc.cpp b/plugins/MacVST/HardVacuum/source/HardVacuumProc.cpp
index f8fe4fd..e0e07e2 100755
--- a/plugins/MacVST/HardVacuum/source/HardVacuumProc.cpp
+++ b/plugins/MacVST/HardVacuum/source/HardVacuumProc.cpp
@@ -33,9 +33,6 @@ void HardVacuum::processReplacing(float **inputs, float **outputs, VstInt32 samp
double skewL;
double skewR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -176,25 +173,14 @@ void HardVacuum::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -232,9 +218,6 @@ void HardVacuum::processDoubleReplacing(double **inputs, double **outputs, VstIn
double skewL;
double skewR;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -376,25 +359,16 @@ void HardVacuum::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser
index d0644db..1d213fa 100755
--- a/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 532471901;
- PBXWorkspaceStateSaveDate = 532471901;
+ PBXPerProjectTemplateStateSaveDate = 569768168;
+ PBXWorkspaceStateSaveDate = 569768168;
};
perUserProjectItems = {
- 8BB5DD511FBCE26D008B4570 /* XCBuildMessageTextBookmark */ = 8BB5DD511FBCE26D008B4570 /* XCBuildMessageTextBookmark */;
+ 8B793B8E21F5F8F6006E9731 /* PBXTextBookmark */ = 8B793B8E21F5F8F6006E9731 /* PBXTextBookmark */;
8BB5DD521FBCE26D008B4570 /* PBXTextBookmark */ = 8BB5DD521FBCE26D008B4570 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -78,9 +78,9 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}";
+ sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}";
sepNavSelRange = "{10616, 0}";
- sepNavVisRange = "{10459, 399}";
+ sepNavVisRange = "{10459, 280}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
@@ -106,14 +106,15 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BB5DD511FBCE26D008B4570 /* XCBuildMessageTextBookmark */ = {
+ 8B793B8E21F5F8F6006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- comments = "Deprecated conversion from string constant to 'char*'";
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
- fallbackIsa = XCBuildMessageTextBookmark;
- rLen = 1;
- rLoc = 306;
- rType = 1;
+ name = "audioeffectx.cpp: 307";
+ rLen = 0;
+ rLoc = 10616;
+ rType = 0;
+ vrLen = 280;
+ vrLoc = 10459;
};
8BB5DD521FBCE26D008B4570 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3
index 75862ab..c7b44c4 100755
--- a/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/HermeTrim/HermeTrim.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -349,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BB5DD521FBCE26D008B4570</string>
+ <string>8B793B8E21F5F8F6006E9731</string>
<key>history</key>
<array>
- <string>8BB5DD511FBCE26D008B4570</string>
+ <string>8BB5DD521FBCE26D008B4570</string>
</array>
</dict>
<key>SplitCount</key>
@@ -366,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
<string>37 371 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -391,7 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>37 371 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -446,8 +450,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>37 371 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -475,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BB5DD281FBCE0B3008B4570</string>
+ <string>8B793B8F21F5F8F6006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BB5DD291FBCE0B3008B4570</string>
+ <string>8B793B9021F5F8F6006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BB5DD2A1FBCE0B3008B4570</string>
+ <string>8B793B9121F5F8F6006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -632,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>532472429.63955802</real>
+ <real>569768182.06468904</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -649,7 +651,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/HermeTrim/HermeTrim.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/HermeTrim/HermeTrim.xcodeproj</string>
</array>
<key>WindowString</key>
<string>37 371 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/HermeTrim/source/HermeTrim.cpp b/plugins/MacVST/HermeTrim/source/HermeTrim.cpp
index 562df2c..117cc45 100755
--- a/plugins/MacVST/HermeTrim/source/HermeTrim.cpp
+++ b/plugins/MacVST/HermeTrim/source/HermeTrim.cpp
@@ -17,11 +17,8 @@ HermeTrim::HermeTrim(audioMasterCallback audioMaster) :
C = 0.5;
D = 0.5;
E = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/HermeTrim/source/HermeTrim.h b/plugins/MacVST/HermeTrim/source/HermeTrim.h
index b8503ca..f0bc8ed 100755
--- a/plugins/MacVST/HermeTrim/source/HermeTrim.h
+++ b/plugins/MacVST/HermeTrim/source/HermeTrim.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/HermeTrim/source/HermeTrimProc.cpp b/plugins/MacVST/HermeTrim/source/HermeTrimProc.cpp
index d920843..66d3144 100755
--- a/plugins/MacVST/HermeTrim/source/HermeTrimProc.cpp
+++ b/plugins/MacVST/HermeTrim/source/HermeTrimProc.cpp
@@ -14,9 +14,6 @@ void HermeTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double leftgain = pow(10.0,((A*3.0)-1.5)/20.0);
double rightgain = pow(10.0,((B*3.0)-1.5)/20.0);
@@ -83,25 +80,14 @@ void HermeTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -120,9 +106,6 @@ void HermeTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double leftgain = pow(10.0,((A*3.0)-1.5)/20.0);
double rightgain = pow(10.0,((B*3.0)-1.5)/20.0);
@@ -189,25 +172,16 @@ void HermeTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser
index 46149d5..7c8d8e8 100755
--- a/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460642;
- PBXWorkspaceStateSaveDate = 528460642;
+ PBXPerProjectTemplateStateSaveDate = 569767979;
+ PBXWorkspaceStateSaveDate = 569767979;
};
perUserProjectItems = {
- 8B9D6CBE1F7EE9E7007AB60F /* PBXTextBookmark */ = 8B9D6CBE1F7EE9E7007AB60F /* PBXTextBookmark */;
- 8B9D7A8F1F7FAB72007AB60F /* PBXTextBookmark */ = 8B9D7A8F1F7FAB72007AB60F /* PBXTextBookmark */;
+ 8B793B7321F5F897006E9731 /* PBXTextBookmark */ = 8B793B7321F5F897006E9731 /* PBXTextBookmark */;
+ 8B793B7821F5F8CF006E9731 /* PBXTextBookmark */ = 8B793B7821F5F8CF006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -62,23 +62,23 @@
};
2407DEB6089929BA00EB68BF /* Hermepass.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1950}}";
- sepNavSelRange = "{469, 0}";
- sepNavVisRange = "{2904, 2073}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1963}}";
+ sepNavSelRange = "{713, 0}";
+ sepNavVisRange = "{0, 1657}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Hermepass.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 1131}}";
- sepNavSelRange = "{3408, 0}";
- sepNavVisRange = "{654, 2864}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 1092}}";
+ sepNavSelRange = "{3416, 0}";
+ sepNavVisRange = "{619, 2845}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {747, 19864}}";
+ sepNavIntBoundsRect = "{{0, 0}, {747, 19877}}";
sepNavSelRange = "{10616, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
@@ -106,17 +106,17 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6CBE1F7EE9E7007AB60F /* PBXTextBookmark */ = {
+ 8B793B7321F5F897006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
rLen = 0;
rLoc = 10616;
rType = 0;
- vrLen = 123;
- vrLoc = 10613;
+ vrLen = 0;
+ vrLoc = 0;
};
- 8B9D7A8F1F7FAB72007AB60F /* PBXTextBookmark */ = {
+ 8B793B7821F5F8CF006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
diff --git a/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3
index 48045b3..5ca3881 100755
--- a/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Hermepass/Hermepass.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>303 293 810 487 0 0 1440 878 </string>
+ <string>278 293 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7A8F1F7FAB72007AB60F</string>
+ <string>8B793B7821F5F8CF006E9731</string>
<key>history</key>
<array>
- <string>8B9D6CBE1F7EE9E7007AB60F</string>
+ <string>8B793B7321F5F897006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 32}}</string>
+ <string>{{0, 0}, {603, 13}}</string>
<key>RubberWindowFrame</key>
- <string>303 293 810 487 0 0 1440 878 </string>
+ <string>278 293 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>32pt</string>
+ <string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>409pt</string>
+ <string>428pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
- <key>RubberWindowFrame</key>
- <string>303 293 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 401}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -449,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 401}}</string>
+ <key>RubberWindowFrame</key>
+ <string>278 293 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7A901F7FAB72007AB60F</string>
+ <string>8B793B7921F5F8CF006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7A911F7FAB72007AB60F</string>
+ <string>8B793B7A21F5F8CF006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7A921F7FAB72007AB60F</string>
+ <string>8B793B7B21F5F8CF006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460658.10219902</real>
+ <real>569768143.68088698</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,11 +651,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7A931F7FAB72007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Hermepass/Hermepass.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>303 293 810 487 0 0 1440 878 </string>
+ <string>278 293 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Hermepass/source/Hermepass.cpp b/plugins/MacVST/Hermepass/source/Hermepass.cpp
index 3bfb1aa..4e4a532 100755
--- a/plugins/MacVST/Hermepass/source/Hermepass.cpp
+++ b/plugins/MacVST/Hermepass/source/Hermepass.cpp
@@ -32,12 +32,9 @@ Hermepass::Hermepass(audioMasterCallback audioMaster) :
iirFR = 0.0;
iirGR = 0.0;
iirHR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Hermepass/source/Hermepass.h b/plugins/MacVST/Hermepass/source/Hermepass.h
index 4f29497..1000bb9 100755
--- a/plugins/MacVST/Hermepass/source/Hermepass.h
+++ b/plugins/MacVST/Hermepass/source/Hermepass.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double iirAL;
double iirBL; //first stage is the flipping one, for lowest slope. It is always engaged, and is the highest one
@@ -76,7 +73,7 @@ private:
double iirFR; //our slope control will have a pow() on it so that the high orders are way to the right side
double iirGR;
double iirHR; //seven poles max, and the final pole is always at 20hz directly.
-
+ bool fpFlip;
float A;
diff --git a/plugins/MacVST/Hermepass/source/HermepassProc.cpp b/plugins/MacVST/Hermepass/source/HermepassProc.cpp
index 01b35aa..fddffe3 100755
--- a/plugins/MacVST/Hermepass/source/HermepassProc.cpp
+++ b/plugins/MacVST/Hermepass/source/HermepassProc.cpp
@@ -17,10 +17,8 @@ void Hermepass::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ long double fpNew = 1.0 - fpOld;
double rangescale = 0.1 / overallscale;
double cutoff = pow(A,3);
@@ -175,26 +173,17 @@ void Hermepass::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR -= correction;
//end R channel
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -216,10 +205,8 @@ void Hermepass::processDoubleReplacing(double **inputs, double **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
long double fpOld = 0.618033988749894848204586; //golden ratio!
long double fpNew = 1.0 - fpOld;
-
double rangescale = 0.1 / overallscale;
double cutoff = pow(A,3);
@@ -374,26 +361,19 @@ void Hermepass::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR -= correction;
//end R channel
-
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser
index ebcffae..b8832a5 100755
--- a/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460737;
- PBXWorkspaceStateSaveDate = 528460737;
+ PBXPerProjectTemplateStateSaveDate = 569768208;
+ PBXWorkspaceStateSaveDate = 569768208;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
diff --git a/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3
index 437b8d3..f860614 100755
--- a/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/HighImpact/HighImpact.xcodeproj/christopherjohnson.perspectivev3
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7ACE1F7FABD1007AB60F</string>
+ <string>8B793BAE21F5F91A006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7ACF1F7FABD1007AB60F</string>
+ <string>8B793BAF21F5F91A006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7AD01F7FABD1007AB60F</string>
+ <string>8B793BB021F5F91A006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460753.11869597</real>
+ <real>569768218.37077904</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7AD11F7FABD1007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/HighImpact/HighImpact.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/HighImpact/source/HighImpact.cpp b/plugins/MacVST/HighImpact/source/HighImpact.cpp
index 0944b18..960d80c 100755
--- a/plugins/MacVST/HighImpact/source/HighImpact.cpp
+++ b/plugins/MacVST/HighImpact/source/HighImpact.cpp
@@ -17,11 +17,8 @@ HighImpact::HighImpact(audioMasterCallback audioMaster) :
C = 0.0;
lastSampleL = 0.0;
lastSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/HighImpact/source/HighImpact.h b/plugins/MacVST/HighImpact/source/HighImpact.h
index 9c7a4a0..a57230b 100755
--- a/plugins/MacVST/HighImpact/source/HighImpact.h
+++ b/plugins/MacVST/HighImpact/source/HighImpact.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/MacVST/HighImpact/source/HighImpactProc.cpp b/plugins/MacVST/HighImpact/source/HighImpactProc.cpp
index 037bbe9..f24804a 100755
--- a/plugins/MacVST/HighImpact/source/HighImpactProc.cpp
+++ b/plugins/MacVST/HighImpact/source/HighImpactProc.cpp
@@ -14,9 +14,6 @@ void HighImpact::processReplacing(float **inputs, float **outputs, VstInt32 samp
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -161,25 +158,14 @@ void HighImpact::processReplacing(float **inputs, float **outputs, VstInt32 samp
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -201,9 +187,6 @@ void HighImpact::processDoubleReplacing(double **inputs, double **outputs, VstIn
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -348,25 +331,16 @@ void HighImpact::processDoubleReplacing(double **inputs, double **outputs, VstIn
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser
index 41bc4e3..6a621d4 100755
--- a/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460765;
- PBXWorkspaceStateSaveDate = 528460765;
+ PBXPerProjectTemplateStateSaveDate = 569768258;
+ PBXWorkspaceStateSaveDate = 569768258;
};
perUserProjectItems = {
- 8B9D6D1C1F7EEAA7007AB60F /* PBXTextBookmark */ = 8B9D6D1C1F7EEAA7007AB60F /* PBXTextBookmark */;
+ 8B793BD921F5FB42006E9731 /* PBXTextBookmark */ = 8B793BD921F5FB42006E9731 /* PBXTextBookmark */;
8B9D7AED1F7FABEE007AB60F /* PBXTextBookmark */ = 8B9D7AED1F7FABEE007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -62,17 +62,17 @@
};
2407DEB6089929BA00EB68BF /* Highpass.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 2015}}";
- sepNavSelRange = "{470, 0}";
- sepNavVisRange = "{0, 1934}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1976}}";
+ sepNavSelRange = "{605, 0}";
+ sepNavVisRange = "{0, 1964}";
sepNavWindowFrame = "{{545, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Highpass.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 975}}";
- sepNavSelRange = "{2665, 0}";
- sepNavVisRange = "{373, 2298}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 936}}";
+ sepNavSelRange = "{2612, 0}";
+ sepNavVisRange = "{366, 2258}";
sepNavWindowFrame = "{{545, 45}, {895, 831}}";
};
};
@@ -86,8 +86,8 @@
};
24D8286F09A914000093AEF8 /* HighpassProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 3861}}";
- sepNavSelRange = "{10302, 0}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 3549}}";
+ sepNavSelRange = "{9802, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{325, 47}, {895, 831}}";
};
@@ -106,12 +106,12 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6D1C1F7EEAA7007AB60F /* PBXTextBookmark */ = {
+ 8B793BD921F5FB42006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* HighpassProc.cpp */;
- name = "HighpassProc.cpp: 297";
+ name = "HighpassProc.cpp: 270";
rLen = 0;
- rLoc = 10302;
+ rLoc = 9802;
rType = 0;
vrLen = 0;
vrLoc = 0;
@@ -121,7 +121,7 @@
fRef = 24D8286F09A914000093AEF8 /* HighpassProc.cpp */;
name = "HighpassProc.cpp: 297";
rLen = 0;
- rLoc = 10302;
+ rLoc = 9802;
rType = 0;
vrLen = 0;
vrLoc = 0;
diff --git a/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3
index 9d76d95..e1cb811 100755
--- a/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Highpass/Highpass.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7AED1F7FABEE007AB60F</string>
+ <string>8B793BD921F5FB42006E9731</string>
<key>history</key>
<array>
- <string>8B9D6D1C1F7EEAA7007AB60F</string>
+ <string>8B9D7AED1F7FABEE007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>369 207 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
- <key>RubberWindowFrame</key>
- <string>369 207 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 414}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -449,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>369 207 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7AEE1F7FABEE007AB60F</string>
+ <string>8B793BDA21F5FB42006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7AEF1F7FABEE007AB60F</string>
+ <string>8B793BDB21F5FB42006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7AF01F7FABEE007AB60F</string>
+ <string>8B793BDC21F5FB42006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460782.88018203</real>
+ <real>569768770.42441106</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7AF11F7FABEE007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Highpass/Highpass.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Highpass/source/Highpass.cpp b/plugins/MacVST/Highpass/source/Highpass.cpp
index ed43f9d..86ebe24 100755
--- a/plugins/MacVST/Highpass/source/Highpass.cpp
+++ b/plugins/MacVST/Highpass/source/Highpass.cpp
@@ -19,10 +19,8 @@ Highpass::Highpass(audioMasterCallback audioMaster) :
iirSampleBL = 0.0;
iirSampleAR = 0.0;
iirSampleBR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/MacVST/Highpass/source/Highpass.h b/plugins/MacVST/Highpass/source/Highpass.h
index 03d8609..673f951 100755
--- a/plugins/MacVST/Highpass/source/Highpass.h
+++ b/plugins/MacVST/Highpass/source/Highpass.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
@@ -68,7 +65,7 @@ private:
double iirSampleBL;
double iirSampleAR;
double iirSampleBR;
-
+ bool fpFlip;
};
#endif
diff --git a/plugins/MacVST/Highpass/source/HighpassProc.cpp b/plugins/MacVST/Highpass/source/HighpassProc.cpp
index b1e7de9..371ed57 100755
--- a/plugins/MacVST/Highpass/source/HighpassProc.cpp
+++ b/plugins/MacVST/Highpass/source/HighpassProc.cpp
@@ -26,9 +26,6 @@ void Highpass::processReplacing(float **inputs, float **outputs, VstInt32 sample
double inputSampleR;
double outputSampleL;
double outputSampleR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -114,33 +111,21 @@ void Highpass::processReplacing(float **inputs, float **outputs, VstInt32 sample
iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount));
outputSampleR = outputSampleR - iirSampleBR;
}
+ fpFlip = !fpFlip;
if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry);
if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = outputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLA;
-
- fpTemp = outputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = outputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLB;
-
- fpTemp = outputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
@@ -171,9 +156,6 @@ void Highpass::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double inputSampleR;
double outputSampleL;
double outputSampleR;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -259,33 +241,23 @@ void Highpass::processDoubleReplacing(double **inputs, double **outputs, VstInt3
iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount));
outputSampleR = outputSampleR - iirSampleBR;
}
+ fpFlip = !fpFlip;
if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry);
if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = outputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLA;
-
- fpTemp = outputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = outputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLB;
-
- fpTemp = outputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
diff --git a/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser
index 0318f29..e7c095e 100755
--- a/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* Hombre */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460792;
- PBXWorkspaceStateSaveDate = 528460792;
+ PBXPerProjectTemplateStateSaveDate = 569768789;
+ PBXWorkspaceStateSaveDate = 569768789;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* Hombre */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3
index 4a41e1b..0ff9e72 100755
--- a/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Hombre/Hombre.xcodeproj/christopherjohnson.perspectivev3
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7B0D1F7FAC06007AB60F</string>
+ <string>8B793BF921F5FCAE006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7B0E1F7FAC06007AB60F</string>
+ <string>8B793BFA21F5FCAE006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7B0F1F7FAC06007AB60F</string>
+ <string>8B793BFB21F5FCAE006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460806.70010799</real>
+ <real>569769134.11826503</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7B101F7FAC06007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Hombre/Hombre.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Hombre/Hombre.xcodeproj/project.pbxproj b/plugins/MacVST/Hombre/Hombre.xcodeproj/project.pbxproj
index 2e3db5b..0beffb6 100755
--- a/plugins/MacVST/Hombre/Hombre.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/Hombre/Hombre.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* Hombre */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Hombre" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
+ 8D01CCC60486CAD60068D4B7 /* Hombre */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/Hombre/source/Hombre.cpp b/plugins/MacVST/Hombre/source/Hombre.cpp
index 9ef8844..8b03ed1 100755
--- a/plugins/MacVST/Hombre/source/Hombre.cpp
+++ b/plugins/MacVST/Hombre/source/Hombre.cpp
@@ -17,11 +17,8 @@ Hombre::Hombre(audioMasterCallback audioMaster) :
for(int count = 0; count < 4000; count++) {pL[count] = 0.0; pR[count] = 0.0;}
gcount = 0;
slide = 0.421;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Hombre/source/Hombre.h b/plugins/MacVST/Hombre/source/Hombre.h
index 94e29b1..e23f6f3 100755
--- a/plugins/MacVST/Hombre/source/Hombre.h
+++ b/plugins/MacVST/Hombre/source/Hombre.h
@@ -58,11 +58,8 @@ private:
double slide;
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Hombre/source/HombreProc.cpp b/plugins/MacVST/Hombre/source/HombreProc.cpp
index 01e08bd..16bf513 100755
--- a/plugins/MacVST/Hombre/source/HombreProc.cpp
+++ b/plugins/MacVST/Hombre/source/HombreProc.cpp
@@ -17,9 +17,6 @@ void Hombre::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double target = A;
double offsetA;
@@ -134,25 +131,14 @@ void Hombre::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -174,9 +160,6 @@ void Hombre::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double target = A;
double offsetA;
@@ -291,25 +274,16 @@ void Hombre::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser
index 1875dde..3c067ed 100755
--- a/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460815;
- PBXWorkspaceStateSaveDate = 528460815;
+ PBXPerProjectTemplateStateSaveDate = 569769155;
+ PBXWorkspaceStateSaveDate = 569769155;
};
perUserProjectItems = {
- 8B9D6D5B1F7EEB52007AB60F /* PBXTextBookmark */ = 8B9D6D5B1F7EEB52007AB60F /* PBXTextBookmark */;
+ 8B793C0E21F5FCCD006E9731 /* PBXTextBookmark */ = 8B793C0E21F5FCCD006E9731 /* PBXTextBookmark */;
8B9D7B361F7FAC33007AB60F /* PBXTextBookmark */ = 8B9D7B361F7FAC33007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -62,9 +62,9 @@
};
2407DEB6089929BA00EB68BF /* IronOxide5.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {670, 2418}}";
+ sepNavIntBoundsRect = "{{0, 0}, {670, 2353}}";
sepNavSelRange = "{5913, 24}";
- sepNavVisRange = "{5125, 1406}";
+ sepNavVisRange = "{5294, 1247}";
sepNavWindowFrame = "{{274, 45}, {895, 831}}";
};
};
@@ -106,15 +106,15 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6D5B1F7EEB52007AB60F /* PBXTextBookmark */ = {
+ 8B793C0E21F5FCCD006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* IronOxide5.cpp */;
- name = "IronOxide5.cpp: 158";
+ name = "IronOxide5.cpp: 155";
rLen = 24;
rLoc = 5913;
rType = 0;
- vrLen = 1489;
- vrLoc = 5042;
+ vrLen = 1247;
+ vrLoc = 5294;
};
8B9D7B361F7FAC33007AB60F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3
index 8f562dc..d0aaa37 100755
--- a/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/IronOxide5/IronOxide5.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7B361F7FAC33007AB60F</string>
+ <string>8B793C0E21F5FCCD006E9731</string>
<key>history</key>
<array>
- <string>8B9D6D5B1F7EEB52007AB60F</string>
+ <string>8B9D7B361F7FAC33007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {604, 314}}</string>
+ <string>{{0, 0}, {604, 303}}</string>
<key>RubberWindowFrame</key>
<string>564 142 811 710 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>314pt</string>
+ <string>303pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>350pt</string>
+ <string>361pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {604, 323}}</string>
+ <string>{{10, 27}, {604, 334}}</string>
<key>RubberWindowFrame</key>
<string>564 142 811 710 0 0 1440 878 </string>
</dict>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7B371F7FAC33007AB60F</string>
+ <string>8B793C0F21F5FCCD006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7B381F7FAC33007AB60F</string>
+ <string>8B793C1021F5FCCD006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7B391F7FAC33007AB60F</string>
+ <string>8B793C1121F5FCCD006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460851.584521</real>
+ <real>569769165.367818</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7B3A1F7FAC33007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/IronOxide5/IronOxide5.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/IronOxide5/source/IronOxide5.cpp b/plugins/MacVST/IronOxide5/source/IronOxide5.cpp
index 2d7c84f..914f53b 100755
--- a/plugins/MacVST/IronOxide5/source/IronOxide5.cpp
+++ b/plugins/MacVST/IronOxide5/source/IronOxide5.cpp
@@ -45,11 +45,8 @@ IronOxide5::IronOxide5(audioMasterCallback audioMaster) :
rateof = 0.5;
nextmax = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/IronOxide5/source/IronOxide5.h b/plugins/MacVST/IronOxide5/source/IronOxide5.h
index a7cad5d..82d4c9a 100755
--- a/plugins/MacVST/IronOxide5/source/IronOxide5.h
+++ b/plugins/MacVST/IronOxide5/source/IronOxide5.h
@@ -101,11 +101,8 @@ private:
double nextmax;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/IronOxide5/source/IronOxide5Proc.cpp b/plugins/MacVST/IronOxide5/source/IronOxide5Proc.cpp
index c0fbb35..e42d69f 100755
--- a/plugins/MacVST/IronOxide5/source/IronOxide5Proc.cpp
+++ b/plugins/MacVST/IronOxide5/source/IronOxide5Proc.cpp
@@ -17,9 +17,6 @@ void IronOxide5::processReplacing(float **inputs, float **outputs, VstInt32 samp
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = pow(10.0,((A*36.0)-18.0)/20.0);
double outputgain = pow(10.0,((F*36.0)-18.0)/20.0);
@@ -422,25 +419,14 @@ void IronOxide5::processReplacing(float **inputs, float **outputs, VstInt32 samp
}
//end invdrywet block with outputgain
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -462,9 +448,6 @@ void IronOxide5::processDoubleReplacing(double **inputs, double **outputs, VstIn
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = pow(10.0,((A*36.0)-18.0)/20.0);
double outputgain = pow(10.0,((F*36.0)-18.0)/20.0);
@@ -867,25 +850,16 @@ void IronOxide5::processDoubleReplacing(double **inputs, double **outputs, VstIn
}
//end invdrywet block with outputgain
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser
index 9ecb7a4..45dee94 100755
--- a/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* IronOxideClassic */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460860;
- PBXWorkspaceStateSaveDate = 528460860;
+ PBXPerProjectTemplateStateSaveDate = 569769189;
+ PBXWorkspaceStateSaveDate = 569769189;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -58,17 +58,17 @@
};
2407DEB6089929BA00EB68BF /* IronOxideClassic.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1911}}";
- sepNavSelRange = "{4912, 0}";
- sepNavVisRange = "{3304, 2335}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1885}}";
+ sepNavSelRange = "{822, 0}";
+ sepNavVisRange = "{0, 2130}";
sepNavWindowFrame = "{{530, 43}, {895, 831}}";
};
};
245463B80991757100464AD3 /* IronOxideClassic.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 1144}}";
- sepNavSelRange = "{2736, 0}";
- sepNavVisRange = "{475, 2394}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 1105}}";
+ sepNavSelRange = "{2766, 0}";
+ sepNavVisRange = "{642, 2241}";
sepNavWindowFrame = "{{541, 47}, {895, 831}}";
};
};
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* IronOxideClassic */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3
index d4487c2..2960170 100755
--- a/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -360,18 +360,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>415 94 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -385,9 +385,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
- <key>RubberWindowFrame</key>
- <string>415 94 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 414}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -441,7 +439,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>415 94 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7B4C1F7FAC58007AB60F</string>
+ <string>8B793C3A21F5FF8A006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7B4D1F7FAC58007AB60F</string>
+ <string>8B793C3B21F5FF8A006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7B4E1F7FAC58007AB60F</string>
+ <string>8B793C3C21F5FF8A006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460888.62616801</real>
+ <real>569769866.66388798</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7B4F1F7FAC58007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/project.pbxproj b/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/project.pbxproj
index 2863d6b..80d9369 100755
--- a/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* IronOxideClassic */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "IronOxideClassic" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
+ 8D01CCC60486CAD60068D4B7 /* IronOxideClassic */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.cpp b/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.cpp
index 012d8a3..8ce7103 100755
--- a/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.cpp
+++ b/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.cpp
@@ -22,12 +22,9 @@ IronOxideClassic::IronOxideClassic(audioMasterCallback audioMaster) :
iirSampleAL = iirSampleBL = 0.0;
fastIIRAR = fastIIRBR = slowIIRAR = slowIIRBR = 0.0;
iirSampleAR = iirSampleBR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.h b/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.h
index b7f8bfa..bafb457 100755
--- a/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.h
+++ b/plugins/MacVST/IronOxideClassic/source/IronOxideClassic.h
@@ -71,12 +71,9 @@ private:
double slowIIRBR;
int gcount;
-
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/IronOxideClassic/source/IronOxideClassicProc.cpp b/plugins/MacVST/IronOxideClassic/source/IronOxideClassicProc.cpp
index c245166..97bbaca 100755
--- a/plugins/MacVST/IronOxideClassic/source/IronOxideClassicProc.cpp
+++ b/plugins/MacVST/IronOxideClassic/source/IronOxideClassicProc.cpp
@@ -17,9 +17,6 @@ void IronOxideClassic::processReplacing(float **inputs, float **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = pow(10.0,((A*36.0)-18.0)/20.0);
double outputgain = pow(10.0,((C*36.0)-18.0)/20.0);
@@ -343,26 +340,16 @@ void IronOxideClassic::processReplacing(float **inputs, float **outputs, VstInt3
inputSampleL *= outputgain;
inputSampleR *= outputgain;
}
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -384,9 +371,6 @@ void IronOxideClassic::processDoubleReplacing(double **inputs, double **outputs,
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = pow(10.0,((A*36.0)-18.0)/20.0);
double outputgain = pow(10.0,((C*36.0)-18.0)/20.0);
@@ -710,26 +694,18 @@ void IronOxideClassic::processDoubleReplacing(double **inputs, double **outputs,
inputSampleL *= outputgain;
inputSampleR *= outputgain;
}
-
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser
index 7177e0c..12e473a 100755
--- a/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.pbxuser
@@ -51,11 +51,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528460946;
- PBXWorkspaceStateSaveDate = 528460946;
+ PBXPerProjectTemplateStateSaveDate = 569769890;
+ PBXWorkspaceStateSaveDate = 569769890;
};
perUserProjectItems = {
- 8B9D6D9A1F7EF21C007AB60F /* PBXTextBookmark */ = 8B9D6D9A1F7EF21C007AB60F /* PBXTextBookmark */;
+ 8B793C5C21F60027006E9731 /* PBXTextBookmark */ = 8B793C5C21F60027006E9731 /* PBXTextBookmark */;
8B9D7B751F7FACB8007AB60F /* PBXTextBookmark */ = 8B9D7B751F7FACB8007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -64,23 +64,23 @@
};
2407DEB6089929BA00EB68BF /* Logical4.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {964, 3081}}";
- sepNavSelRange = "{506, 0}";
- sepNavVisRange = "{0, 1213}";
+ sepNavIntBoundsRect = "{{0, 0}, {964, 2990}}";
+ sepNavSelRange = "{1872, 0}";
+ sepNavVisRange = "{917, 1644}";
sepNavWindowFrame = "{{101, 39}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Logical4.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 2093}}";
- sepNavSelRange = "{4156, 0}";
- sepNavVisRange = "{44, 2353}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 2002}}";
+ sepNavSelRange = "{4021, 0}";
+ sepNavVisRange = "{3285, 841}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {747, 19864}}";
+ sepNavIntBoundsRect = "{{0, 0}, {747, 19877}}";
sepNavSelRange = "{10616, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
@@ -88,9 +88,9 @@
};
24D8286F09A914000093AEF8 /* Logical4Proc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 23621}}";
+ sepNavIntBoundsRect = "{{0, 0}, {950, 23504}}";
sepNavSelRange = "{36787, 1892}";
- sepNavVisRange = "{2824, 2189}";
+ sepNavVisRange = "{9422, 1935}";
sepNavWindowFrame = "{{446, 47}, {895, 831}}";
};
};
@@ -108,7 +108,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6D9A1F7EF21C007AB60F /* PBXTextBookmark */ = {
+ 8B793C5C21F60027006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
diff --git a/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3
index 053aa48..4d9ff5b 100755
--- a/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Logical4/Logical4.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7B751F7FACB8007AB60F</string>
+ <string>8B793C5C21F60027006E9731</string>
<key>history</key>
<array>
- <string>8B9D6D9A1F7EF21C007AB60F</string>
+ <string>8B9D7B751F7FACB8007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>307 326 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
- <key>RubberWindowFrame</key>
- <string>307 326 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 414}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -449,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>307 326 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7B761F7FACB8007AB60F</string>
+ <string>8B793C5D21F60027006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7B771F7FACB8007AB60F</string>
+ <string>8B793C5E21F60027006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7B781F7FACB8007AB60F</string>
+ <string>8B793C5F21F60027006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -654,7 +654,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528460984.74037701</real>
+ <real>569770023.37923205</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -671,7 +671,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7B791F7FACB8007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Logical4/Logical4.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Logical4/source/Logical4.cpp b/plugins/MacVST/Logical4/source/Logical4.cpp
index b17cc55..15d185b 100755
--- a/plugins/MacVST/Logical4/source/Logical4.cpp
+++ b/plugins/MacVST/Logical4/source/Logical4.cpp
@@ -77,12 +77,9 @@ Logical4::Logical4(audioMasterCallback audioMaster) :
gcount = 0;
//end Power Sags
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Logical4/source/Logical4.h b/plugins/MacVST/Logical4/source/Logical4.h
index 71e118e..fd802c8 100755
--- a/plugins/MacVST/Logical4/source/Logical4.h
+++ b/plugins/MacVST/Logical4/source/Logical4.h
@@ -143,10 +143,8 @@ private:
int gcount;
- double fpNShapeLA;
- double fpNShapeLB;
- double fpNShapeRA;
- double fpNShapeRB;
+ double fpNShapeL;
+ double fpNShapeR;
bool fpFlip;
//default stuff
diff --git a/plugins/MacVST/Logical4/source/Logical4Proc.cpp b/plugins/MacVST/Logical4/source/Logical4Proc.cpp
index 0d09fcf..5d079f3 100755
--- a/plugins/MacVST/Logical4/source/Logical4Proc.cpp
+++ b/plugins/MacVST/Logical4/source/Logical4Proc.cpp
@@ -17,9 +17,8 @@ void Logical4::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
+ long double fpNew = 1.0 - fpOld;
float drySampleL;
float drySampleR;
@@ -869,27 +868,17 @@ void Logical4::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
+ fpFlip = !fpFlip;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -911,9 +900,8 @@ void Logical4::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
+ long double fpNew = 1.0 - fpOld;
float drySampleL;
float drySampleR;
@@ -1762,26 +1750,18 @@ void Logical4::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
-
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.pbxuser
index 6c66b21..0bed7c5 100755
--- a/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541203976;
- PBXWorkspaceStateSaveDate = 541203976;
+ PBXPerProjectTemplateStateSaveDate = 569770045;
+ PBXWorkspaceStateSaveDate = 569770045;
};
perUserProjectItems = {
- 8B277E0D1FD86E330038EA07 /* PBXTextBookmark */ = 8B277E0D1FD86E330038EA07 /* PBXTextBookmark */;
+ 8B793C7221F60046006E9731 /* PBXTextBookmark */ = 8B793C7221F60046006E9731 /* PBXTextBookmark */;
8BCEFAAE2042230B002E8187 /* PBXTextBookmark */ = 8BCEFAAE2042230B002E8187 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -106,7 +106,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B277E0D1FD86E330038EA07 /* PBXTextBookmark */ = {
+ 8B793C7221F60046006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
diff --git a/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3
index 7b79c6f..a60b90a 100755
--- a/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Loud/Loud.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BCEFAAE2042230B002E8187</string>
+ <string>8B793C7221F60046006E9731</string>
<key>history</key>
<array>
- <string>8B277E0D1FD86E330038EA07</string>
+ <string>8BCEFAAE2042230B002E8187</string>
</array>
</dict>
<key>SplitCount</key>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BCEFAAF2042230B002E8187</string>
+ <string>8B793C7321F60046006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BCEFAB02042230B002E8187</string>
+ <string>8B793C7421F60046006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BCEFAB12042230B002E8187</string>
+ <string>8B793C7521F60046006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541205259.86103797</real>
+ <real>569770054.94940603</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BCEFAB22042230B002E8187</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Loud/Loud.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Loud/source/Loud.cpp b/plugins/MacVST/Loud/source/Loud.cpp
index 43f7ffc..009124d 100755
--- a/plugins/MacVST/Loud/source/Loud.cpp
+++ b/plugins/MacVST/Loud/source/Loud.cpp
@@ -15,11 +15,8 @@ Loud::Loud(audioMasterCallback audioMaster) :
A = 0.0;
B = 1.0;
C = 1.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Loud/source/Loud.h b/plugins/MacVST/Loud/source/Loud.h
index 85b66a2..17537c2 100755
--- a/plugins/MacVST/Loud/source/Loud.h
+++ b/plugins/MacVST/Loud/source/Loud.h
@@ -56,11 +56,8 @@ private:
double lastSampleL;
double lastSampleR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Loud/source/LoudProc.cpp b/plugins/MacVST/Loud/source/LoudProc.cpp
index 8aedede..35ee29b 100755
--- a/plugins/MacVST/Loud/source/LoudProc.cpp
+++ b/plugins/MacVST/Loud/source/LoudProc.cpp
@@ -18,9 +18,6 @@ void Loud::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
overallscale /= 44100.0;
overallscale *= getSampleRate();
double boost = pow(A+1.0,5);
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double output = B;
double wet = C;
double dry = 1.0-wet;
@@ -143,25 +140,14 @@ void Loud::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -184,9 +170,6 @@ void Loud::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
overallscale /= 44100.0;
overallscale *= getSampleRate();
double boost = pow(A+1.0,5);
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double output = B;
double wet = C;
double dry = 1.0-wet;
@@ -308,25 +291,16 @@ void Loud::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser
index e5aba92..8c9ad70 100755
--- a/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461025;
- PBXWorkspaceStateSaveDate = 528461025;
+ PBXPerProjectTemplateStateSaveDate = 569770101;
+ PBXWorkspaceStateSaveDate = 569770101;
};
perUserProjectItems = {
8B22B1231DB18F4A0075D7AA /* PBXTextBookmark */ = 8B22B1231DB18F4A0075D7AA /* PBXTextBookmark */;
8B22B1531DB190EA0075D7AA /* PBXTextBookmark */ = 8B22B1531DB190EA0075D7AA /* PBXTextBookmark */;
- 8B9D6DDA1F7EF2A5007AB60F /* PBXTextBookmark */ = 8B9D6DDA1F7EF2A5007AB60F /* PBXTextBookmark */;
- 8B9D7BAB1F7FACF3007AB60F /* PBXTextBookmark */ = 8B9D7BAB1F7FACF3007AB60F /* PBXTextBookmark */;
+ 8B793C9021F6007F006E9731 /* PBXTextBookmark */ = 8B793C9021F6007F006E9731 /* PBXTextBookmark */;
+ 8B793C9521F600A2006E9731 /* PBXTextBookmark */ = 8B793C9521F600A2006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -64,17 +64,17 @@
};
2407DEB6089929BA00EB68BF /* Lowpass.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1911}}";
- sepNavSelRange = "{455, 0}";
- sepNavVisRange = "{0, 1921}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1898}}";
+ sepNavSelRange = "{598, 0}";
+ sepNavVisRange = "{0, 1951}";
sepNavWindowFrame = "{{330, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Lowpass.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {859, 936}}";
- sepNavSelRange = "{2574, 84}";
- sepNavVisRange = "{2517, 153}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 767}}";
+ sepNavSelRange = "{2605, 0}";
+ sepNavVisRange = "{2427, 182}";
sepNavWindowFrame = "{{61, 47}, {895, 831}}";
};
};
@@ -113,7 +113,7 @@
fRef = 2407DEB6089929BA00EB68BF /* Lowpass.cpp */;
name = "Lowpass.cpp: 51";
rLen = 0;
- rLoc = 1842;
+ rLoc = 1858;
rType = 0;
vrLen = 71;
vrLoc = 1746;
@@ -128,25 +128,25 @@
vrLen = 707;
vrLoc = 10342;
};
- 8B9D6DDA1F7EF2A5007AB60F /* PBXTextBookmark */ = {
+ 8B793C9021F6007F006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* Lowpass.h */;
name = "Lowpass.h: 67";
- rLen = 84;
+ rLen = 43;
rLoc = 2574;
rType = 0;
- vrLen = 167;
- vrLoc = 2503;
+ vrLen = 194;
+ vrLoc = 2398;
};
- 8B9D7BAB1F7FACF3007AB60F /* PBXTextBookmark */ = {
+ 8B793C9521F600A2006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* Lowpass.h */;
- name = "Lowpass.h: 67";
- rLen = 84;
- rLoc = 2574;
+ name = "Lowpass.h: 68";
+ rLen = 0;
+ rLoc = 2605;
rType = 0;
- vrLen = 153;
- vrLoc = 2517;
+ vrLen = 182;
+ vrLoc = 2427;
};
8D01CCC60486CAD60068D4B7 /* Lowpass */ = {
activeExec = 0;
diff --git a/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3
index fcf5254..bb86e03 100755
--- a/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Lowpass/Lowpass.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -351,12 +351,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7BAB1F7FACF3007AB60F</string>
+ <string>8B793C9521F600A2006E9731</string>
<key>history</key>
<array>
<string>8B22B1231DB18F4A0075D7AA</string>
<string>8B22B1531DB190EA0075D7AA</string>
- <string>8B9D6DDA1F7EF2A5007AB60F</string>
+ <string>8B793C9021F6007F006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 194}}</string>
+ <string>{{0, 0}, {603, 182}}</string>
<key>RubberWindowFrame</key>
<string>355 287 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>194pt</string>
+ <string>182pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>247pt</string>
+ <string>259pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 220}}</string>
- <key>RubberWindowFrame</key>
- <string>355 287 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 232}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -451,7 +449,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 178}}</string>
+ <string>{{10, 27}, {603, 232}}</string>
+ <key>RubberWindowFrame</key>
+ <string>355 287 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7BAC1F7FACF3007AB60F</string>
+ <string>8B793C9621F600A2006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7BAD1F7FACF3007AB60F</string>
+ <string>8B793C9721F600A2006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7BAE1F7FACF3007AB60F</string>
+ <string>8B793C9821F600A2006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461043.96388102</real>
+ <real>569770146.430691</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,7 +653,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7BAF1F7FACF3007AB60F</string>
+ <string>8B793C9921F600A2006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Lowpass/Lowpass.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Lowpass/source/Lowpass.cpp b/plugins/MacVST/Lowpass/source/Lowpass.cpp
index 8178799..18064fc 100755
--- a/plugins/MacVST/Lowpass/source/Lowpass.cpp
+++ b/plugins/MacVST/Lowpass/source/Lowpass.cpp
@@ -19,10 +19,8 @@ Lowpass::Lowpass(audioMasterCallback audioMaster) :
iirSampleBL = 0.0;
iirSampleAR = 0.0;
iirSampleBR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/MacVST/Lowpass/source/Lowpass.h b/plugins/MacVST/Lowpass/source/Lowpass.h
index 1b99c55..40ac456 100755
--- a/plugins/MacVST/Lowpass/source/Lowpass.h
+++ b/plugins/MacVST/Lowpass/source/Lowpass.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
@@ -68,7 +65,7 @@ private:
double iirSampleBL;
double iirSampleAR;
double iirSampleBR;
-
+ bool fpFlip;
};
#endif
diff --git a/plugins/MacVST/Lowpass/source/LowpassProc.cpp b/plugins/MacVST/Lowpass/source/LowpassProc.cpp
index bcce714..bcc3690 100755
--- a/plugins/MacVST/Lowpass/source/LowpassProc.cpp
+++ b/plugins/MacVST/Lowpass/source/LowpassProc.cpp
@@ -27,9 +27,6 @@ void Lowpass::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double inputSampleR;
double outputSampleL;
double outputSampleR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -116,33 +113,21 @@ void Lowpass::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount));
outputSampleR = iirSampleBR;
}
+ fpFlip = !fpFlip;
if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry);
if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = outputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLA;
-
- fpTemp = outputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = outputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLB;
-
- fpTemp = outputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
@@ -174,9 +159,6 @@ void Lowpass::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double inputSampleR;
double outputSampleL;
double outputSampleR;
- double fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -263,33 +245,23 @@ void Lowpass::processDoubleReplacing(double **inputs, double **outputs, VstInt32
iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount));
outputSampleR = iirSampleBR;
}
+ fpFlip = !fpFlip;
if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry);
if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = outputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLA;
-
- fpTemp = outputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = outputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLB;
-
- fpTemp = outputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
diff --git a/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.pbxuser
index d275953..3b3fdf3 100755
--- a/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.pbxuser
@@ -51,11 +51,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461053;
- PBXWorkspaceStateSaveDate = 528461053;
+ PBXPerProjectTemplateStateSaveDate = 569770170;
+ PBXWorkspaceStateSaveDate = 569770170;
};
perUserProjectItems = {
- 8B9D6DFA1F7EF323007AB60F /* PBXTextBookmark */ = 8B9D6DFA1F7EF323007AB60F /* PBXTextBookmark */;
+ 8B793CB821F600C5006E9731 /* PBXTextBookmark */ = 8B793CB821F600C5006E9731 /* PBXTextBookmark */;
8B9D7BCD1F7FAD1A007AB60F /* PBXTextBookmark */ = 8B9D7BCD1F7FAD1A007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -88,7 +88,7 @@
};
24D8286F09A914000093AEF8 /* MeltProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 7800}}";
+ sepNavIntBoundsRect = "{{0, 0}, {621, 7371}}";
sepNavSelRange = "{19360, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{254, 39}, {895, 831}}";
@@ -108,10 +108,10 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6DFA1F7EF323007AB60F /* PBXTextBookmark */ = {
+ 8B793CB821F600C5006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* MeltProc.cpp */;
- name = "MeltProc.cpp: 558";
+ name = "MeltProc.cpp: 553";
rLen = 0;
rLoc = 19360;
rType = 0;
diff --git a/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3
index edef64c..e6e1617 100755
--- a/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Melt/Melt.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7BCD1F7FAD1A007AB60F</string>
+ <string>8B793CB821F600C5006E9731</string>
<key>history</key>
<array>
- <string>8B9D6DFA1F7EF323007AB60F</string>
+ <string>8B9D7BCD1F7FAD1A007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>339 331 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
<string>339 331 810 487 0 0 1440 878 </string>
</dict>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7BCE1F7FAD1A007AB60F</string>
+ <string>8B793CB921F600C5006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7BCF1F7FAD1A007AB60F</string>
+ <string>8B793CBA21F600C5006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7BD01F7FAD1A007AB60F</string>
+ <string>8B793CBB21F600C5006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -654,7 +654,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461082.07116401</real>
+ <real>569770181.85578704</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -671,7 +671,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7BD11F7FAD1A007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Melt/Melt.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Melt/source/Melt.cpp b/plugins/MacVST/Melt/source/Melt.cpp
index 9722e1f..35ede1e 100755
--- a/plugins/MacVST/Melt/source/Melt.cpp
+++ b/plugins/MacVST/Melt/source/Melt.cpp
@@ -26,11 +26,8 @@ Melt::Melt(audioMasterCallback audioMaster) :
slowCount = 0;
gcount = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Melt/source/Melt.h b/plugins/MacVST/Melt/source/Melt.h
index a8e0f38..af11f0f 100755
--- a/plugins/MacVST/Melt/source/Melt.h
+++ b/plugins/MacVST/Melt/source/Melt.h
@@ -70,11 +70,8 @@ private:
int slowCount;
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Melt/source/MeltProc.cpp b/plugins/MacVST/Melt/source/MeltProc.cpp
index 48a1c11..8a55732 100755
--- a/plugins/MacVST/Melt/source/MeltProc.cpp
+++ b/plugins/MacVST/Melt/source/MeltProc.cpp
@@ -21,9 +21,6 @@ void Melt::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
double wet = D;
double dry = 1.0-wet;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -271,25 +268,14 @@ void Melt::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -315,9 +301,6 @@ void Melt::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
double wet = D;
double dry = 1.0-wet;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -565,25 +548,16 @@ void Melt::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser
index ec9df9a..62992ba 100755
--- a/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.pbxuser
@@ -51,11 +51,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461091;
- PBXWorkspaceStateSaveDate = 528461091;
+ PBXPerProjectTemplateStateSaveDate = 569770425;
+ PBXWorkspaceStateSaveDate = 569770425;
};
perUserProjectItems = {
- 8B9D6E101F7EF349007AB60F /* PBXTextBookmark */ = 8B9D6E101F7EF349007AB60F /* PBXTextBookmark */;
+ 8B793CDA21F601C2006E9731 /* PBXTextBookmark */ = 8B793CDA21F601C2006E9731 /* PBXTextBookmark */;
8B9D7BED1F7FAD3F007AB60F /* PBXTextBookmark */ = 8B9D7BED1F7FAD3F007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -108,7 +108,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6E101F7EF349007AB60F /* PBXTextBookmark */ = {
+ 8B793CDA21F601C2006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
diff --git a/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3
index b6def9d..721ff92 100755
--- a/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/MidSide/MidSide.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7BED1F7FAD3F007AB60F</string>
+ <string>8B793CDA21F601C2006E9731</string>
<key>history</key>
<array>
- <string>8B9D6E101F7EF349007AB60F</string>
+ <string>8B9D7BED1F7FAD3F007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7BEE1F7FAD3F007AB60F</string>
+ <string>8B793CDB21F601C2006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7BEF1F7FAD3F007AB60F</string>
+ <string>8B793CDC21F601C2006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7BF01F7FAD3F007AB60F</string>
+ <string>8B793CDD21F601C2006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -654,7 +654,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461119.98817199</real>
+ <real>569770434.56493402</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -671,7 +671,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7BF11F7FAD3F007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/MidSide/MidSide.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/MidSide/source/MidSide.cpp b/plugins/MacVST/MidSide/source/MidSide.cpp
index bc37393..8f61cff 100755
--- a/plugins/MacVST/MidSide/source/MidSide.cpp
+++ b/plugins/MacVST/MidSide/source/MidSide.cpp
@@ -13,11 +13,8 @@ MidSide::MidSide(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/MidSide/source/MidSide.h b/plugins/MacVST/MidSide/source/MidSide.h
index 28b2ae7..4d139c8 100755
--- a/plugins/MacVST/MidSide/source/MidSide.h
+++ b/plugins/MacVST/MidSide/source/MidSide.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/MidSide/source/MidSideProc.cpp b/plugins/MacVST/MidSide/source/MidSideProc.cpp
index 2df14f4..cca7a5c 100755
--- a/plugins/MacVST/MidSide/source/MidSideProc.cpp
+++ b/plugins/MacVST/MidSide/source/MidSideProc.cpp
@@ -14,9 +14,6 @@ void MidSide::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -76,25 +73,14 @@ void MidSide::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
mid *= midgain;
side *= sidegain;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = mid;
*out2 = side;
@@ -113,9 +99,6 @@ void MidSide::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -175,25 +158,16 @@ void MidSide::processDoubleReplacing(double **inputs, double **outputs, VstInt32
mid *= midgain;
side *= sidegain;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = mid;
*out2 = side;
diff --git a/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser
index 33122fe..b951dba 100755
--- a/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.pbxuser
@@ -49,16 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 531745203;
- PBXWorkspaceStateSaveDate = 531745203;
+ PBXPerProjectTemplateStateSaveDate = 569770459;
+ PBXWorkspaceStateSaveDate = 569770459;
};
perUserProjectItems = {
8B6692F41FB1C728007B3434 /* PBXTextBookmark */ = 8B6692F41FB1C728007B3434 /* PBXTextBookmark */;
- 8B6692F61FB1C728007B3434 /* PBXTextBookmark */ = 8B6692F61FB1C728007B3434 /* PBXTextBookmark */;
8B67C7A21FA3B4CC008C64D6 /* PBXTextBookmark */ = 8B67C7A21FA3B4CC008C64D6 /* PBXTextBookmark */;
- 8BE0C0611FB1C9B7000B2082 /* PBXBookmark */ = 8BE0C0611FB1C9B7000B2082 /* PBXBookmark */;
+ 8B793CFA21F601E6006E9731 /* PBXTextBookmark */ = 8B793CFA21F601E6006E9731 /* PBXTextBookmark */;
8BE0C0701FB1C9E6000B2082 /* PBXTextBookmark */ = 8BE0C0701FB1C9E6000B2082 /* PBXTextBookmark */;
- 8BE0C0761FB1C9E6000B2082 /* PBXTextBookmark */ = 8BE0C0761FB1C9E6000B2082 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -74,9 +72,9 @@
};
245463B80991757100464AD3 /* NCSeventeen.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {859, 1092}}";
+ sepNavIntBoundsRect = "{{0, 0}, {817, 1105}}";
sepNavSelRange = "{2660, 0}";
- sepNavVisRange = "{2280, 147}";
+ sepNavVisRange = "{2320, 107}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
@@ -90,9 +88,9 @@
};
24D8286F09A914000093AEF8 /* NCSeventeenProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1250, 9984}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1250, 9802}}";
sepNavSelRange = "{1603, 0}";
- sepNavVisRange = "{15480, 1916}";
+ sepNavVisRange = "{15441, 2003}";
sepNavWindowFrame = "{{13, 39}, {1297, 839}}";
};
};
@@ -120,16 +118,6 @@
vrLen = 159;
vrLoc = 16026;
};
- 8B6692F61FB1C728007B3434 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 245463B80991757100464AD3 /* NCSeventeen.h */;
- name = "NCSeventeen.h: 69";
- rLen = 0;
- rLoc = 2660;
- rType = 0;
- vrLen = 258;
- vrLoc = 2169;
- };
8B67C7A21FA3B4CC008C64D6 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
@@ -140,29 +128,25 @@
vrLen = 399;
vrLoc = 10459;
};
- 8BE0C0611FB1C9B7000B2082 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 24D8286F09A914000093AEF8 /* NCSeventeenProc.cpp */;
- };
- 8BE0C0701FB1C9E6000B2082 /* PBXTextBookmark */ = {
+ 8B793CFA21F601E6006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* NCSeventeen.h */;
name = "NCSeventeen.h: 69";
rLen = 0;
rLoc = 2660;
rType = 0;
- vrLen = 147;
- vrLoc = 2280;
+ vrLen = 107;
+ vrLoc = 2320;
};
- 8BE0C0761FB1C9E6000B2082 /* PBXTextBookmark */ = {
+ 8BE0C0701FB1C9E6000B2082 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- fRef = 24D8286F09A914000093AEF8 /* NCSeventeenProc.cpp */;
- name = "NCSeventeenProc.cpp: 58";
+ fRef = 245463B80991757100464AD3 /* NCSeventeen.h */;
+ name = "NCSeventeen.h: 69";
rLen = 0;
- rLoc = 1603;
+ rLoc = 2660;
rType = 0;
- vrLen = 1916;
- vrLoc = 15480;
+ vrLen = 147;
+ vrLoc = 2280;
};
8D01CCC60486CAD60068D4B7 /* NCSeventeen */ = {
activeExec = 0;
diff --git a/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3
index 3b7ecb3..89e1157 100755
--- a/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/NCSeventeen/NCSeventeen.xcodeproj/christopherjohnson.perspectivev3
@@ -222,48 +222,7 @@
</dict>
</array>
<key>OpenEditors</key>
- <array>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8BE0C0741FB1C9E6000B2082</string>
- <key>PBXProjectModuleLabel</key>
- <string>NCSeventeenProc.cpp</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8BE0C0751FB1C9E6000B2082</string>
- <key>PBXProjectModuleLabel</key>
- <string>NCSeventeenProc.cpp</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>8BE0C0761FB1C9E6000B2082</string>
- <key>history</key>
- <array>
- <string>8BE0C0611FB1C9B7000B2082</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {1297, 742}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>13 95 1297 783 0 0 1440 878 </string>
- </dict>
- </dict>
- </array>
+ <array/>
<key>PerspectiveWidths</key>
<array>
<integer>810</integer>
@@ -392,12 +351,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BE0C0701FB1C9E6000B2082</string>
+ <string>8B793CFA21F601E6006E9731</string>
<key>history</key>
<array>
<string>8B67C7A21FA3B4CC008C64D6</string>
<string>8B6692F41FB1C728007B3434</string>
- <string>8B6692F61FB1C728007B3434</string>
+ <string>8BE0C0701FB1C9E6000B2082</string>
</array>
</dict>
<key>SplitCount</key>
@@ -411,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 102}}</string>
+ <string>{{0, 0}, {603, 86}}</string>
<key>RubberWindowFrame</key>
<string>249 231 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>102pt</string>
+ <string>86pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>355pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -436,7 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 312}}</string>
+ <string>{{10, 27}, {603, 328}}</string>
<key>RubberWindowFrame</key>
<string>249 231 810 487 0 0 1440 878 </string>
</dict>
@@ -520,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BE0C0711FB1C9E6000B2082</string>
+ <string>8B793CFB21F601E6006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BE0C0721FB1C9E6000B2082</string>
+ <string>8B793CFC21F601E6006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BE0C0731FB1C9E6000B2082</string>
+ <string>8B793CFD21F601E6006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -677,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>531745254.79790598</real>
+ <real>569770470.40799499</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -695,7 +654,6 @@
<key>WindowOrderList</key>
<array>
<string>/Users/christopherjohnson/Desktop/MacVST/NCSeventeen/NCSeventeen.xcodeproj</string>
- <string>8BE0C0741FB1C9E6000B2082</string>
</array>
<key>WindowString</key>
<string>249 231 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/NCSeventeen/source/NCSeventeen.cpp b/plugins/MacVST/NCSeventeen/source/NCSeventeen.cpp
index 9bc129a..409f983 100755
--- a/plugins/MacVST/NCSeventeen/source/NCSeventeen.cpp
+++ b/plugins/MacVST/NCSeventeen/source/NCSeventeen.cpp
@@ -31,11 +31,8 @@ NCSeventeen::NCSeventeen(audioMasterCallback audioMaster) :
flip = false;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/NCSeventeen/source/NCSeventeen.h b/plugins/MacVST/NCSeventeen/source/NCSeventeen.h
index 01179e9..b3ecd94 100755
--- a/plugins/MacVST/NCSeventeen/source/NCSeventeen.h
+++ b/plugins/MacVST/NCSeventeen/source/NCSeventeen.h
@@ -70,11 +70,8 @@ private:
bool flip;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/NCSeventeen/source/NCSeventeenProc.cpp b/plugins/MacVST/NCSeventeen/source/NCSeventeenProc.cpp
index b2f2aa1..e124cb5 100755
--- a/plugins/MacVST/NCSeventeen/source/NCSeventeenProc.cpp
+++ b/plugins/MacVST/NCSeventeen/source/NCSeventeenProc.cpp
@@ -19,9 +19,6 @@ void NCSeventeen::processReplacing(float **inputs, float **outputs, VstInt32 sam
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double IIRscaleback = 0.0004716;
double bassScaleback = 0.0002364;
@@ -347,25 +344,14 @@ void NCSeventeen::processReplacing(float **inputs, float **outputs, VstInt32 sam
if (inputSampleR < -0.95) inputSampleR = -0.95;
//iron bar
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -389,9 +375,6 @@ void NCSeventeen::processDoubleReplacing(double **inputs, double **outputs, VstI
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double IIRscaleback = 0.0004716;
double bassScaleback = 0.0002364;
@@ -716,25 +699,16 @@ void NCSeventeen::processDoubleReplacing(double **inputs, double **outputs, VstI
if (inputSampleR < -0.95) inputSampleR = -0.95;
//iron bar
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.pbxuser
index bd35d43..6370236 100755
--- a/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538707186;
- PBXWorkspaceStateSaveDate = 538707186;
+ PBXPerProjectTemplateStateSaveDate = 569770541;
+ PBXWorkspaceStateSaveDate = 569770541;
};
perUserProjectItems = {
8B4E5870201C0C8B00B5DC2A /* PBXTextBookmark */ = 8B4E5870201C0C8B00B5DC2A /* PBXTextBookmark */;
- 8B7ADC6220157443005F895F /* PBXTextBookmark */ = 8B7ADC6220157443005F895F /* PBXTextBookmark */;
+ 8B793D1A21F60235006E9731 /* PBXTextBookmark */ = 8B793D1A21F60235006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -70,7 +70,7 @@
};
245463B80991757100464AD3 /* Noise.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {859, 1170}}";
+ sepNavIntBoundsRect = "{{0, 0}, {523, 1300}}";
sepNavSelRange = "{2962, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{895, 11}, {895, 831}}";
@@ -116,15 +116,15 @@
vrLen = 0;
vrLoc = 0;
};
- 8B7ADC6220157443005F895F /* PBXTextBookmark */ = {
+ 8B793D1A21F60235006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* Noise.h */;
- name = "Noise.h: 95";
+ name = "Noise.h: 93";
rLen = 0;
rLoc = 2962;
rType = 0;
- vrLen = 638;
- vrLoc = 1696;
+ vrLen = 0;
+ vrLoc = 0;
};
8D01CCC60486CAD60068D4B7 /* Noise */ = {
activeExec = 0;
diff --git a/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3
index cddeac8..9dc310c 100755
--- a/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Noise/Noise.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4E5870201C0C8B00B5DC2A</string>
+ <string>8B793D1A21F60235006E9731</string>
<key>history</key>
<array>
- <string>8B7ADC6220157443005F895F</string>
+ <string>8B4E5870201C0C8B00B5DC2A</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {454, 9}}</string>
+ <string>{{0, 0}, {454, 0}}</string>
<key>RubberWindowFrame</key>
<string>26 91 661 394 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>9pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>348pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {454, 312}}</string>
+ <string>{{10, 27}, {454, 321}}</string>
<key>RubberWindowFrame</key>
<string>26 91 661 394 0 0 1440 878 </string>
</dict>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E5871201C0C8B00B5DC2A</string>
+ <string>8B793D1B21F60235006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E5872201C0C8B00B5DC2A</string>
+ <string>8B793D1C21F60235006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B4E5873201C0C8B00B5DC2A</string>
+ <string>8B793D1D21F60235006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538709131.54011202</real>
+ <real>569770549.64791</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
diff --git a/plugins/MacVST/Noise/source/Noise.cpp b/plugins/MacVST/Noise/source/Noise.cpp
index 76d00c8..d955a29 100755
--- a/plugins/MacVST/Noise/source/Noise.cpp
+++ b/plugins/MacVST/Noise/source/Noise.cpp
@@ -36,11 +36,8 @@ Noise::Noise(audioMasterCallback audioMaster) :
flipR = false;
filterflip = false;
for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;}
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Noise/source/Noise.h b/plugins/MacVST/Noise/source/Noise.h
index 0ee4d76..67c32bc 100755
--- a/plugins/MacVST/Noise/source/Noise.h
+++ b/plugins/MacVST/Noise/source/Noise.h
@@ -81,11 +81,8 @@ private:
double f[11];
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Noise/source/NoiseProc.cpp b/plugins/MacVST/Noise/source/NoiseProc.cpp
index e185120..31cba20 100755
--- a/plugins/MacVST/Noise/source/NoiseProc.cpp
+++ b/plugins/MacVST/Noise/source/NoiseProc.cpp
@@ -104,9 +104,6 @@ void Noise::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
f[9] /= overallscale;
//and now it's neatly scaled, too
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
@@ -299,25 +296,14 @@ void Noise::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
//sometimes I'm really tired and can't do stuff, and I remember trying to simplify this
//and breaking it somehow. So, there ya go, strange obtuse code.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -426,9 +412,6 @@ void Noise::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
f[9] /= overallscale;
//and now it's neatly scaled, too
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -619,25 +602,16 @@ void Noise::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
//sometimes I'm really tired and can't do stuff, and I remember trying to simplify this
//and breaking it somehow. So, there ya go, strange obtuse code.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser
index 2cc6a7f..b0c63ea 100755
--- a/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* NonlinearSpace */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541896738;
- PBXWorkspaceStateSaveDate = 541896738;
+ PBXPerProjectTemplateStateSaveDate = 569770570;
+ PBXWorkspaceStateSaveDate = 569770570;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* NonlinearSpace */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3
index cbd5886..6658511 100755
--- a/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B945E71204CB08000DFB653</string>
+ <string>8B793D3A21F60255006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B945E72204CB08000DFB653</string>
+ <string>8B793D3B21F60255006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B945E73204CB08000DFB653</string>
+ <string>8B793D3C21F60255006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541896832.40515304</real>
+ <real>569770581.31031001</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
diff --git a/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/project.pbxproj b/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/project.pbxproj
index 745dea7..72507dd 100755
--- a/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/NonlinearSpace/NonlinearSpace.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* NonlinearSpace */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "NonlinearSpace" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* NonlinearSpace */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.cpp b/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.cpp
index 6941556..eb05bc3 100755
--- a/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.cpp
+++ b/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.cpp
@@ -195,11 +195,8 @@ NonlinearSpace::NonlinearSpace(audioMasterCallback audioMaster) :
countdown = -1;
flip = true;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.h b/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.h
index e915b21..dbaa0b3 100755
--- a/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.h
+++ b/plugins/MacVST/NonlinearSpace/source/NonlinearSpace.h
@@ -208,11 +208,8 @@ private:
double nonlin;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/NonlinearSpace/source/NonlinearSpaceProc.cpp b/plugins/MacVST/NonlinearSpace/source/NonlinearSpaceProc.cpp
index 597e184..f9df9fc 100755
--- a/plugins/MacVST/NonlinearSpace/source/NonlinearSpaceProc.cpp
+++ b/plugins/MacVST/NonlinearSpace/source/NonlinearSpaceProc.cpp
@@ -14,9 +14,6 @@ void NonlinearSpace::processReplacing(float **inputs, float **outputs, VstInt32
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -746,25 +743,14 @@ void NonlinearSpace::processReplacing(float **inputs, float **outputs, VstInt32
inputSampleR += drySampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
flip = !flip;
*out1 = inputSampleL;
@@ -784,9 +770,6 @@ void NonlinearSpace::processDoubleReplacing(double **inputs, double **outputs, V
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -1516,25 +1499,16 @@ void NonlinearSpace::processDoubleReplacing(double **inputs, double **outputs, V
inputSampleR += drySampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
flip = !flip;
*out1 = inputSampleL;
diff --git a/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser
index 0de16d2..baca580 100755
--- a/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 547779178;
- PBXWorkspaceStateSaveDate = 547779178;
+ PBXPerProjectTemplateStateSaveDate = 557696448;
+ PBXWorkspaceStateSaveDate = 557696448;
};
perUserProjectItems = {
8B7E3DCF20A6735C00482CB5 /* PBXTextBookmark */ = 8B7E3DCF20A6735C00482CB5 /* PBXTextBookmark */;
8B7E3DD020A6735C00482CB5 /* PBXTextBookmark */ = 8B7E3DD020A6735C00482CB5 /* PBXTextBookmark */;
- 8B7E3DD120A6735C00482CB5 /* PBXTextBookmark */ = 8B7E3DD120A6735C00482CB5 /* PBXTextBookmark */;
- 8B7E3DD220A6735C00482CB5 /* PBXTextBookmark */ = 8B7E3DD220A6735C00482CB5 /* PBXTextBookmark */;
+ 8B91401D213DC60B00BA6EEC /* PBXTextBookmark */ = 8B91401D213DC60B00BA6EEC /* PBXTextBookmark */;
+ 8B91401E213DC60B00BA6EEC /* PBXTextBookmark */ = 8B91401E213DC60B00BA6EEC /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -88,10 +88,10 @@
};
24D8286F09A914000093AEF8 /* NotJustAnotherDitherProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {712, 6383}}";
+ sepNavIntBoundsRect = "{{0, 0}, {677, 6474}}";
sepNavSelRange = "{2713, 0}";
- sepNavVisRange = "{1640, 303}";
- sepNavWindowFrame = "{{624, 47}, {895, 831}}";
+ sepNavVisRange = "{1671, 272}";
+ sepNavWindowFrame = "{{545, 47}, {895, 831}}";
};
};
8B02375E1D42B1C400E1E8C8 /* Source Control */ = {
@@ -128,25 +128,25 @@
vrLen = 451;
vrLoc = 1431;
};
- 8B7E3DD120A6735C00482CB5 /* PBXTextBookmark */ = {
+ 8B91401D213DC60B00BA6EEC /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* NotJustAnotherDitherProc.cpp */;
name = "NotJustAnotherDitherProc.cpp: 73";
rLen = 0;
rLoc = 2713;
rType = 0;
- vrLen = 303;
- vrLoc = 1640;
+ vrLen = 272;
+ vrLoc = 1671;
};
- 8B7E3DD220A6735C00482CB5 /* PBXTextBookmark */ = {
+ 8B91401E213DC60B00BA6EEC /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* NotJustAnotherDitherProc.cpp */;
name = "NotJustAnotherDitherProc.cpp: 73";
rLen = 0;
rLoc = 2713;
rType = 0;
- vrLen = 303;
- vrLoc = 1640;
+ vrLen = 272;
+ vrLoc = 1671;
};
8D01CCC60486CAD60068D4B7 /* NotJustAnotherDither */ = {
activeExec = 0;
diff --git a/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3
index 0c4cfd9..0bb2bde 100755
--- a/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>258</real>
</array>
<key>RubberWindowFrame</key>
- <string>639 259 810 487 0 0 1440 878 </string>
+ <string>630 259 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,12 +351,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B7E3DD220A6735C00482CB5</string>
+ <string>8B91401E213DC60B00BA6EEC</string>
<key>history</key>
<array>
<string>8B7E3DCF20A6735C00482CB5</string>
<string>8B7E3DD020A6735C00482CB5</string>
- <string>8B7E3DD120A6735C00482CB5</string>
+ <string>8B91401D213DC60B00BA6EEC</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {530, 132}}</string>
+ <string>{{0, 0}, {530, 117}}</string>
<key>RubberWindowFrame</key>
- <string>639 259 810 487 0 0 1440 878 </string>
+ <string>630 259 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,9 +395,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {530, 282}}</string>
+ <string>{{10, 27}, {530, 297}}</string>
<key>RubberWindowFrame</key>
- <string>639 259 810 487 0 0 1440 878 </string>
+ <string>630 259 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B7E3DD320A6735C00482CB5</string>
+ <string>8B91401F213DC60B00BA6EEC</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B7E3DD420A6735C00482CB5</string>
+ <string>8B914020213DC60B00BA6EEC</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B7E3DD520A6735C00482CB5</string>
+ <string>8B914021213DC60B00BA6EEC</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>547779420.72387397</real>
+ <real>557696523.36446095</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,11 +653,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B7E3DD620A6735C00482CB5</string>
+ <string>8B914022213DC60B00BA6EEC</string>
<string>/Users/christopherjohnson/Desktop/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>639 259 810 487 0 0 1440 878 </string>
+ <string>630 259 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser
index a659ad8..1f3a7c9 100755
--- a/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* OneCornerClip */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 541882923;
- PBXWorkspaceStateSaveDate = 541882923;
+ PBXPerProjectTemplateStateSaveDate = 569770606;
+ PBXWorkspaceStateSaveDate = 569770606;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* OneCornerClip */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3
index 22f0aea..07b0810 100755
--- a/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -384,6 +386,8 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>19 372 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -438,8 +442,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>19 372 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -467,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B181A2A204C7A3200516BEE</string>
+ <string>8B793D5921F60278006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B181A2B204C7A3200516BEE</string>
+ <string>8B793D5A21F60278006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B181A2C204C7A3200516BEE</string>
+ <string>8B793D5B21F60278006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -624,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>541885613.92280805</real>
+ <real>569770616.13496995</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -641,9 +643,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B181A59204C84AD00516BEE</string>
- <string>8B181A5A204C84AD00516BEE</string>
- <string>/Users/christopherjohnson/Desktop/OneCornerClip/OneCornerClip.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/OneCornerClip/OneCornerClip.xcodeproj</string>
</array>
<key>WindowString</key>
<string>19 372 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/project.pbxproj b/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/project.pbxproj
index f6df3c9..8f62a88 100755
--- a/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/OneCornerClip/OneCornerClip.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* OneCornerClip */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "OneCornerClip" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* OneCornerClip */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/OneCornerClip/source/OneCornerClip.cpp b/plugins/MacVST/OneCornerClip/source/OneCornerClip.cpp
index bf8828e..59e2824 100755
--- a/plugins/MacVST/OneCornerClip/source/OneCornerClip.cpp
+++ b/plugins/MacVST/OneCornerClip/source/OneCornerClip.cpp
@@ -25,11 +25,8 @@ OneCornerClip::OneCornerClip(audioMasterCallback audioMaster) :
limitPosR = 0.0;
limitNegR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/OneCornerClip/source/OneCornerClip.h b/plugins/MacVST/OneCornerClip/source/OneCornerClip.h
index 07f480a..4f039fa 100755
--- a/plugins/MacVST/OneCornerClip/source/OneCornerClip.h
+++ b/plugins/MacVST/OneCornerClip/source/OneCornerClip.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/MacVST/OneCornerClip/source/OneCornerClipProc.cpp b/plugins/MacVST/OneCornerClip/source/OneCornerClipProc.cpp
index 0398b60..c45c69b 100755
--- a/plugins/MacVST/OneCornerClip/source/OneCornerClipProc.cpp
+++ b/plugins/MacVST/OneCornerClip/source/OneCornerClipProc.cpp
@@ -17,9 +17,6 @@ void OneCornerClip::processReplacing(float **inputs, float **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputGain = pow(10.0,(((A*36.0)-12.0)/20.0));
double posThreshold = B;
@@ -157,25 +154,14 @@ void OneCornerClip::processReplacing(float **inputs, float **outputs, VstInt32 s
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
if (clipEngage == false)
{
@@ -204,9 +190,6 @@ void OneCornerClip::processDoubleReplacing(double **inputs, double **outputs, Vs
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputGain = pow(10.0,(((A*36.0)-12.0)/20.0));
double posThreshold = B;
@@ -345,25 +328,16 @@ void OneCornerClip::processDoubleReplacing(double **inputs, double **outputs, Vs
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
if (clipEngage == false)
{
diff --git a/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser
index 1d8c78b..37b5241 100755
--- a/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538696868;
- PBXWorkspaceStateSaveDate = 538696868;
+ PBXPerProjectTemplateStateSaveDate = 569770752;
+ PBXWorkspaceStateSaveDate = 569770752;
};
perUserProjectItems = {
- 8B4E5710201BE13900B5DC2A /* PBXTextBookmark */ = 8B4E5710201BE13900B5DC2A /* PBXTextBookmark */;
8B4E574B201BE1E100B5DC2A /* PBXTextBookmark */ = 8B4E574B201BE1E100B5DC2A /* PBXTextBookmark */;
+ 8B793D7821F60308006E9731 /* PBXTextBookmark */ = 8B793D7821F60308006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -62,9 +62,9 @@
};
2407DEB6089929BA00EB68BF /* PDBuss.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 1742}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 1820}}";
sepNavSelRange = "{2794, 0}";
- sepNavVisRange = "{2616, 272}";
+ sepNavVisRange = "{2688, 198}";
sepNavWindowFrame = "{{337, 47}, {895, 831}}";
};
};
@@ -106,7 +106,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B4E5710201BE13900B5DC2A /* PBXTextBookmark */ = {
+ 8B4E574B201BE1E100B5DC2A /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* PDBuss.cpp */;
name = "PDBuss.cpp: 85";
@@ -116,15 +116,15 @@
vrLen = 272;
vrLoc = 2616;
};
- 8B4E574B201BE1E100B5DC2A /* PBXTextBookmark */ = {
+ 8B793D7821F60308006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* PDBuss.cpp */;
- name = "PDBuss.cpp: 85";
+ name = "PDBuss.cpp: 83";
rLen = 0;
rLoc = 2794;
rType = 0;
- vrLen = 272;
- vrLoc = 2616;
+ vrLen = 198;
+ vrLoc = 2688;
};
8D01CCC60486CAD60068D4B7 /* PDBuss */ = {
activeExec = 0;
diff --git a/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3
index 419ed77..2dcefe9 100755
--- a/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/PDBuss/PDBuss.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4E574B201BE1E100B5DC2A</string>
+ <string>8B793D7821F60308006E9731</string>
<key>history</key>
<array>
- <string>8B4E5710201BE13900B5DC2A</string>
+ <string>8B4E574B201BE1E100B5DC2A</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
<string>27 370 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>27 370 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -448,8 +450,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>27 370 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E574C201BE1E100B5DC2A</string>
+ <string>8B793D7921F60308006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E574D201BE1E100B5DC2A</string>
+ <string>8B793D7A21F60308006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B4E574E201BE1E100B5DC2A</string>
+ <string>8B793D7B21F60308006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538698209.87022996</real>
+ <real>569770760.80971301</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/PDBuss/PDBuss.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/PDBuss/PDBuss.xcodeproj</string>
</array>
<key>WindowString</key>
<string>27 370 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/PDBuss/source/PDBuss.cpp b/plugins/MacVST/PDBuss/source/PDBuss.cpp
index 323d8cf..8b31d8b 100755
--- a/plugins/MacVST/PDBuss/source/PDBuss.cpp
+++ b/plugins/MacVST/PDBuss/source/PDBuss.cpp
@@ -21,11 +21,8 @@ PDBuss::PDBuss(audioMasterCallback audioMaster) :
previousSampleL = 0.0;
previousSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/PDBuss/source/PDBuss.h b/plugins/MacVST/PDBuss/source/PDBuss.h
index 5c7a504..3e6d9b8 100755
--- a/plugins/MacVST/PDBuss/source/PDBuss.h
+++ b/plugins/MacVST/PDBuss/source/PDBuss.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double gainchase;
double settingchase;
diff --git a/plugins/MacVST/PDBuss/source/PDBussProc.cpp b/plugins/MacVST/PDBuss/source/PDBussProc.cpp
index c099057..6da8fa0 100755
--- a/plugins/MacVST/PDBuss/source/PDBussProc.cpp
+++ b/plugins/MacVST/PDBuss/source/PDBussProc.cpp
@@ -13,9 +13,6 @@ void PDBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double intensity = B;
@@ -122,25 +119,14 @@ void PDBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -158,9 +144,6 @@ void PDBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double intensity = B;
@@ -267,25 +250,16 @@ void PDBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser
index ed7f54d..80f815a 100755
--- a/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538696873;
- PBXWorkspaceStateSaveDate = 538696873;
+ PBXPerProjectTemplateStateSaveDate = 569770782;
+ PBXWorkspaceStateSaveDate = 569770782;
};
perUserProjectItems = {
8B4E574F201BE1E300B5DC2A /* PBXTextBookmark */ = 8B4E574F201BE1E300B5DC2A /* PBXTextBookmark */;
- 8B4E5750201BE1E300B5DC2A /* XCBuildMessageTextBookmark */ = 8B4E5750201BE1E300B5DC2A /* XCBuildMessageTextBookmark */;
8B4E5751201BE1E300B5DC2A /* PBXTextBookmark */ = 8B4E5751201BE1E300B5DC2A /* PBXTextBookmark */;
+ 8B793D9821F60328006E9731 /* PBXTextBookmark */ = 8B793D9821F60328006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -87,9 +87,9 @@
};
24D8286F09A914000093AEF8 /* PDChannelProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 3705}}";
+ sepNavIntBoundsRect = "{{0, 0}, {614, 3341}}";
sepNavSelRange = "{3644, 0}";
- sepNavVisRange = "{3544, 467}";
+ sepNavVisRange = "{3529, 442}";
sepNavWindowFrame = "{{42, 47}, {895, 831}}";
};
};
@@ -117,15 +117,6 @@
vrLen = 244;
vrLoc = 227;
};
- 8B4E5750201BE1E300B5DC2A /* XCBuildMessageTextBookmark */ = {
- isa = PBXTextBookmark;
- comments = "'previousSampleR' was not declared in this scope";
- fRef = 24D8286F09A914000093AEF8 /* PDChannelProc.cpp */;
- fallbackIsa = XCBuildMessageTextBookmark;
- rLen = 1;
- rLoc = 105;
- rType = 1;
- };
8B4E5751201BE1E300B5DC2A /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* PDChannelProc.cpp */;
@@ -136,6 +127,16 @@
vrLen = 467;
vrLoc = 3544;
};
+ 8B793D9821F60328006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* PDChannelProc.cpp */;
+ name = "PDChannelProc.cpp: 104";
+ rLen = 0;
+ rLoc = 3644;
+ rType = 0;
+ vrLen = 442;
+ vrLoc = 3529;
+ };
8D01CCC60486CAD60068D4B7 /* PDChannel */ = {
activeExec = 0;
};
diff --git a/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3
index 524cd88..4ed8256 100755
--- a/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/PDChannel/PDChannel.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -349,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B4E5751201BE1E300B5DC2A</string>
+ <string>8B793D9821F60328006E9731</string>
<key>history</key>
<array>
<string>8B4E574F201BE1E300B5DC2A</string>
- <string>8B4E5750201BE1E300B5DC2A</string>
+ <string>8B4E5751201BE1E300B5DC2A</string>
</array>
</dict>
<key>SplitCount</key>
@@ -367,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
<string>24 89 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -392,7 +394,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>24 89 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -447,8 +451,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>24 89 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -476,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E5752201BE1E300B5DC2A</string>
+ <string>8B793D9921F60328006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E5753201BE1E300B5DC2A</string>
+ <string>8B793D9A21F60328006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B4E5754201BE1E300B5DC2A</string>
+ <string>8B793D9B21F60328006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -633,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538698211.51852405</real>
+ <real>569770792.98222196</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -650,7 +652,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/PDChannel/PDChannel.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/PDChannel/PDChannel.xcodeproj</string>
</array>
<key>WindowString</key>
<string>24 89 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/PDChannel/source/PDChannel.cpp b/plugins/MacVST/PDChannel/source/PDChannel.cpp
index d300fc8..aef639d 100755
--- a/plugins/MacVST/PDChannel/source/PDChannel.cpp
+++ b/plugins/MacVST/PDChannel/source/PDChannel.cpp
@@ -21,11 +21,8 @@ PDChannel::PDChannel(audioMasterCallback audioMaster) :
previousSampleL = 0.0;
previousSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/PDChannel/source/PDChannel.h b/plugins/MacVST/PDChannel/source/PDChannel.h
index e92117c..ea233e2 100755
--- a/plugins/MacVST/PDChannel/source/PDChannel.h
+++ b/plugins/MacVST/PDChannel/source/PDChannel.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double gainchase;
double settingchase;
diff --git a/plugins/MacVST/PDChannel/source/PDChannelProc.cpp b/plugins/MacVST/PDChannel/source/PDChannelProc.cpp
index d8f79df..fb5932d 100755
--- a/plugins/MacVST/PDChannel/source/PDChannelProc.cpp
+++ b/plugins/MacVST/PDChannel/source/PDChannelProc.cpp
@@ -13,9 +13,6 @@ void PDChannel::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double intensity = B;
@@ -115,25 +112,14 @@ void PDChannel::processReplacing(float **inputs, float **outputs, VstInt32 sampl
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -151,9 +137,6 @@ void PDChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double intensity = B;
@@ -253,25 +236,16 @@ void PDChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser
index 912d676..5bc2f16 100755
--- a/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461482;
- PBXWorkspaceStateSaveDate = 528461482;
+ PBXPerProjectTemplateStateSaveDate = 569770816;
+ PBXWorkspaceStateSaveDate = 569770816;
};
perUserProjectItems = {
- 8B9D6EC41F7EF3B7007AB60F /* PBXTextBookmark */ = 8B9D6EC41F7EF3B7007AB60F /* PBXTextBookmark */;
+ 8B793DB821F60356006E9731 /* PBXTextBookmark */ = 8B793DB821F60356006E9731 /* PBXTextBookmark */;
8B9D7CAA1F7FAEC4007AB60F /* PBXTextBookmark */ = 8B9D7CAA1F7FAEC4007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -62,7 +62,7 @@
};
2407DEB6089929BA00EB68BF /* PhaseNudge.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 1768}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 1703}}";
sepNavSelRange = "{565, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
@@ -106,7 +106,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6EC41F7EF3B7007AB60F /* PBXTextBookmark */ = {
+ 8B793DB821F60356006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* PhaseNudge.cpp */;
name = "PhaseNudge.cpp: 18";
diff --git a/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3
index 987bfeb..0540e81 100755
--- a/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/PhaseNudge/PhaseNudge.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7CAA1F7FAEC4007AB60F</string>
+ <string>8B793DB821F60356006E9731</string>
<key>history</key>
<array>
- <string>8B9D6EC41F7EF3B7007AB60F</string>
+ <string>8B9D7CAA1F7FAEC4007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7CAB1F7FAEC4007AB60F</string>
+ <string>8B793DB921F60356006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7CAC1F7FAEC4007AB60F</string>
+ <string>8B793DBA21F60356006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7CAD1F7FAEC4007AB60F</string>
+ <string>8B793DBB21F60356006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461508.86837101</real>
+ <real>569770838.654899</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7CAE1F7FAEC4007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/PhaseNudge/PhaseNudge.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/PhaseNudge/source/PhaseNudge.cpp b/plugins/MacVST/PhaseNudge/source/PhaseNudge.cpp
index 8a77175..e9e5c8d 100755
--- a/plugins/MacVST/PhaseNudge/source/PhaseNudge.cpp
+++ b/plugins/MacVST/PhaseNudge/source/PhaseNudge.cpp
@@ -16,11 +16,8 @@ PhaseNudge::PhaseNudge(audioMasterCallback audioMaster) :
B = 1.0;
for(int count = 0; count < 1502; count++) {dL[count] = 0.0; dR[count] = 0.0;}
one = 1; maxdelay = 9001;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/PhaseNudge/source/PhaseNudge.h b/plugins/MacVST/PhaseNudge/source/PhaseNudge.h
index cba0ac8..2926ccb 100755
--- a/plugins/MacVST/PhaseNudge/source/PhaseNudge.h
+++ b/plugins/MacVST/PhaseNudge/source/PhaseNudge.h
@@ -57,11 +57,8 @@ private:
double dR[1503];
int one, maxdelay;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/PhaseNudge/source/PhaseNudgeProc.cpp b/plugins/MacVST/PhaseNudge/source/PhaseNudgeProc.cpp
index 494c841..150ecd5 100755
--- a/plugins/MacVST/PhaseNudge/source/PhaseNudgeProc.cpp
+++ b/plugins/MacVST/PhaseNudge/source/PhaseNudgeProc.cpp
@@ -14,9 +14,6 @@ void PhaseNudge::processReplacing(float **inputs, float **outputs, VstInt32 samp
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int allpasstemp;
double outallpass = 0.618033988749894848204586; //golden ratio!
@@ -136,25 +133,14 @@ void PhaseNudge::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (drySampleR * dry)+(inputSampleR * wet);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -173,9 +159,6 @@ void PhaseNudge::processDoubleReplacing(double **inputs, double **outputs, VstIn
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int allpasstemp;
double outallpass = 0.618033988749894848204586; //golden ratio!
@@ -294,25 +277,16 @@ void PhaseNudge::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (drySampleR * dry)+(inputSampleR * wet);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.pbxuser
index 1e91a67..5dc4070 100755
--- a/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.pbxuser
@@ -51,11 +51,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461517;
- PBXWorkspaceStateSaveDate = 528461517;
+ PBXPerProjectTemplateStateSaveDate = 569770893;
+ PBXWorkspaceStateSaveDate = 569770893;
};
perUserProjectItems = {
- 8B9D6EEE1F7EF3E2007AB60F /* PBXTextBookmark */ = 8B9D6EEE1F7EF3E2007AB60F /* PBXTextBookmark */;
+ 8B793DE421F603B1006E9731 /* PBXTextBookmark */ = 8B793DE421F603B1006E9731 /* PBXTextBookmark */;
8B9D7CCC1F7FAEE4007AB60F /* PBXTextBookmark */ = 8B9D7CCC1F7FAEE4007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -64,17 +64,17 @@
};
2407DEB6089929BA00EB68BF /* Point.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1924}}";
- sepNavSelRange = "{4284, 0}";
- sepNavVisRange = "{3036, 2173}";
- sepNavWindowFrame = "{{63, 36}, {895, 831}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1963}}";
+ sepNavSelRange = "{618, 0}";
+ sepNavVisRange = "{0, 1832}";
+ sepNavWindowFrame = "{{63, 39}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Point.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 949}}";
- sepNavSelRange = "{2638, 0}";
- sepNavVisRange = "{268, 2297}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 988}}";
+ sepNavSelRange = "{2450, 0}";
+ sepNavVisRange = "{389, 2251}";
sepNavWindowFrame = "{{8, 41}, {895, 831}}";
};
};
@@ -88,7 +88,7 @@
};
24D8286F09A914000093AEF8 /* PointProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 4030}}";
+ sepNavIntBoundsRect = "{{0, 0}, {670, 3783}}";
sepNavSelRange = "{5732, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{458, 47}, {895, 831}}";
@@ -108,10 +108,10 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6EEE1F7EF3E2007AB60F /* PBXTextBookmark */ = {
+ 8B793DE421F603B1006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* PointProc.cpp */;
- name = "PointProc.cpp: 187";
+ name = "PointProc.cpp: 181";
rLen = 0;
rLoc = 5732;
rType = 0;
diff --git a/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.perspectivev3
index f8109c7..384a575 100755
--- a/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Point/Point.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7CCC1F7FAEE4007AB60F</string>
+ <string>8B793DE421F603B1006E9731</string>
<key>history</key>
<array>
- <string>8B9D6EEE1F7EF3E2007AB60F</string>
+ <string>8B9D7CCC1F7FAEE4007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>304 344 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
- <key>RubberWindowFrame</key>
- <string>304 344 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 414}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -449,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>304 344 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7CCD1F7FAEE4007AB60F</string>
+ <string>8B793DE521F603B1006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7CCE1F7FAEE4007AB60F</string>
+ <string>8B793DE621F603B1006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7CCF1F7FAEE4007AB60F</string>
+ <string>8B793DE721F603B1006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -654,7 +654,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461540.135059</real>
+ <real>569770929.49119902</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -671,7 +671,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7CD01F7FAEE4007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Point/Point.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Point/source/Point.cpp b/plugins/MacVST/Point/source/Point.cpp
index 22885b5..f795470 100755
--- a/plugins/MacVST/Point/source/Point.cpp
+++ b/plugins/MacVST/Point/source/Point.cpp
@@ -24,10 +24,8 @@ Point::Point(audioMasterCallback audioMaster) :
nibBR = 0.0;
nobBR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/MacVST/Point/source/Point.h b/plugins/MacVST/Point/source/Point.h
index 12c8001..ff898cb 100755
--- a/plugins/MacVST/Point/source/Point.h
+++ b/plugins/MacVST/Point/source/Point.h
@@ -54,10 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool fpFlip;
//default stuff
double nibAL;
diff --git a/plugins/MacVST/Point/source/PointProc.cpp b/plugins/MacVST/Point/source/PointProc.cpp
index a00263d..a3bbe3c 100755
--- a/plugins/MacVST/Point/source/PointProc.cpp
+++ b/plugins/MacVST/Point/source/PointProc.cpp
@@ -27,9 +27,6 @@ void Point::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double nibnobFactor = 0.0; //start with the fallthrough value, why not
double absolute;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -128,26 +125,16 @@ void Point::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
}
}
inputSampleR *= nibnobFactor;
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -179,9 +166,6 @@ void Point::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double nibnobFactor = 0.0; //start with the fallthrough value, why not
double absolute;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -280,26 +264,18 @@ void Point::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
}
}
inputSampleR *= nibnobFactor;
-
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.pbxuser
index 899cc09..f19a7b1 100755
--- a/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* Pop */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 557537791;
- PBXWorkspaceStateSaveDate = 557537791;
+ PBXPerProjectTemplateStateSaveDate = 569770952;
+ PBXWorkspaceStateSaveDate = 569770952;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* Pop */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3
index 85b0e48..58d4d71 100755
--- a/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Pop/Pop.xcodeproj/christopherjohnson.perspectivev3
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B6DBAC4213B60BA00E44739</string>
+ <string>8B793DFA21F603D1006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B6DBAC5213B60BA00E44739</string>
+ <string>8B793DFB21F603D1006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B6DBAC6213B60BA00E44739</string>
+ <string>8B793DFC21F603D1006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>557539514.49375904</real>
+ <real>569770961.06224799</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,8 +643,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B6DBAC7213B60BA00E44739</string>
- <string>/Users/christopherjohnson/Desktop/Pop/Pop.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/Pop/Pop.xcodeproj</string>
</array>
<key>WindowString</key>
<string>181 239 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/Pop/Pop.xcodeproj/project.pbxproj b/plugins/MacVST/Pop/Pop.xcodeproj/project.pbxproj
index a8ba4b6..1a2bcdf 100755
--- a/plugins/MacVST/Pop/Pop.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/Pop/Pop.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* Pop */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Pop" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* Pop */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/Pop/source/PopProc.cpp b/plugins/MacVST/Pop/source/PopProc.cpp
index ae7dd4d..baa9420 100755
--- a/plugins/MacVST/Pop/source/PopProc.cpp
+++ b/plugins/MacVST/Pop/source/PopProc.cpp
@@ -268,18 +268,14 @@ void Pop::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
inputSampleR = (drySampleR*(1.0-wet))+(inputSampleR*wet);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -289,12 +285,6 @@ void Pop::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -558,18 +548,16 @@ void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
inputSampleR = (drySampleR*(1.0-wet))+(inputSampleR*wet);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -579,10 +567,4 @@ void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser
index 7297e69..f09d1b9 100755
--- a/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461548;
- PBXWorkspaceStateSaveDate = 528461548;
+ PBXPerProjectTemplateStateSaveDate = 569771002;
+ PBXWorkspaceStateSaveDate = 569771002;
};
perUserProjectItems = {
- 8B9D6F151F7EF53E007AB60F /* PBXTextBookmark */ = 8B9D6F151F7EF53E007AB60F /* PBXTextBookmark */;
+ 8B793E1921F60406006E9731 /* PBXTextBookmark */ = 8B793E1921F60406006E9731 /* PBXTextBookmark */;
8B9D7CF61F7FAF1B007AB60F /* PBXTextBookmark */ = 8B9D7CF61F7FAF1B007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -94,7 +94,7 @@
};
24D8286F09A914000093AEF8 /* PowerSagProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {691, 3679}}";
+ sepNavIntBoundsRect = "{{0, 0}, {677, 3497}}";
sepNavSelRange = "{6117, 1892}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{373, 47}, {895, 831}}";
@@ -114,10 +114,10 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6F151F7EF53E007AB60F /* PBXTextBookmark */ = {
+ 8B793E1921F60406006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* PowerSagProc.cpp */;
- name = "PowerSagProc.cpp: 182";
+ name = "PowerSagProc.cpp: 171";
rLen = 1892;
rLoc = 6117;
rType = 0;
diff --git a/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3
index ae6f413..bfea37c 100755
--- a/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/PowerSag/PowerSag.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7CF61F7FAF1B007AB60F</string>
+ <string>8B793E1921F60406006E9731</string>
<key>history</key>
<array>
- <string>8B9D6F151F7EF53E007AB60F</string>
+ <string>8B9D7CF61F7FAF1B007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>260 312 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
<string>260 312 810 487 0 0 1440 878 </string>
</dict>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7CF71F7FAF1B007AB60F</string>
+ <string>8B793E1A21F60406006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7CF81F7FAF1B007AB60F</string>
+ <string>8B793E1B21F60406006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7CF91F7FAF1B007AB60F</string>
+ <string>8B793E1C21F60406006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461595.073053</real>
+ <real>569771014.65125096</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7CFA1F7FAF1B007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/PowerSag/PowerSag.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/PowerSag/source/PowerSag.cpp b/plugins/MacVST/PowerSag/source/PowerSag.cpp
index 0218186..d1d0745 100755
--- a/plugins/MacVST/PowerSag/source/PowerSag.cpp
+++ b/plugins/MacVST/PowerSag/source/PowerSag.cpp
@@ -18,11 +18,8 @@ PowerSag::PowerSag(audioMasterCallback audioMaster) :
gcount = 0;
A = 0.0;
B = 0.3;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/PowerSag/source/PowerSag.h b/plugins/MacVST/PowerSag/source/PowerSag.h
index 930f05b..38839b6 100755
--- a/plugins/MacVST/PowerSag/source/PowerSag.h
+++ b/plugins/MacVST/PowerSag/source/PowerSag.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double dL[9000];
double dR[9000];
diff --git a/plugins/MacVST/PowerSag/source/PowerSagProc.cpp b/plugins/MacVST/PowerSag/source/PowerSagProc.cpp
index d1afa31..de43be6 100755
--- a/plugins/MacVST/PowerSag/source/PowerSagProc.cpp
+++ b/plugins/MacVST/PowerSag/source/PowerSagProc.cpp
@@ -22,9 +22,6 @@ void PowerSag::processReplacing(float **inputs, float **outputs, VstInt32 sample
double out;
double bridgerectifier;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -123,25 +120,14 @@ void PowerSag::processReplacing(float **inputs, float **outputs, VstInt32 sample
gcount--;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -168,9 +154,6 @@ void PowerSag::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double out;
double bridgerectifier;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -269,25 +252,16 @@ void PowerSag::processDoubleReplacing(double **inputs, double **outputs, VstInt3
gcount--;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser
index 3c1525b..37f6135 100755
--- a/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461605;
- PBXWorkspaceStateSaveDate = 528461605;
+ PBXPerProjectTemplateStateSaveDate = 569771037;
+ PBXWorkspaceStateSaveDate = 569771037;
};
perUserProjectItems = {
8B2E04191D8381D1001B9E01 /* PBXTextBookmark */ = 8B2E04191D8381D1001B9E01 /* PBXTextBookmark */;
- 8B9D6F2A1F7EF568007AB60F /* PBXTextBookmark */ = 8B9D6F2A1F7EF568007AB60F /* PBXTextBookmark */;
- 8B9D7D161F7FAF5A007AB60F /* PBXTextBookmark */ = 8B9D7D161F7FAF5A007AB60F /* PBXTextBookmark */;
+ 8B793E3721F60423006E9731 /* PBXTextBookmark */ = 8B793E3721F60423006E9731 /* PBXTextBookmark */;
+ 8B793E3C21F60454006E9731 /* PBXTextBookmark */ = 8B793E3C21F60454006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -63,15 +63,15 @@
};
2407DEB6089929BA00EB68BF /* Pressure4.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 2184}}";
- sepNavSelRange = "{4340, 0}";
- sepNavVisRange = "{0, 1911}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 2158}}";
+ sepNavSelRange = "{527, 0}";
+ sepNavVisRange = "{0, 1930}";
sepNavWindowFrame = "{{535, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Pressure4.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 1170}}";
+ sepNavIntBoundsRect = "{{0, 0}, {600, 1105}}";
sepNavSelRange = "{453, 0}";
sepNavVisRange = "{419, 41}";
sepNavWindowFrame = "{{530, 47}, {895, 831}}";
@@ -112,22 +112,22 @@
fRef = 2407DEB6089929BA00EB68BF /* Pressure4.cpp */;
name = "Pressure4.cpp: 52";
rLen = 0;
- rLoc = 1865;
+ rLoc = 1825;
rType = 0;
vrLen = 312;
vrLoc = 44;
};
- 8B9D6F2A1F7EF568007AB60F /* PBXTextBookmark */ = {
+ 8B793E3721F60423006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* Pressure4.h */;
name = "Pressure4.h: 23";
rLen = 0;
rLoc = 453;
rType = 0;
- vrLen = 69;
- vrLoc = 391;
+ vrLen = 41;
+ vrLoc = 419;
};
- 8B9D7D161F7FAF5A007AB60F /* PBXTextBookmark */ = {
+ 8B793E3C21F60454006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* Pressure4.h */;
name = "Pressure4.h: 23";
diff --git a/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3
index 3f05d07..a83121a 100755
--- a/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Pressure4/Pressure4.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -351,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7D161F7FAF5A007AB60F</string>
+ <string>8B793E3C21F60454006E9731</string>
<key>history</key>
<array>
<string>8B2E04191D8381D1001B9E01</string>
- <string>8B9D6F2A1F7EF568007AB60F</string>
+ <string>8B793E3721F60423006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {603, 51}}</string>
<key>RubberWindowFrame</key>
<string>630 371 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>390pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
- <key>RubberWindowFrame</key>
- <string>630 371 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 363}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +448,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 363}}</string>
+ <key>RubberWindowFrame</key>
+ <string>630 371 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7D171F7FAF5A007AB60F</string>
+ <string>8B793E3D21F60454006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7D181F7FAF5A007AB60F</string>
+ <string>8B793E3E21F60454006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7D191F7FAF5A007AB60F</string>
+ <string>8B793E3F21F60454006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461658.22323</real>
+ <real>569771092.74144006</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,7 +652,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7D1A1F7FAF5A007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Pressure4/Pressure4.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Pressure4/source/Pressure4.cpp b/plugins/MacVST/Pressure4/source/Pressure4.cpp
index 8ae2adc..10ed5fa 100755
--- a/plugins/MacVST/Pressure4/source/Pressure4.cpp
+++ b/plugins/MacVST/Pressure4/source/Pressure4.cpp
@@ -16,10 +16,8 @@ Pressure4::Pressure4(audioMasterCallback audioMaster) :
B = 0.2;
C = 1.0;
D = 1.0;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
muSpeedA = 10000;
muSpeedB = 10000;
muCoefficientA = 1;
diff --git a/plugins/MacVST/Pressure4/source/Pressure4.h b/plugins/MacVST/Pressure4/source/Pressure4.h
index 29d20eb..6cf3448 100755
--- a/plugins/MacVST/Pressure4/source/Pressure4.h
+++ b/plugins/MacVST/Pressure4/source/Pressure4.h
@@ -62,10 +62,8 @@ private:
double muSpeedB;
double muCoefficientA;
double muCoefficientB;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
float A;
diff --git a/plugins/MacVST/Pressure4/source/Pressure4Proc.cpp b/plugins/MacVST/Pressure4/source/Pressure4Proc.cpp
index 02b8a78..7e285df 100755
--- a/plugins/MacVST/Pressure4/source/Pressure4Proc.cpp
+++ b/plugins/MacVST/Pressure4/source/Pressure4Proc.cpp
@@ -43,9 +43,6 @@ void Pressure4::processReplacing(float **inputs, float **outputs, VstInt32 sampl
unmewiness = 1.0-mewiness;
}
// µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -195,27 +192,14 @@ void Pressure4::processReplacing(float **inputs, float **outputs, VstInt32 sampl
else {inputSampleR = -bridgerectifier;}
//second stage of overdrive to prevent overs and allow bloody loud extremeness
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
@@ -263,9 +247,6 @@ void Pressure4::processDoubleReplacing(double **inputs, double **outputs, VstInt
unmewiness = 1.0-mewiness;
}
// µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -416,27 +397,16 @@ void Pressure4::processDoubleReplacing(double **inputs, double **outputs, VstInt
else {inputSampleR = -bridgerectifier;}
//second stage of overdrive to prevent overs and allow bloody loud extremeness
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser
index a4b799a..05bbaee 100644..100755
--- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 535163595;
- PBXWorkspaceStateSaveDate = 535163595;
+ PBXPerProjectTemplateStateSaveDate = 569771116;
+ PBXWorkspaceStateSaveDate = 569771116;
};
perUserProjectItems = {
- 8BBE455F1FE5F4550022E6F7 /* XCBuildMessageTextBookmark */ = 8BBE455F1FE5F4550022E6F7 /* XCBuildMessageTextBookmark */;
+ 8B793E5C21F60475006E9731 /* PBXTextBookmark */ = 8B793E5C21F60475006E9731 /* PBXTextBookmark */;
8BBE45601FE5F4550022E6F7 /* PBXTextBookmark */ = 8BBE45601FE5F4550022E6F7 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -62,9 +62,9 @@
};
2407DEB6089929BA00EB68BF /* PurestConsoleBuss.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {733, 1404}}";
+ sepNavIntBoundsRect = "{{0, 0}, {663, 1391}}";
sepNavSelRange = "{2244, 0}";
- sepNavVisRange = "{2157, 260}";
+ sepNavVisRange = "{2188, 173}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
@@ -106,14 +106,15 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BBE455F1FE5F4550022E6F7 /* XCBuildMessageTextBookmark */ = {
+ 8B793E5C21F60475006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- comments = "Unused variable 'chunkData'";
fRef = 2407DEB6089929BA00EB68BF /* PurestConsoleBuss.cpp */;
- fallbackIsa = XCBuildMessageTextBookmark;
- rLen = 1;
- rLoc = 53;
- rType = 1;
+ name = "PurestConsoleBuss.cpp: 54";
+ rLen = 0;
+ rLoc = 2244;
+ rType = 0;
+ vrLen = 173;
+ vrLoc = 2188;
};
8BBE45601FE5F4550022E6F7 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3
index 735d7a1..a64a099 100644..100755
--- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -349,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBE45601FE5F4550022E6F7</string>
+ <string>8B793E5C21F60475006E9731</string>
<key>history</key>
<array>
- <string>8BBE455F1FE5F4550022E6F7</string>
+ <string>8BBE45601FE5F4550022E6F7</string>
</array>
</dict>
<key>SplitCount</key>
@@ -366,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
<string>10 385 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -391,7 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>10 385 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -446,8 +450,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>10 385 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -475,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBE45611FE5F4550022E6F7</string>
+ <string>8B793E5D21F60475006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBE45621FE5F4550022E6F7</string>
+ <string>8B793E5E21F60475006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBE45631FE5F4550022E6F7</string>
+ <string>8B793E5F21F60475006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -632,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>535163989.59433597</real>
+ <real>569771125.16991305</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -649,8 +651,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBE45641FE5F4550022E6F7</string>
- <string>/Users/christopherjohnson/Desktop/PurestConsoleBuss/PurestConsoleBuss.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj</string>
</array>
<key>WindowString</key>
<string>10 385 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index a80c038..a80c038 100644..100755
--- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
index 5c38f94..5c38f94 100644..100755
--- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
index 314de0f..314de0f 100644..100755
--- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.mode1v3
index c572326..c572326 100644..100755
--- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.mode1v3
+++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.mode1v3
diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.pbxuser
index df94780..df94780 100644..100755
--- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.pbxuser
+++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.pbxuser
diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
index 8ee693f..8ee693f 100644..100755
--- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
+++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
index 5bccbcb..5bccbcb 100644..100755
--- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
index a7bdd62..a7bdd62 100644..100755
--- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
index 0df2de4..0df2de4 100644..100755
--- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
+++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
diff --git a/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.cpp b/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.cpp
index ed0b223..2d8e619 100755
--- a/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.cpp
+++ b/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.cpp
@@ -12,11 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new P
PurestConsoleBuss::PurestConsoleBuss(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.h b/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.h
index 0d237ec..51495fc 100755
--- a/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.h
+++ b/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBuss.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
};
diff --git a/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBussProc.cpp b/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBussProc.cpp
index c06258a..6211eeb 100755
--- a/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBussProc.cpp
+++ b/plugins/MacVST/PurestConsoleBuss/source/PurestConsoleBussProc.cpp
@@ -14,9 +14,6 @@ void PurestConsoleBuss::processReplacing(float **inputs, float **outputs, VstInt
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -74,25 +71,14 @@ void PurestConsoleBuss::processReplacing(float **inputs, float **outputs, VstInt
inputSampleR = asin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -111,9 +97,6 @@ void PurestConsoleBuss::processDoubleReplacing(double **inputs, double **outputs
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -171,25 +154,16 @@ void PurestConsoleBuss::processDoubleReplacing(double **inputs, double **outputs
inputSampleR = asin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser
index cd6b4c4..9f0edd0 100644..100755
--- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 535163135;
- PBXWorkspaceStateSaveDate = 535163135;
+ PBXPerProjectTemplateStateSaveDate = 569771151;
+ PBXWorkspaceStateSaveDate = 569771151;
};
perUserProjectItems = {
- 8BBE45161FE5F1980022E6F7 /* PBXBookmark */ = 8BBE45161FE5F1980022E6F7 /* PBXBookmark */;
- 8BBE45251FE5F2760022E6F7 /* XCBuildMessageTextBookmark */ = 8BBE45251FE5F2760022E6F7 /* XCBuildMessageTextBookmark */;
- 8BBE45261FE5F2760022E6F7 /* PBXTextBookmark */ = 8BBE45261FE5F2760022E6F7 /* PBXTextBookmark */;
- 8BBE45291FE5F2760022E6F7 /* PBXTextBookmark */ = 8BBE45291FE5F2760022E6F7 /* PBXTextBookmark */;
+ 8B793E7C21F604AB006E9731 /* XCBuildMessageTextBookmark */ = 8B793E7C21F604AB006E9731 /* XCBuildMessageTextBookmark */;
+ 8B793E7D21F604AB006E9731 /* PBXTextBookmark */ = 8B793E7D21F604AB006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -64,9 +62,9 @@
};
2407DEB6089929BA00EB68BF /* PurestConsoleChannel.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {663, 1508}}";
- sepNavSelRange = "{2286, 0}";
- sepNavVisRange = "{2321, 276}";
+ sepNavIntBoundsRect = "{{0, 0}, {663, 1417}}";
+ sepNavSelRange = "{2230, 0}";
+ sepNavVisRange = "{2139, 260}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
@@ -88,9 +86,9 @@
};
24D8286F09A914000093AEF8 /* PurestConsoleChannelProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 2522}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 2132}}";
sepNavSelRange = "{5889, 0}";
- sepNavVisRange = "{94, 2079}";
+ sepNavVisRange = "{899, 2244}";
sepNavWindowFrame = "{{8, 47}, {895, 831}}";
};
};
@@ -108,38 +106,24 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BBE45161FE5F1980022E6F7 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 24D8286F09A914000093AEF8 /* PurestConsoleChannelProc.cpp */;
- };
- 8BBE45251FE5F2760022E6F7 /* XCBuildMessageTextBookmark */ = {
+ 8B793E7C21F604AB006E9731 /* XCBuildMessageTextBookmark */ = {
isa = PBXTextBookmark;
comments = "Unused variable 'chunkData'";
fRef = 2407DEB6089929BA00EB68BF /* PurestConsoleChannel.cpp */;
fallbackIsa = XCBuildMessageTextBookmark;
rLen = 1;
- rLoc = 53;
+ rLoc = 50;
rType = 1;
};
- 8BBE45261FE5F2760022E6F7 /* PBXTextBookmark */ = {
+ 8B793E7D21F604AB006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* PurestConsoleChannel.cpp */;
- name = "PurestConsoleChannel.cpp: 54";
- rLen = 0;
- rLoc = 2286;
- rType = 0;
- vrLen = 276;
- vrLoc = 2321;
- };
- 8BBE45291FE5F2760022E6F7 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 24D8286F09A914000093AEF8 /* PurestConsoleChannelProc.cpp */;
- name = "PurestConsoleChannelProc.cpp: 158";
+ name = "PurestConsoleChannel.cpp: 51";
rLen = 0;
- rLoc = 5889;
+ rLoc = 2230;
rType = 0;
- vrLen = 2079;
- vrLoc = 94;
+ vrLen = 260;
+ vrLoc = 2139;
};
8D01CCC60486CAD60068D4B7 /* PurestConsoleChannel */ = {
activeExec = 0;
diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3
index 91b4416..948cc4a 100644..100755
--- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3
@@ -222,48 +222,7 @@
</dict>
</array>
<key>OpenEditors</key>
- <array>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8BBE45271FE5F2760022E6F7</string>
- <key>PBXProjectModuleLabel</key>
- <string>PurestConsoleChannelProc.cpp</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8BBE45281FE5F2760022E6F7</string>
- <key>PBXProjectModuleLabel</key>
- <string>PurestConsoleChannelProc.cpp</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>8BBE45291FE5F2760022E6F7</string>
- <key>history</key>
- <array>
- <string>8BBE45161FE5F1980022E6F7</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {895, 734}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>8 103 895 775 0 0 1440 878 </string>
- </dict>
- </dict>
- </array>
+ <array/>
<key>PerspectiveWidths</key>
<array>
<integer>810</integer>
@@ -362,7 +321,7 @@
<real>236</real>
</array>
<key>RubberWindowFrame</key>
- <string>13 375 810 487 0 0 1440 878 </string>
+ <string>406 301 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -390,10 +349,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBE45261FE5F2760022E6F7</string>
+ <string>8B793E7D21F604AB006E9731</string>
<key>history</key>
<array>
- <string>8BBE45251FE5F2760022E6F7</string>
+ <string>8B793E7C21F604AB006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -407,18 +366,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {552, 132}}</string>
+ <string>{{0, 0}, {552, 117}}</string>
<key>RubberWindowFrame</key>
- <string>13 375 810 487 0 0 1440 878 </string>
+ <string>406 301 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -432,7 +391,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {552, 414}}</string>
+ <string>{{10, 27}, {552, 297}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -486,9 +445,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {552, 282}}</string>
+ <string>{{10, 27}, {552, 297}}</string>
<key>RubberWindowFrame</key>
- <string>13 375 810 487 0 0 1440 878 </string>
+ <string>406 301 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -516,11 +475,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBE45051FE5F1020022E6F7</string>
+ <string>8B793E7E21F604AB006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBE45061FE5F1020022E6F7</string>
+ <string>8B793E7F21F604AB006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBE45071FE5F1020022E6F7</string>
+ <string>8B793E8021F604AB006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -673,7 +632,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>535163510.630979</real>
+ <real>569771179.00788903</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -690,12 +649,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBE452A1FE5F2760022E6F7</string>
<string>8BBE45271FE5F2760022E6F7</string>
- <string>/Users/christopherjohnson/Desktop/PurestConsoleChannel/PurestConsoleChannel.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>13 375 810 487 0 0 1440 878 </string>
+ <string>406 301 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index a80c038..a80c038 100644..100755
--- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
index 5c38f94..5c38f94 100644..100755
--- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
index 314de0f..314de0f 100644..100755
--- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.mode1v3
index c572326..c572326 100644..100755
--- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.mode1v3
+++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.mode1v3
diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.pbxuser
index df94780..df94780 100644..100755
--- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.pbxuser
+++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.pbxuser
diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
index 8ee693f..8ee693f 100644..100755
--- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
+++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
index 5bccbcb..5bccbcb 100644..100755
--- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
index a7bdd62..a7bdd62 100644..100755
--- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
index 0df2de4..0df2de4 100644..100755
--- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
+++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
diff --git a/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.cpp b/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.cpp
index b9f3e04..35649a6 100755
--- a/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.cpp
+++ b/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.cpp
@@ -12,11 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new P
PurestConsoleChannel::PurestConsoleChannel(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.h b/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.h
index c0a1648..51e728f 100755
--- a/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.h
+++ b/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannel.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
};
diff --git a/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannelProc.cpp b/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannelProc.cpp
index 630cba7..2fc513a 100755
--- a/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannelProc.cpp
+++ b/plugins/MacVST/PurestConsoleChannel/source/PurestConsoleChannelProc.cpp
@@ -14,9 +14,6 @@ void PurestConsoleChannel::processReplacing(float **inputs, float **outputs, Vst
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -68,25 +65,14 @@ void PurestConsoleChannel::processReplacing(float **inputs, float **outputs, Vst
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -105,9 +91,6 @@ void PurestConsoleChannel::processDoubleReplacing(double **inputs, double **outp
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -159,25 +142,16 @@ void PurestConsoleChannel::processDoubleReplacing(double **inputs, double **outp
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser
index 12c4f1e..d8eeda2 100644..100755
--- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* PurestDrive */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538683677;
- PBXWorkspaceStateSaveDate = 538683677;
+ PBXPerProjectTemplateStateSaveDate = 569771199;
+ PBXWorkspaceStateSaveDate = 569771199;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* PurestDrive */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3
index 41e246d..461e4df 100644..100755
--- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E5444201BA92300B5DC2A</string>
+ <string>8B793E9D21F604DA006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E5445201BA92300B5DC2A</string>
+ <string>8B793E9E21F604DA006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B4E5446201BA92300B5DC2A</string>
+ <string>8B793E9F21F604DA006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538684550.59728301</real>
+ <real>569771226.28827202</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/PurestDrive/PurestDrive.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/PurestDrive/PurestDrive.xcodeproj</string>
</array>
<key>WindowString</key>
<string>9 381 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index a80c038..a80c038 100644..100755
--- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
index 5c38f94..5c38f94 100644..100755
--- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
index 314de0f..314de0f 100644..100755
--- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.mode1v3
index c572326..c572326 100644..100755
--- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.mode1v3
+++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.mode1v3
diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.pbxuser
index df94780..df94780 100644..100755
--- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.pbxuser
+++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.pbxuser
diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
index 8ee693f..8ee693f 100644..100755
--- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
+++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
index 5bccbcb..5bccbcb 100644..100755
--- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
index a7bdd62..a7bdd62 100644..100755
--- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
index 0df2de4..0df2de4 100644..100755
--- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
+++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
diff --git a/plugins/MacVST/PurestDrive/source/PurestDrive.cpp b/plugins/MacVST/PurestDrive/source/PurestDrive.cpp
index e2451fe..a1d9264 100755
--- a/plugins/MacVST/PurestDrive/source/PurestDrive.cpp
+++ b/plugins/MacVST/PurestDrive/source/PurestDrive.cpp
@@ -17,11 +17,8 @@ PurestDrive::PurestDrive(audioMasterCallback audioMaster) :
previousSampleL = 0.0;
previousSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/PurestDrive/source/PurestDrive.h b/plugins/MacVST/PurestDrive/source/PurestDrive.h
index 1f5b349..abcd65b 100755
--- a/plugins/MacVST/PurestDrive/source/PurestDrive.h
+++ b/plugins/MacVST/PurestDrive/source/PurestDrive.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double previousSampleL;
diff --git a/plugins/MacVST/PurestDrive/source/PurestDriveProc.cpp b/plugins/MacVST/PurestDrive/source/PurestDriveProc.cpp
index e453883..f5cc804 100755
--- a/plugins/MacVST/PurestDrive/source/PurestDriveProc.cpp
+++ b/plugins/MacVST/PurestDrive/source/PurestDriveProc.cpp
@@ -14,9 +14,6 @@ void PurestDrive::processReplacing(float **inputs, float **outputs, VstInt32 sam
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = A;
double drySampleL;
@@ -90,25 +87,14 @@ void PurestDrive::processReplacing(float **inputs, float **outputs, VstInt32 sam
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -127,9 +113,6 @@ void PurestDrive::processDoubleReplacing(double **inputs, double **outputs, VstI
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = A;
double drySampleL;
@@ -204,25 +187,16 @@ void PurestDrive::processDoubleReplacing(double **inputs, double **outputs, VstI
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser
index fcc45c3..87fae12 100755
--- a/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* PurestEcho */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461666;
- PBXWorkspaceStateSaveDate = 528461666;
+ PBXPerProjectTemplateStateSaveDate = 569771267;
+ PBXWorkspaceStateSaveDate = 569771267;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* PurestEcho */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3
index f80d304..a80a475 100755
--- a/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/christopherjohnson.perspectivev3
@@ -360,18 +360,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>612 265 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -385,7 +385,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
<string>612 265 810 487 0 0 1440 878 </string>
</dict>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7D2C1F7FAF74007AB60F</string>
+ <string>8B793EC621F6054B006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7D2D1F7FAF74007AB60F</string>
+ <string>8B793EC721F6054B006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7D2E1F7FAF74007AB60F</string>
+ <string>8B793EC821F6054B006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461684.32955098</real>
+ <real>569771339.31522799</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7D2F1F7FAF74007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/PurestEcho/PurestEcho.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/project.pbxproj b/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/project.pbxproj
index 02231e4..43171c9 100755
--- a/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/PurestEcho/PurestEcho.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* PurestEcho */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "PurestEcho" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
+ 8D01CCC60486CAD60068D4B7 /* PurestEcho */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/PurestEcho/source/PurestEcho.cpp b/plugins/MacVST/PurestEcho/source/PurestEcho.cpp
index 6b8c302..6bcaa3f 100755
--- a/plugins/MacVST/PurestEcho/source/PurestEcho.cpp
+++ b/plugins/MacVST/PurestEcho/source/PurestEcho.cpp
@@ -19,11 +19,8 @@ PurestEcho::PurestEcho(audioMasterCallback audioMaster) :
E = 0.0;
for(int count = 0; count < totalsamples-1; count++) {dL[count] = 0;dR[count] = 0;}
gcount = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/PurestEcho/source/PurestEcho.h b/plugins/MacVST/PurestEcho/source/PurestEcho.h
index a298dd2..870e158 100755
--- a/plugins/MacVST/PurestEcho/source/PurestEcho.h
+++ b/plugins/MacVST/PurestEcho/source/PurestEcho.h
@@ -62,11 +62,8 @@ private:
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/PurestEcho/source/PurestEchoProc.cpp b/plugins/MacVST/PurestEcho/source/PurestEchoProc.cpp
index 77e4b2f..e8e141c 100755
--- a/plugins/MacVST/PurestEcho/source/PurestEchoProc.cpp
+++ b/plugins/MacVST/PurestEcho/source/PurestEchoProc.cpp
@@ -76,9 +76,6 @@ void PurestEcho::processReplacing(float **inputs, float **outputs, VstInt32 samp
double delaysBufferL;
double delaysBufferR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -177,25 +174,14 @@ void PurestEcho::processReplacing(float **inputs, float **outputs, VstInt32 samp
gcount--;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -276,9 +262,6 @@ void PurestEcho::processDoubleReplacing(double **inputs, double **outputs, VstIn
double delaysBufferL;
double delaysBufferR;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -377,25 +360,16 @@ void PurestEcho::processDoubleReplacing(double **inputs, double **outputs, VstIn
gcount--;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser
index 11a21ab..60f46c3 100644..100755
--- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* PurestGain */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 530661522;
- PBXWorkspaceStateSaveDate = 530661522;
+ PBXPerProjectTemplateStateSaveDate = 569771364;
+ PBXWorkspaceStateSaveDate = 569771364;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -82,9 +82,9 @@
};
24D8286F09A914000093AEF8 /* PurestGainProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 4095}}";
- sepNavSelRange = "{8041, 1892}";
- sepNavVisRange = "{2228, 2390}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 3484}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRange = "{7696, 2006}";
sepNavWindowFrame = "{{488, 47}, {895, 831}}";
};
};
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* PurestGain */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3
index f4f1de3..3986363 100644..100755
--- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>5</integer>
+ <integer>6</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>711 333 810 487 0 0 1440 878 </string>
+ <string>630 333 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -362,7 +362,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>711 333 810 487 0 0 1440 878 </string>
+ <string>630 333 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -387,7 +387,7 @@
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
- <string>711 333 810 487 0 0 1440 878 </string>
+ <string>630 333 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BA972EE1FA145A50032B992</string>
+ <string>8B793EDC21F6057A006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BA972EF1FA145A50032B992</string>
+ <string>8B793EDD21F6057A006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BA972F01FA145A50032B992</string>
+ <string>8B793EDE21F6057A006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>530662821.72906101</real>
+ <real>569771386.05235398</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,11 +643,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BA972F11FA145A50032B992</string>
<string>/Users/christopherjohnson/Desktop/MacVST/PurestGain/PurestGain.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>711 333 810 487 0 0 1440 878 </string>
+ <string>630 333 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.pbxproj b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.pbxproj
index b89fc20..511f09f 100755
--- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* PurestGain */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "PurestGain" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* PurestGain */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index a80c038..a80c038 100644..100755
--- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
index 5c38f94..5c38f94 100644..100755
--- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
index 314de0f..314de0f 100644..100755
--- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.mode1v3
index c572326..c572326 100644..100755
--- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.mode1v3
+++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.mode1v3
diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.pbxuser
index df94780..df94780 100644..100755
--- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.pbxuser
+++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.pbxuser
diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
index 8ee693f..8ee693f 100644..100755
--- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
+++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
index 5bccbcb..5bccbcb 100644..100755
--- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
index a7bdd62..a7bdd62 100644..100755
--- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
index 0df2de4..0df2de4 100644..100755
--- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
+++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
diff --git a/plugins/MacVST/PurestGain/source/PurestGain.cpp b/plugins/MacVST/PurestGain/source/PurestGain.cpp
index 3091a12..b1b77fe 100755
--- a/plugins/MacVST/PurestGain/source/PurestGain.cpp
+++ b/plugins/MacVST/PurestGain/source/PurestGain.cpp
@@ -18,11 +18,8 @@ PurestGain::PurestGain(audioMasterCallback audioMaster) :
settingchase = -90.0;
gainBchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/PurestGain/source/PurestGain.h b/plugins/MacVST/PurestGain/source/PurestGain.h
index 7869425..9e2baea 100755
--- a/plugins/MacVST/PurestGain/source/PurestGain.h
+++ b/plugins/MacVST/PurestGain/source/PurestGain.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double gainchase;
double settingchase;
diff --git a/plugins/MacVST/PurestGain/source/PurestGainProc.cpp b/plugins/MacVST/PurestGain/source/PurestGainProc.cpp
index 38f2849..4aa6d96 100755
--- a/plugins/MacVST/PurestGain/source/PurestGainProc.cpp
+++ b/plugins/MacVST/PurestGain/source/PurestGainProc.cpp
@@ -43,9 +43,6 @@ void PurestGain::processReplacing(float **inputs, float **outputs, VstInt32 samp
//done with slow fade controller
double outputgain;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -118,45 +115,19 @@ void PurestGain::processReplacing(float **inputs, float **outputs, VstInt32 samp
if (1.0 == outputgain)
{
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
*out1 = *in1;
*out2 = *in2;
} else {
inputSampleL *= outputgain;
inputSampleR *= outputgain;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
}
@@ -204,9 +175,6 @@ void PurestGain::processDoubleReplacing(double **inputs, double **outputs, VstIn
//done with slow fade controller
double outputgain;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -273,45 +241,21 @@ void PurestGain::processDoubleReplacing(double **inputs, double **outputs, VstIn
if (1.0 == outputgain)
{
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
*out1 = *in1;
*out2 = *in2;
} else {
inputSampleL *= outputgain;
inputSampleR *= outputgain;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
}
diff --git a/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser
index d3ee7f1..f6f6607 100755
--- a/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 532825574;
- PBXWorkspaceStateSaveDate = 532825574;
+ PBXPerProjectTemplateStateSaveDate = 569771412;
+ PBXWorkspaceStateSaveDate = 569771412;
};
perUserProjectItems = {
- 8B2C4C211FC246470023028A /* PBXTextBookmark */ = 8B2C4C211FC246470023028A /* PBXTextBookmark */;
8B2C4C221FC246470023028A /* PBXTextBookmark */ = 8B2C4C221FC246470023028A /* PBXTextBookmark */;
+ 8B793EFC21F605B1006E9731 /* PBXTextBookmark */ = 8B793EFC21F605B1006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -86,9 +86,9 @@
};
24D8286F09A914000093AEF8 /* PurestWarmProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {684, 4498}}";
+ sepNavIntBoundsRect = "{{0, 0}, {677, 3367}}";
sepNavSelRange = "{8348, 0}";
- sepNavVisRange = "{1656, 322}";
+ sepNavVisRange = "{1663, 324}";
sepNavWindowFrame = "{{40, 47}, {895, 831}}";
};
};
@@ -106,25 +106,25 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B2C4C211FC246470023028A /* PBXTextBookmark */ = {
+ 8B2C4C221FC246470023028A /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* PurestWarmProc.cpp */;
name = "PurestWarmProc.cpp: 246";
rLen = 0;
rLoc = 8348;
rType = 0;
- vrLen = 339;
- vrLoc = 1684;
+ vrLen = 322;
+ vrLoc = 1656;
};
- 8B2C4C221FC246470023028A /* PBXTextBookmark */ = {
+ 8B793EFC21F605B1006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* PurestWarmProc.cpp */;
- name = "PurestWarmProc.cpp: 246";
+ name = "PurestWarmProc.cpp: 212";
rLen = 0;
rLoc = 8348;
rType = 0;
- vrLen = 322;
- vrLoc = 1656;
+ vrLen = 324;
+ vrLoc = 1663;
};
8D01CCC60486CAD60068D4B7 /* PurestWarm */ = {
activeExec = 0;
diff --git a/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3
index a787ecd..c7c8a82 100755
--- a/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/PurestWarm/PurestWarm.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B2C4C221FC246470023028A</string>
+ <string>8B793EFC21F605B1006E9731</string>
<key>history</key>
<array>
- <string>8B2C4C211FC246470023028A</string>
+ <string>8B2C4C221FC246470023028A</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
<string>168 216 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
<key>RubberWindowFrame</key>
<string>168 216 810 487 0 0 1440 878 </string>
</dict>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B2C4C231FC246470023028A</string>
+ <string>8B793EFD21F605B1006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B2C4C241FC246470023028A</string>
+ <string>8B793EFE21F605B1006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B2C4C251FC246470023028A</string>
+ <string>8B793EFF21F605B1006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>532825671.66727102</real>
+ <real>569771441.44578099</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B2C4C261FC246470023028A</string>
<string>/Users/christopherjohnson/Desktop/MacVST/PurestWarm/PurestWarm.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/PurestWarm/source/PurestWarm.cpp b/plugins/MacVST/PurestWarm/source/PurestWarm.cpp
index 475e845..eeee37b 100755
--- a/plugins/MacVST/PurestWarm/source/PurestWarm.cpp
+++ b/plugins/MacVST/PurestWarm/source/PurestWarm.cpp
@@ -13,11 +13,8 @@ PurestWarm::PurestWarm(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/PurestWarm/source/PurestWarm.h b/plugins/MacVST/PurestWarm/source/PurestWarm.h
index c67a91e..98bb0ce 100755
--- a/plugins/MacVST/PurestWarm/source/PurestWarm.h
+++ b/plugins/MacVST/PurestWarm/source/PurestWarm.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/PurestWarm/source/PurestWarmProc.cpp b/plugins/MacVST/PurestWarm/source/PurestWarmProc.cpp
index b5a5070..101c931 100755
--- a/plugins/MacVST/PurestWarm/source/PurestWarmProc.cpp
+++ b/plugins/MacVST/PurestWarm/source/PurestWarmProc.cpp
@@ -14,9 +14,6 @@ void PurestWarm::processReplacing(float **inputs, float **outputs, VstInt32 samp
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int polarity = (int) ( A * 1.999 );
@@ -71,103 +68,55 @@ void PurestWarm::processReplacing(float **inputs, float **outputs, VstInt32 samp
if (inputSampleL < 0)
{
inputSampleL = -(sin(-inputSampleL*1.57079634)/1.57079634);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- }
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
}
-
if (inputSampleR < 0)
{
inputSampleR = -(sin(-inputSampleR*1.57079634)/1.57079634);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- }
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
}
-
} else {
-
if (inputSampleL > 0)
{
inputSampleL = sin(inputSampleL*1.57079634)/1.57079634;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- }
- }
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+ }
if (inputSampleR > 0)
{
inputSampleR = sin(inputSampleR*1.57079634)/1.57079634;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- }
- }
-
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+ }
}
//that's it. Only applies on one half of the waveform, other half is passthrough untouched.
- //even the floating point noise shaping to the 32 bit buss is only applied as needed.
-
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -186,9 +135,6 @@ void PurestWarm::processDoubleReplacing(double **inputs, double **outputs, VstIn
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int polarity = (int) ( A * 1.999 );
@@ -243,103 +189,63 @@ void PurestWarm::processDoubleReplacing(double **inputs, double **outputs, VstIn
if (inputSampleL < 0)
{
inputSampleL = -(sin(-inputSampleL*1.57079634)/1.57079634);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
}
if (inputSampleR < 0)
{
inputSampleR = -(sin(-inputSampleR*1.57079634)/1.57079634);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
}
-
} else {
-
if (inputSampleL > 0)
{
inputSampleL = sin(inputSampleL*1.57079634)/1.57079634;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
}
-
if (inputSampleR > 0)
{
inputSampleR = sin(inputSampleR*1.57079634)/1.57079634;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
}
-
}
//that's it. Only applies on one half of the waveform, other half is passthrough untouched.
- //even the floating point noise shaping to the 32 bit buss is only applied as needed.
-
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser
index 7900b2c..378f89f 100755
--- a/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461728;
- PBXWorkspaceStateSaveDate = 528461728;
+ PBXPerProjectTemplateStateSaveDate = 569771462;
+ PBXWorkspaceStateSaveDate = 569771462;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
diff --git a/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3
index c05f255..6841380 100755
--- a/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Pyewacket/Pyewacket.xcodeproj/christopherjohnson.perspectivev3
@@ -360,18 +360,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 32}}</string>
+ <string>{{0, 0}, {603, 13}}</string>
<key>RubberWindowFrame</key>
<string>498 357 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>32pt</string>
+ <string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>409pt</string>
+ <string>428pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -385,7 +385,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
+ <string>{{10, 27}, {603, 401}}</string>
<key>RubberWindowFrame</key>
<string>498 357 810 487 0 0 1440 878 </string>
</dict>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7D6A1F7FAFB4007AB60F</string>
+ <string>8B793F1C21F605CE006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7D6B1F7FAFB4007AB60F</string>
+ <string>8B793F1D21F605CE006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7D6C1F7FAFB4007AB60F</string>
+ <string>8B793F1E21F605CE006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461748.86590397</real>
+ <real>569771470.99615598</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7D6D1F7FAFB4007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Pyewacket/Pyewacket.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Pyewacket/source/Pyewacket.cpp b/plugins/MacVST/Pyewacket/source/Pyewacket.cpp
index ee2db40..d500e74 100755
--- a/plugins/MacVST/Pyewacket/source/Pyewacket.cpp
+++ b/plugins/MacVST/Pyewacket/source/Pyewacket.cpp
@@ -18,11 +18,8 @@ Pyewacket::Pyewacket(audioMasterCallback audioMaster) :
chase = 1.0;
lastrectifierL = 0.0;
lastrectifierR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Pyewacket/source/Pyewacket.h b/plugins/MacVST/Pyewacket/source/Pyewacket.h
index 593001f..087a198 100755
--- a/plugins/MacVST/Pyewacket/source/Pyewacket.h
+++ b/plugins/MacVST/Pyewacket/source/Pyewacket.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double chase;
double lastrectifierL;
diff --git a/plugins/MacVST/Pyewacket/source/PyewacketProc.cpp b/plugins/MacVST/Pyewacket/source/PyewacketProc.cpp
index 83112a2..8b3021a 100755
--- a/plugins/MacVST/Pyewacket/source/PyewacketProc.cpp
+++ b/plugins/MacVST/Pyewacket/source/PyewacketProc.cpp
@@ -17,9 +17,8 @@ void Pyewacket::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
+ long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double drySampleL;
@@ -134,25 +133,14 @@ void Pyewacket::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR *= outputGain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -174,9 +162,8 @@ void Pyewacket::processDoubleReplacing(double **inputs, double **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
+ long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double drySampleL;
@@ -291,25 +278,16 @@ void Pyewacket::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR *= outputGain;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser
index c893227..8c45194 100755
--- a/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 548242463;
- PBXWorkspaceStateSaveDate = 548242463;
+ PBXPerProjectTemplateStateSaveDate = 569771492;
+ PBXWorkspaceStateSaveDate = 569771492;
};
perUserProjectItems = {
- 8BBFF86120AD84A2005650EF /* PBXTextBookmark */ = 8BBFF86120AD84A2005650EF /* PBXTextBookmark */;
+ 8B793F3B21F605EC006E9731 /* PBXTextBookmark */ = 8B793F3B21F605EC006E9731 /* PBXTextBookmark */;
8BBFF86220AD84A2005650EF /* PBXTextBookmark */ = 8BBFF86220AD84A2005650EF /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -62,9 +62,9 @@
};
2407DEB6089929BA00EB68BF /* Righteous4.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {740, 3198}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 3081}}";
sepNavSelRange = "{1957, 0}";
- sepNavVisRange = "{1892, 150}";
+ sepNavVisRange = "{1892, 108}";
sepNavWindowFrame = "{{9, 39}, {895, 831}}";
};
};
@@ -106,14 +106,14 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BBFF86120AD84A2005650EF /* PBXTextBookmark */ = {
+ 8B793F3B21F605EC006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* Righteous4.cpp */;
name = "Righteous4.cpp: 98";
rLen = 0;
rLoc = 1957;
rType = 0;
- vrLen = 150;
+ vrLen = 108;
vrLoc = 1892;
};
8BBFF86220AD84A2005650EF /* PBXTextBookmark */ = {
diff --git a/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3
index 54f4b98..8e2d830 100755
--- a/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Righteous4/Righteous4.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBFF86220AD84A2005650EF</string>
+ <string>8B793F3B21F605EC006E9731</string>
<key>history</key>
<array>
- <string>8BBFF86120AD84A2005650EF</string>
+ <string>8BBFF86220AD84A2005650EF</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
<string>595 333 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
<key>RubberWindowFrame</key>
<string>595 333 810 487 0 0 1440 878 </string>
</dict>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBFF86320AD84A2005650EF</string>
+ <string>8B793F3C21F605EC006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBFF86420AD84A2005650EF</string>
+ <string>8B793F3D21F605EC006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBFF86520AD84A2005650EF</string>
+ <string>8B793F3E21F605EC006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>548242594.083197</real>
+ <real>569771500.34394598</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBFF86620AD84A2005650EF</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Righteous4/Righteous4.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Righteous4/source/Righteous4Proc.cpp b/plugins/MacVST/Righteous4/source/Righteous4Proc.cpp
index 7ed44cf..630360f 100755
--- a/plugins/MacVST/Righteous4/source/Righteous4Proc.cpp
+++ b/plugins/MacVST/Righteous4/source/Righteous4Proc.cpp
@@ -300,17 +300,14 @@ void Righteous4::processReplacing(float **inputs, float **outputs, VstInt32 samp
//output dither section
if (bitDepth == 3) {
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
} else {
//entire Naturalize section used when not on 32 bit out
@@ -515,12 +512,6 @@ void Righteous4::processReplacing(float **inputs, float **outputs, VstInt32 samp
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -529,11 +520,11 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
+ long double fpNew = 1.0 - fpOld;
double IIRscaleback = 0.0002597;//scaleback of harmonic avg
IIRscaleback /= overallscale;
IIRscaleback = 1.0 - IIRscaleback;
@@ -816,17 +807,16 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn
//output dither section
if (bitDepth == 3) {
- //noise shaping to 32-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
} else {
//entire Naturalize section used when not on 32 bit out
@@ -1031,10 +1021,4 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
} \ No newline at end of file
diff --git a/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser
index 6a2257b..4d8e56b 100755
--- a/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* SideDull */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461758;
- PBXWorkspaceStateSaveDate = 528461758;
+ PBXPerProjectTemplateStateSaveDate = 569771557;
+ PBXWorkspaceStateSaveDate = 569771557;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -58,17 +58,17 @@
};
2407DEB6089929BA00EB68BF /* SideDull.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1625}}";
- sepNavSelRange = "{3760, 0}";
- sepNavVisRange = "{2540, 1852}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1586}}";
+ sepNavSelRange = "{542, 0}";
+ sepNavVisRange = "{0, 2119}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* SideDull.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 871}}";
- sepNavSelRange = "{2409, 0}";
- sepNavVisRange = "{313, 2247}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 845}}";
+ sepNavSelRange = "{2482, 0}";
+ sepNavVisRange = "{280, 2228}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
@@ -82,9 +82,9 @@
};
24D8286F09A914000093AEF8 /* SideDullProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 2990}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 2704}}";
sepNavSelRange = "{5347, 0}";
- sepNavVisRange = "{0, 1946}";
+ sepNavVisRange = "{5028, 1960}";
sepNavWindowFrame = "{{430, 47}, {895, 831}}";
};
};
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* SideDull */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3
index a8f957e..d35103a 100755
--- a/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/SideDull/SideDull.xcodeproj/christopherjohnson.perspectivev3
@@ -386,8 +386,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>428 317 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -441,7 +439,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>428 317 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7D891F7FAFCE007AB60F</string>
+ <string>8B793F6821F60667006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7D8A1F7FAFCE007AB60F</string>
+ <string>8B793F6921F60667006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7D8B1F7FAFCE007AB60F</string>
+ <string>8B793F6A21F60667006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461774.64021301</real>
+ <real>569771623.27479804</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7D8C1F7FAFCE007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/SideDull/SideDull.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/SideDull/SideDull.xcodeproj/project.pbxproj b/plugins/MacVST/SideDull/SideDull.xcodeproj/project.pbxproj
index ba99bc0..7e35731 100755
--- a/plugins/MacVST/SideDull/SideDull.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/SideDull/SideDull.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* SideDull */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "SideDull" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
+ 8D01CCC60486CAD60068D4B7 /* SideDull */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/SideDull/source/SideDull.cpp b/plugins/MacVST/SideDull/source/SideDull.cpp
index 547f1fd..479bdfd 100755
--- a/plugins/MacVST/SideDull/source/SideDull.cpp
+++ b/plugins/MacVST/SideDull/source/SideDull.cpp
@@ -16,10 +16,8 @@ SideDull::SideDull(audioMasterCallback audioMaster) :
iirSampleA = 0.0;
iirSampleB = 0.0;
flip = true;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/SideDull/source/SideDull.h b/plugins/MacVST/SideDull/source/SideDull.h
index 6f431ac..ef5e892 100755
--- a/plugins/MacVST/SideDull/source/SideDull.h
+++ b/plugins/MacVST/SideDull/source/SideDull.h
@@ -55,10 +55,8 @@ private:
double iirSampleA;
double iirSampleB;
bool flip;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
float A;
};
diff --git a/plugins/MacVST/SideDull/source/SideDullProc.cpp b/plugins/MacVST/SideDull/source/SideDullProc.cpp
index 347e5e8..7b77744 100755
--- a/plugins/MacVST/SideDull/source/SideDullProc.cpp
+++ b/plugins/MacVST/SideDull/source/SideDullProc.cpp
@@ -17,9 +17,6 @@ void SideDull::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -88,27 +85,14 @@ void SideDull::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -130,9 +114,6 @@ void SideDull::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -201,27 +182,16 @@ void SideDull::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser
index 12ff98b..92e6c81 100755
--- a/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461783;
- PBXWorkspaceStateSaveDate = 528461783;
+ PBXPerProjectTemplateStateSaveDate = 569771653;
+ PBXWorkspaceStateSaveDate = 569771653;
};
perUserProjectItems = {
- 8B9D6FCC1F7EF6A6007AB60F /* PBXTextBookmark */ = 8B9D6FCC1F7EF6A6007AB60F /* PBXTextBookmark */;
+ 8B793F8921F606AF006E9731 /* PBXTextBookmark */ = 8B793F8921F606AF006E9731 /* PBXTextBookmark */;
8B9D7DB21F7FB00A007AB60F /* PBXTextBookmark */ = 8B9D7DB21F7FB00A007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -62,17 +62,17 @@
};
2407DEB6089929BA00EB68BF /* Sidepass.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1625}}";
- sepNavSelRange = "{3758, 0}";
- sepNavVisRange = "{173, 2048}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1599}}";
+ sepNavSelRange = "{542, 0}";
+ sepNavVisRange = "{173, 2011}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Sidepass.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 897}}";
- sepNavSelRange = "{2409, 0}";
- sepNavVisRange = "{329, 2248}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 871}}";
+ sepNavSelRange = "{2482, 0}";
+ sepNavVisRange = "{313, 2212}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
@@ -86,7 +86,7 @@
};
24D8286F09A914000093AEF8 /* SidepassProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 2977}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 2613}}";
sepNavSelRange = "{6779, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{425, 47}, {895, 831}}";
@@ -106,10 +106,10 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D6FCC1F7EF6A6007AB60F /* PBXTextBookmark */ = {
+ 8B793F8921F606AF006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* SidepassProc.cpp */;
- name = "SidepassProc.cpp: 199";
+ name = "SidepassProc.cpp: 190";
rLen = 0;
rLoc = 6779;
rType = 0;
diff --git a/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3
index b4e2cb8..bc5c2b8 100755
--- a/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Sidepass/Sidepass.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7DB21F7FB00A007AB60F</string>
+ <string>8B793F8921F606AF006E9731</string>
<key>history</key>
<array>
- <string>8B9D6FCC1F7EF6A6007AB60F</string>
+ <string>8B9D7DB21F7FB00A007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -394,8 +394,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>376 351 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -449,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>376 351 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7DB31F7FB00A007AB60F</string>
+ <string>8B793F8A21F606AF006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7DB41F7FB00A007AB60F</string>
+ <string>8B793F8B21F606AF006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7DB51F7FB00A007AB60F</string>
+ <string>8B793F8C21F606AF006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461834.34984702</real>
+ <real>569771695.78669202</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,8 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7DB61F7FB00A007AB60F</string>
+ <string>8B793F8D21F606AF006E9731</string>
+ <string>8B793F8E21F606AF006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Sidepass/Sidepass.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Sidepass/source/Sidepass.cpp b/plugins/MacVST/Sidepass/source/Sidepass.cpp
index 98f6f3a..a28c212 100755
--- a/plugins/MacVST/Sidepass/source/Sidepass.cpp
+++ b/plugins/MacVST/Sidepass/source/Sidepass.cpp
@@ -16,10 +16,8 @@ Sidepass::Sidepass(audioMasterCallback audioMaster) :
iirSampleA = 0.0;
iirSampleB = 0.0;
flip = true;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Sidepass/source/Sidepass.h b/plugins/MacVST/Sidepass/source/Sidepass.h
index 0e496f5..1b31b91 100755
--- a/plugins/MacVST/Sidepass/source/Sidepass.h
+++ b/plugins/MacVST/Sidepass/source/Sidepass.h
@@ -55,10 +55,8 @@ private:
double iirSampleA;
double iirSampleB;
bool flip;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/Sidepass/source/SidepassProc.cpp b/plugins/MacVST/Sidepass/source/SidepassProc.cpp
index d022df3..834ae3e 100755
--- a/plugins/MacVST/Sidepass/source/SidepassProc.cpp
+++ b/plugins/MacVST/Sidepass/source/SidepassProc.cpp
@@ -17,9 +17,6 @@ void Sidepass::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double iirAmount = pow(A,3)/overallscale;
long double inputSampleL;
long double inputSampleR;
@@ -87,25 +84,14 @@ void Sidepass::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -127,9 +113,6 @@ void Sidepass::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double iirAmount = pow(A,3)/overallscale;
long double inputSampleL;
long double inputSampleR;
@@ -197,25 +180,16 @@ void Sidepass::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser
index 666e6a8..76b994a 100755
--- a/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.pbxuser
@@ -49,14 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 547786592;
- PBXWorkspaceStateSaveDate = 547786592;
+ PBXPerProjectTemplateStateSaveDate = 569771858;
+ PBXWorkspaceStateSaveDate = 569771858;
};
perUserProjectItems = {
- 8B7E3E7A20A690EE00482CB5 /* PBXBookmark */ = 8B7E3E7A20A690EE00482CB5 /* PBXBookmark */;
- 8B7E3E8320A6930B00482CB5 /* XCBuildMessageTextBookmark */ = 8B7E3E8320A6930B00482CB5 /* XCBuildMessageTextBookmark */;
+ 8B793FA121F60766006E9731 /* PBXTextBookmark */ = 8B793FA121F60766006E9731 /* PBXTextBookmark */;
8B7E3E8420A6930B00482CB5 /* PBXTextBookmark */ = 8B7E3E8420A6930B00482CB5 /* PBXTextBookmark */;
- 8B7E3E8720A6930B00482CB5 /* PBXTextBookmark */ = 8B7E3E8720A6930B00482CB5 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -80,17 +78,17 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}";
+ sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}";
sepNavSelRange = "{10616, 0}";
- sepNavVisRange = "{10459, 399}";
+ sepNavVisRange = "{10459, 280}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
24D8286F09A914000093AEF8 /* SingleEndedTriodeProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3978}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 3744}}";
sepNavSelRange = "{10510, 0}";
- sepNavVisRange = "{1431, 2096}";
+ sepNavVisRange = "{3404, 1933}";
sepNavWindowFrame = "{{26, 47}, {895, 831}}";
};
};
@@ -108,18 +106,15 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B7E3E7A20A690EE00482CB5 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 24D8286F09A914000093AEF8 /* SingleEndedTriodeProc.cpp */;
- };
- 8B7E3E8320A6930B00482CB5 /* XCBuildMessageTextBookmark */ = {
+ 8B793FA121F60766006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- comments = "Deprecated conversion from string constant to 'char*'";
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
- fallbackIsa = XCBuildMessageTextBookmark;
- rLen = 1;
- rLoc = 306;
- rType = 1;
+ name = "audioeffectx.cpp: 307";
+ rLen = 0;
+ rLoc = 10616;
+ rType = 0;
+ vrLen = 280;
+ vrLoc = 10459;
};
8B7E3E8420A6930B00482CB5 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
@@ -131,16 +126,6 @@
vrLen = 399;
vrLoc = 10459;
};
- 8B7E3E8720A6930B00482CB5 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 24D8286F09A914000093AEF8 /* SingleEndedTriodeProc.cpp */;
- name = "SingleEndedTriodeProc.cpp: 279";
- rLen = 0;
- rLoc = 10510;
- rType = 0;
- vrLen = 2096;
- vrLoc = 1431;
- };
8D01CCC60486CAD60068D4B7 /* SingleEndedTriode */ = {
activeExec = 0;
};
diff --git a/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3
index 7b7baa9..8ba4686 100755
--- a/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj/christopherjohnson.perspectivev3
@@ -222,48 +222,7 @@
</dict>
</array>
<key>OpenEditors</key>
- <array>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B7E3E8520A6930B00482CB5</string>
- <key>PBXProjectModuleLabel</key>
- <string>SingleEndedTriodeProc.cpp</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>8B7E3E8620A6930B00482CB5</string>
- <key>PBXProjectModuleLabel</key>
- <string>SingleEndedTriodeProc.cpp</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>8B7E3E8720A6930B00482CB5</string>
- <key>history</key>
- <array>
- <string>8B7E3E7A20A690EE00482CB5</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {895, 734}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>26 103 895 775 0 0 1440 878 </string>
- </dict>
- </dict>
- </array>
+ <array/>
<key>PerspectiveWidths</key>
<array>
<integer>810</integer>
@@ -297,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -362,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>27 292 810 487 0 0 1440 878 </string>
+ <string>143 323 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -390,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B7E3E8420A6930B00482CB5</string>
+ <string>8B793FA121F60766006E9731</string>
<key>history</key>
<array>
- <string>8B7E3E8320A6930B00482CB5</string>
+ <string>8B7E3E8420A6930B00482CB5</string>
</array>
</dict>
<key>SplitCount</key>
@@ -407,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>27 292 810 487 0 0 1440 878 </string>
+ <string>143 323 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -432,7 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>143 323 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -487,8 +450,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>27 292 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -516,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B7E3E5D20A68F7800482CB5</string>
+ <string>8B793FA221F60766006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B7E3E5E20A68F7800482CB5</string>
+ <string>8B793FA321F60766006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B7E3E5F20A68F7800482CB5</string>
+ <string>8B793FA421F60766006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -673,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>547787531.91072297</real>
+ <real>569771878.44873595</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -691,10 +652,10 @@
<key>WindowOrderList</key>
<array>
<string>8B7E3E8520A6930B00482CB5</string>
- <string>/Users/christopherjohnson/Desktop/SingleEndedTriode/SingleEndedTriode.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>27 292 810 487 0 0 1440 878 </string>
+ <string>143 323 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/SingleEndedTriode/source/SingleEndedTriodeProc.cpp b/plugins/MacVST/SingleEndedTriode/source/SingleEndedTriodeProc.cpp
index 5781165..ef6694c 100755
--- a/plugins/MacVST/SingleEndedTriode/source/SingleEndedTriodeProc.cpp
+++ b/plugins/MacVST/SingleEndedTriode/source/SingleEndedTriodeProc.cpp
@@ -127,18 +127,14 @@ void SingleEndedTriode::processReplacing(float **inputs, float **outputs, VstInt
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -148,12 +144,6 @@ void SingleEndedTriode::processReplacing(float **inputs, float **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -276,18 +266,16 @@ void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -297,10 +285,4 @@ void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
} \ No newline at end of file
diff --git a/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.pbxuser
index 74e2298..2f3f896 100755
--- a/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461843;
- PBXWorkspaceStateSaveDate = 528461843;
+ PBXPerProjectTemplateStateSaveDate = 569772166;
+ PBXWorkspaceStateSaveDate = 569772166;
};
perUserProjectItems = {
8B38EA6F1D5BFCFD003DFCC5 /* PBXTextBookmark */ = 8B38EA6F1D5BFCFD003DFCC5 /* PBXTextBookmark */;
- 8B9D6FEC1F7EF6DF007AB60F /* PBXTextBookmark */ = 8B9D6FEC1F7EF6DF007AB60F /* PBXTextBookmark */;
+ 8B793FC121F6088F006E9731 /* PBXTextBookmark */ = 8B793FC121F6088F006E9731 /* PBXTextBookmark */;
8B9D7DC81F7FB021007AB60F /* PBXTextBookmark */ = 8B9D7DC81F7FB021007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -71,9 +71,9 @@
};
245463B80991757100464AD3 /* Slew.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 1131}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 1092}}";
sepNavSelRange = "{2877, 0}";
- sepNavVisRange = "{2783, 41}";
+ sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
@@ -117,15 +117,15 @@
vrLen = 222;
vrLoc = 2891;
};
- 8B9D6FEC1F7EF6DF007AB60F /* PBXTextBookmark */ = {
+ 8B793FC121F6088F006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* Slew.h */;
name = "Slew.h: 76";
rLen = 0;
rLoc = 2877;
rType = 0;
- vrLen = 88;
- vrLoc = 2736;
+ vrLen = 0;
+ vrLoc = 0;
};
8B9D7DC81F7FB021007AB60F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3
index 9040f1c..bfb6744 100755
--- a/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Slew/Slew.xcodeproj/christopherjohnson.perspectivev3
@@ -351,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7DC81F7FB021007AB60F</string>
+ <string>8B793FC121F6088F006E9731</string>
<key>history</key>
<array>
<string>8B38EA6F1D5BFCFD003DFCC5</string>
- <string>8B9D6FEC1F7EF6DF007AB60F</string>
+ <string>8B9D7DC81F7FB021007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 51}}</string>
+ <string>{{0, 0}, {603, 32}}</string>
<key>RubberWindowFrame</key>
<string>490 362 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>51pt</string>
+ <string>32pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>390pt</string>
+ <string>409pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,7 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
+ <string>{{10, 27}, {603, 382}}</string>
<key>RubberWindowFrame</key>
<string>490 362 810 487 0 0 1440 878 </string>
</dict>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7DC91F7FB021007AB60F</string>
+ <string>8B793FC221F6088F006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7DCA1F7FB021007AB60F</string>
+ <string>8B793FC321F6088F006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7DCB1F7FB021007AB60F</string>
+ <string>8B793FC421F6088F006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461857.798751</real>
+ <real>569772175.32019699</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,7 +652,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7DCC1F7FB021007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Slew/Slew.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser
index 439a734..418e2e4 100755
--- a/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.pbxuser
@@ -51,8 +51,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461866;
- PBXWorkspaceStateSaveDate = 528461866;
+ PBXPerProjectTemplateStateSaveDate = 569772312;
+ PBXWorkspaceStateSaveDate = 569772312;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
diff --git a/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3
index d6da55d..fb00966 100755
--- a/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Slew2/Slew2.xcodeproj/christopherjohnson.perspectivev3
@@ -339,13 +339,15 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>&lt;No Editor&gt;</string>
+ <string></string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
+ <key>PBXProjectModuleLabel</key>
+ <string></string>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -467,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7DE81F7FB03B007AB60F</string>
+ <string>8B793FE121F60920006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7DE91F7FB03B007AB60F</string>
+ <string>8B793FE221F60920006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7DEA1F7FB03B007AB60F</string>
+ <string>8B793FE321F60920006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -644,7 +646,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461883.34153903</real>
+ <real>569772320.81251204</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -661,7 +663,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7DEB1F7FB03B007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Slew2/Slew2.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser
index 1f24b3b..edacd41 100755
--- a/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* SlewOnly */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528461894;
- PBXWorkspaceStateSaveDate = 528461894;
+ PBXPerProjectTemplateStateSaveDate = 569772340;
+ PBXWorkspaceStateSaveDate = 569772340;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* SlewOnly */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3
index 1c0ad59..a8cc6e6 100755
--- a/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/christopherjohnson.perspectivev3
@@ -360,18 +360,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 69}}</string>
+ <string>{{0, 0}, {603, 51}}</string>
<key>RubberWindowFrame</key>
<string>471 286 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>69pt</string>
+ <string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>372pt</string>
+ <string>390pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -385,7 +385,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 363}}</string>
<key>RubberWindowFrame</key>
<string>471 286 810 487 0 0 1440 878 </string>
</dict>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7E111F7FB071007AB60F</string>
+ <string>8B79400021F6093C006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7E121F7FB071007AB60F</string>
+ <string>8B79400121F6093C006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7E131F7FB071007AB60F</string>
+ <string>8B79400221F6093C006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528461937.63799101</real>
+ <real>569772348.11004496</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7E141F7FB071007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/SlewOnly/SlewOnly.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/project.pbxproj b/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/project.pbxproj
index 7da4109..fc3c402 100755
--- a/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/SlewOnly/SlewOnly.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* SlewOnly */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "SlewOnly" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* SlewOnly */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser
index af4c470..6e07b6a 100755
--- a/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 548242309;
- PBXWorkspaceStateSaveDate = 548242309;
+ PBXPerProjectTemplateStateSaveDate = 569772524;
+ PBXWorkspaceStateSaveDate = 569772524;
};
perUserProjectItems = {
- 8BBFF88A20AD86E4005650EF /* XCBuildMessageTextBookmark */ = 8BBFF88A20AD86E4005650EF /* XCBuildMessageTextBookmark */;
- 8BBFF88B20AD86E4005650EF /* PBXTextBookmark */ = 8BBFF88B20AD86E4005650EF /* PBXTextBookmark */;
+ 8B79401F21F60A00006E9731 /* XCBuildMessageTextBookmark */ = 8B79401F21F60A00006E9731 /* XCBuildMessageTextBookmark */;
+ 8B79402021F60A00006E9731 /* PBXTextBookmark */ = 8B79402021F60A00006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -62,9 +62,9 @@
};
2407DEB6089929BA00EB68BF /* Spiral.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {712, 1560}}";
+ sepNavIntBoundsRect = "{{0, 0}, {663, 1469}}";
sepNavSelRange = "{2153, 0}";
- sepNavVisRange = "{2034, 288}";
+ sepNavVisRange = "{2076, 246}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
@@ -106,7 +106,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BBFF88A20AD86E4005650EF /* XCBuildMessageTextBookmark */ = {
+ 8B79401F21F60A00006E9731 /* XCBuildMessageTextBookmark */ = {
isa = PBXTextBookmark;
comments = "Unused variable 'chunkData'";
fRef = 2407DEB6089929BA00EB68BF /* Spiral.cpp */;
@@ -115,15 +115,15 @@
rLoc = 57;
rType = 1;
};
- 8BBFF88B20AD86E4005650EF /* PBXTextBookmark */ = {
+ 8B79402021F60A00006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* Spiral.cpp */;
name = "Spiral.cpp: 58";
rLen = 0;
rLoc = 2153;
rType = 0;
- vrLen = 288;
- vrLoc = 2034;
+ vrLen = 246;
+ vrLoc = 2076;
};
8D01CCC60486CAD60068D4B7 /* Spiral */ = {
activeExec = 0;
diff --git a/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3
index 77cc949..4c7e827 100755
--- a/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Spiral/Spiral.xcodeproj/christopherjohnson.perspectivev3
@@ -321,7 +321,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>21 283 810 487 0 0 1440 878 </string>
+ <string>283 293 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -349,10 +349,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBFF88B20AD86E4005650EF</string>
+ <string>8B79402021F60A00006E9731</string>
<key>history</key>
<array>
- <string>8BBFF88A20AD86E4005650EF</string>
+ <string>8B79401F21F60A00006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -366,18 +366,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>21 283 810 487 0 0 1440 878 </string>
+ <string>283 293 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -391,7 +391,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -445,9 +445,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
<key>RubberWindowFrame</key>
- <string>21 283 810 487 0 0 1440 878 </string>
+ <string>283 293 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -475,11 +475,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBFF88C20AD86E4005650EF</string>
+ <string>8B79402121F60A00006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBFF88D20AD86E4005650EF</string>
+ <string>8B79402221F60A00006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBFF88E20AD86E4005650EF</string>
+ <string>8B79402321F60A00006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -632,7 +632,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>548243172.70111001</real>
+ <real>569772544.89690602</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -649,11 +649,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBFF88F20AD86E4005650EF</string>
- <string>/Users/christopherjohnson/Desktop/Spiral/Spiral.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/Spiral/Spiral.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>21 283 810 487 0 0 1440 878 </string>
+ <string>283 293 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Spiral/source/SpiralProc.cpp b/plugins/MacVST/Spiral/source/SpiralProc.cpp
index d43a93a..4aea5bc 100755
--- a/plugins/MacVST/Spiral/source/SpiralProc.cpp
+++ b/plugins/MacVST/Spiral/source/SpiralProc.cpp
@@ -60,18 +60,14 @@ void Spiral::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
inputSampleL = sin(inputSampleL * fabs(inputSampleL)) / ((inputSampleL == 0.0) ?1:fabs(inputSampleL));
inputSampleR = sin(inputSampleR * fabs(inputSampleR)) / ((inputSampleR == 0.0) ?1:fabs(inputSampleR));
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -81,12 +77,6 @@ void Spiral::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -142,18 +132,16 @@ void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleL = sin(inputSampleL * fabs(inputSampleL)) / ((inputSampleL == 0.0) ?1:fabs(inputSampleL));
inputSampleR = sin(inputSampleR * fabs(inputSampleR)) / ((inputSampleR == 0.0) ?1:fabs(inputSampleR));
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -163,10 +151,4 @@ void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser
index 998d404..73c6829 100755
--- a/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553978416;
- PBXWorkspaceStateSaveDate = 553978416;
+ PBXPerProjectTemplateStateSaveDate = 569772566;
+ PBXWorkspaceStateSaveDate = 569772566;
};
perUserProjectItems = {
- 8BBD182B21050DB30015A233 /* PBXBookmark */ = 8BBD182B21050DB30015A233 /* PBXBookmark */;
- 8BBD1834210525AC0015A233 /* XCBuildMessageTextBookmark */ = 8BBD1834210525AC0015A233 /* XCBuildMessageTextBookmark */;
+ 8B79404021F60A24006E9731 /* PBXTextBookmark */ = 8B79404021F60A24006E9731 /* PBXTextBookmark */;
+ 8B79404421F60A24006E9731 /* PBXTextBookmark */ = 8B79404421F60A24006E9731 /* PBXTextBookmark */;
8BBD1835210525AC0015A233 /* PBXTextBookmark */ = 8BBD1835210525AC0015A233 /* PBXTextBookmark */;
8BBD1838210525AC0015A233 /* PBXTextBookmark */ = 8BBD1838210525AC0015A233 /* PBXTextBookmark */;
};
@@ -80,17 +80,17 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}";
+ sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}";
sepNavSelRange = "{10616, 0}";
- sepNavVisRange = "{10459, 399}";
+ sepNavVisRange = "{10459, 280}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
24D8286F09A914000093AEF8 /* Spiral2Proc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 3913}}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 3497}}";
sepNavSelRange = "{8913, 0}";
- sepNavVisRange = "{6147, 2094}";
+ sepNavVisRange = "{3322, 1681}";
sepNavWindowFrame = "{{18, 47}, {895, 831}}";
};
};
@@ -108,18 +108,25 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BBD182B21050DB30015A233 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 24D8286F09A914000093AEF8 /* Spiral2Proc.cpp */;
- };
- 8BBD1834210525AC0015A233 /* XCBuildMessageTextBookmark */ = {
+ 8B79404021F60A24006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- comments = "Deprecated conversion from string constant to 'char*'";
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
- fallbackIsa = XCBuildMessageTextBookmark;
- rLen = 1;
- rLoc = 306;
- rType = 1;
+ name = "audioeffectx.cpp: 307";
+ rLen = 0;
+ rLoc = 10616;
+ rType = 0;
+ vrLen = 280;
+ vrLoc = 10459;
+ };
+ 8B79404421F60A24006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* Spiral2Proc.cpp */;
+ name = "Spiral2Proc.cpp: 260";
+ rLen = 0;
+ rLoc = 8913;
+ rType = 0;
+ vrLen = 1681;
+ vrLoc = 3322;
};
8BBD1835210525AC0015A233 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3
index 376de96..08c20ea 100755
--- a/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Spiral2/Spiral2.xcodeproj/christopherjohnson.perspectivev3
@@ -241,10 +241,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBD1838210525AC0015A233</string>
+ <string>8B79404421F60A24006E9731</string>
<key>history</key>
<array>
- <string>8BBD182B21050DB30015A233</string>
+ <string>8BBD1838210525AC0015A233</string>
</array>
</dict>
<key>SplitCount</key>
@@ -297,6 +297,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -362,7 +364,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>5 340 810 487 0 0 1440 878 </string>
+ <string>432 361 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -390,10 +392,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBD1835210525AC0015A233</string>
+ <string>8B79404021F60A24006E9731</string>
<key>history</key>
<array>
- <string>8BBD1834210525AC0015A233</string>
+ <string>8BBD1835210525AC0015A233</string>
</array>
</dict>
<key>SplitCount</key>
@@ -407,18 +409,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>5 340 810 487 0 0 1440 878 </string>
+ <string>432 361 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -432,7 +434,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>432 361 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -487,8 +491,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>5 340 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -516,11 +518,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBD181021050A370015A233</string>
+ <string>8B79404121F60A24006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBD181121050A370015A233</string>
+ <string>8B79404221F60A24006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBD181221050A370015A233</string>
+ <string>8B79404321F60A24006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -673,7 +675,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553985452.30988598</real>
+ <real>569772580.33098996</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -691,10 +693,10 @@
<key>WindowOrderList</key>
<array>
<string>8BBD1836210525AC0015A233</string>
- <string>/Users/christopherjohnson/Desktop/Spiral2/Spiral2.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/Spiral2/Spiral2.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>5 340 810 487 0 0 1440 878 </string>
+ <string>432 361 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/Spiral2/source/Spiral2Proc.cpp b/plugins/MacVST/Spiral2/source/Spiral2Proc.cpp
index d309448..a8669c5 100755
--- a/plugins/MacVST/Spiral2/source/Spiral2Proc.cpp
+++ b/plugins/MacVST/Spiral2/source/Spiral2Proc.cpp
@@ -118,18 +118,14 @@ void Spiral2::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
prevSampleR = drySampleR;
flip = !flip;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -139,12 +135,6 @@ void Spiral2::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -259,18 +249,16 @@ void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32
prevSampleR = drySampleR;
flip = !flip;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -280,10 +268,4 @@ void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser
index 82b4c8d..dd67748 100755
--- a/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528462002;
- PBXWorkspaceStateSaveDate = 528462002;
+ PBXPerProjectTemplateStateSaveDate = 569772605;
+ PBXWorkspaceStateSaveDate = 569772605;
};
perUserProjectItems = {
- 8B9D70751F7EF81B007AB60F /* PBXTextBookmark */ = 8B9D70751F7EF81B007AB60F /* PBXTextBookmark */;
+ 8B79406121F60A46006E9731 /* PBXTextBookmark */ = 8B79406121F60A46006E9731 /* PBXTextBookmark */;
8B9D7E451F7FB0C9007AB60F /* PBXTextBookmark */ = 8B9D7E451F7FB0C9007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -106,15 +106,15 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D70751F7EF81B007AB60F /* PBXTextBookmark */ = {
+ 8B79406121F60A46006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
rLen = 0;
rLoc = 10616;
rType = 0;
- vrLen = 123;
- vrLoc = 10613;
+ vrLen = 0;
+ vrLoc = 0;
};
8B9D7E451F7FB0C9007AB60F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3
index dbfa3aa..7a37b96 100755
--- a/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/StarChild/StarChild.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7E451F7FB0C9007AB60F</string>
+ <string>8B79406121F60A46006E9731</string>
<key>history</key>
<array>
- <string>8B9D70751F7EF81B007AB60F</string>
+ <string>8B9D7E451F7FB0C9007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 32}}</string>
+ <string>{{0, 0}, {603, 13}}</string>
<key>RubberWindowFrame</key>
<string>423 305 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>32pt</string>
+ <string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>409pt</string>
+ <string>428pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
+ <string>{{10, 27}, {603, 401}}</string>
<key>RubberWindowFrame</key>
<string>423 305 810 487 0 0 1440 878 </string>
</dict>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7E461F7FB0C9007AB60F</string>
+ <string>8B79406221F60A46006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7E471F7FB0C9007AB60F</string>
+ <string>8B79406321F60A46006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7E481F7FB0C9007AB60F</string>
+ <string>8B79406421F60A46006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528462025.44259501</real>
+ <real>569772614.68796301</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7E491F7FB0C9007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/StarChild/StarChild.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/StarChild/source/StarChild.cpp b/plugins/MacVST/StarChild/source/StarChild.cpp
index 84becbc..1b29d50 100755
--- a/plugins/MacVST/StarChild/source/StarChild.cpp
+++ b/plugins/MacVST/StarChild/source/StarChild.cpp
@@ -65,11 +65,8 @@ StarChild::StarChild(audioMasterCallback audioMaster) :
increment = 1;
dutyCycle = 1;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/StarChild/source/StarChild.h b/plugins/MacVST/StarChild/source/StarChild.h
index 7ae986a..630be3c 100755
--- a/plugins/MacVST/StarChild/source/StarChild.h
+++ b/plugins/MacVST/StarChild/source/StarChild.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double d[45102];
diff --git a/plugins/MacVST/StarChild/source/StarChildProc.cpp b/plugins/MacVST/StarChild/source/StarChildProc.cpp
index 03c8e31..047948a 100755
--- a/plugins/MacVST/StarChild/source/StarChildProc.cpp
+++ b/plugins/MacVST/StarChild/source/StarChildProc.cpp
@@ -14,9 +14,6 @@ void StarChild::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -392,25 +389,14 @@ void StarChild::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR += drySampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -429,9 +415,6 @@ void StarChild::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -807,25 +790,16 @@ void StarChild::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR += drySampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser
index 59f72aa..06f0165 100755
--- a/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 546569458;
- PBXWorkspaceStateSaveDate = 546569458;
+ PBXPerProjectTemplateStateSaveDate = 569772631;
+ PBXWorkspaceStateSaveDate = 569772631;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -58,17 +58,17 @@
};
2407DEB6089929BA00EB68BF /* StereoFX.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1833}}";
- sepNavSelRange = "{601, 0}";
- sepNavVisRange = "{2949, 2162}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1846}}";
+ sepNavSelRange = "{548, 0}";
+ sepNavVisRange = "{0, 1959}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* StereoFX.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 936}}";
- sepNavSelRange = "{2618, 0}";
- sepNavVisRange = "{0, 2405}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 910}}";
+ sepNavSelRange = "{2498, 0}";
+ sepNavVisRange = "{347, 2231}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
diff --git a/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3
index 2a5be24..1e8fb00 100755
--- a/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/StereoFX/StereoFX.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -298,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -321,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>19 357 810 487 0 0 1440 878 </string>
+ <string>326 318 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -360,7 +362,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>19 357 810 487 0 0 1440 878 </string>
+ <string>326 318 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -439,7 +441,7 @@
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
- <string>19 357 810 487 0 0 1440 878 </string>
+ <string>326 318 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -467,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC5CFB52093FD050058B257</string>
+ <string>8B79408D21F60A83006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC5CFB62093FD050058B257</string>
+ <string>8B79408E21F60A83006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BC5CFB72093FD050058B257</string>
+ <string>8B79408F21F60A83006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -624,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>546571504.84971404</real>
+ <real>569772675.65113199</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -641,11 +643,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BC5CFDD209404F00058B257</string>
- <string>/Users/christopherjohnson/Desktop/StereoFX/StereoFX.xcodeproj</string>
+ <string>8B79409021F60A83006E9731</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/StereoFX/StereoFX.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>19 357 810 487 0 0 1440 878 </string>
+ <string>326 318 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/StereoFX/source/StereoFX.cpp b/plugins/MacVST/StereoFX/source/StereoFX.cpp
index 63c23db..704cbf3 100755
--- a/plugins/MacVST/StereoFX/source/StereoFX.cpp
+++ b/plugins/MacVST/StereoFX/source/StereoFX.cpp
@@ -17,10 +17,8 @@ StereoFX::StereoFX(audioMasterCallback audioMaster) :
C = 0.0;
iirSampleA = 0.0;
iirSampleB = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
flip = false;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/MacVST/StereoFX/source/StereoFX.h b/plugins/MacVST/StereoFX/source/StereoFX.h
index 6748d1e..7a36059 100755
--- a/plugins/MacVST/StereoFX/source/StereoFX.h
+++ b/plugins/MacVST/StereoFX/source/StereoFX.h
@@ -56,10 +56,8 @@ private:
double iirSampleA;
double iirSampleB;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
//default stuff
diff --git a/plugins/MacVST/StereoFX/source/StereoFXProc.cpp b/plugins/MacVST/StereoFX/source/StereoFXProc.cpp
index 49be44f..0e9de74 100755
--- a/plugins/MacVST/StereoFX/source/StereoFXProc.cpp
+++ b/plugins/MacVST/StereoFX/source/StereoFXProc.cpp
@@ -17,9 +17,6 @@ void StereoFX::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double mid;
@@ -138,25 +135,14 @@ void StereoFX::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -178,9 +164,6 @@ void StereoFX::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double mid;
@@ -299,25 +282,16 @@ void StereoFX::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser
index bb7bda4..d59c2aa 100755
--- a/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* SubsOnly */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528462034;
- PBXWorkspaceStateSaveDate = 528462034;
+ PBXPerProjectTemplateStateSaveDate = 569772699;
+ PBXWorkspaceStateSaveDate = 569772699;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* SubsOnly */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3
index d989da0..1708702 100755
--- a/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/christopherjohnson.perspectivev3
@@ -360,18 +360,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 32}}</string>
+ <string>{{0, 0}, {603, 13}}</string>
<key>RubberWindowFrame</key>
<string>397 265 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>32pt</string>
+ <string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>409pt</string>
+ <string>428pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -385,7 +385,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
+ <string>{{10, 27}, {603, 401}}</string>
<key>RubberWindowFrame</key>
<string>397 265 810 487 0 0 1440 878 </string>
</dict>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7E651F7FB0E3007AB60F</string>
+ <string>8B7940AD21F60AEF006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7E661F7FB0E3007AB60F</string>
+ <string>8B7940AE21F60AEF006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7E671F7FB0E3007AB60F</string>
+ <string>8B7940AF21F60AEF006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528462051.69883603</real>
+ <real>569772783.81786597</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7E681F7FB0E3007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/SubsOnly/SubsOnly.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/project.pbxproj b/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/project.pbxproj
index 4143c63..27466c7 100755
--- a/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/SubsOnly/SubsOnly.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* SubsOnly */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "SubsOnly" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
+ 8D01CCC60486CAD60068D4B7 /* SubsOnly */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.pbxuser
index ed57dee..80718cb 100755
--- a/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* Surge */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528463544;
- PBXWorkspaceStateSaveDate = 528463544;
+ PBXPerProjectTemplateStateSaveDate = 569772809;
+ PBXWorkspaceStateSaveDate = 569772809;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -58,17 +58,17 @@
};
2407DEB6089929BA00EB68BF /* Surge.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1690}}";
- sepNavSelRange = "{609, 0}";
- sepNavVisRange = "{0, 1883}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1807}}";
+ sepNavSelRange = "{459, 0}";
+ sepNavVisRange = "{0, 1913}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Surge.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 936}}";
- sepNavSelRange = "{2622, 0}";
- sepNavVisRange = "{354, 2279}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 910}}";
+ sepNavSelRange = "{2423, 0}";
+ sepNavVisRange = "{335, 2246}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* Surge */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3
index 2e5daef..149ac16 100755
--- a/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Surge/Surge.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -386,8 +386,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>456 253 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -441,7 +439,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 282}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>456 253 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7E841F7FB6D2007AB60F</string>
+ <string>8B7940CE21F60B33006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7E851F7FB6D2007AB60F</string>
+ <string>8B7940CF21F60B33006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7E861F7FB6D2007AB60F</string>
+ <string>8B7940D021F60B33006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528463570.73526001</real>
+ <real>569772851.163517</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7E871F7FB6D2007AB60F</string>
+ <string>8B7940D121F60B33006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Surge/Surge.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Surge/Surge.xcodeproj/project.pbxproj b/plugins/MacVST/Surge/Surge.xcodeproj/project.pbxproj
index 20bb253..f42ed0d 100755
--- a/plugins/MacVST/Surge/Surge.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/Surge/Surge.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* Surge */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Surge" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
+ 8D01CCC60486CAD60068D4B7 /* Surge */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/Surge/source/Surge.cpp b/plugins/MacVST/Surge/source/Surge.cpp
index 711c0df..222fbcf 100755
--- a/plugins/MacVST/Surge/source/Surge.cpp
+++ b/plugins/MacVST/Surge/source/Surge.cpp
@@ -12,10 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new S
Surge::Surge(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
flip = true;
chaseA = 0.0;
chaseB = 0.0;
diff --git a/plugins/MacVST/Surge/source/Surge.h b/plugins/MacVST/Surge/source/Surge.h
index 0e485c3..7f42c9f 100755
--- a/plugins/MacVST/Surge/source/Surge.h
+++ b/plugins/MacVST/Surge/source/Surge.h
@@ -53,10 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
long double chaseA;
long double chaseB;
diff --git a/plugins/MacVST/Surge/source/SurgeProc.cpp b/plugins/MacVST/Surge/source/SurgeProc.cpp
index 7a72b2f..cd82bad 100755
--- a/plugins/MacVST/Surge/source/SurgeProc.cpp
+++ b/plugins/MacVST/Surge/source/SurgeProc.cpp
@@ -17,9 +17,6 @@ void Surge::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -120,27 +117,14 @@ void Surge::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -162,9 +146,6 @@ void Surge::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -264,27 +245,16 @@ void Surge::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser
index c98ccc2..4f6f5f0 100755
--- a/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528463581;
- PBXWorkspaceStateSaveDate = 528463581;
+ PBXPerProjectTemplateStateSaveDate = 569772872;
+ PBXWorkspaceStateSaveDate = 569772872;
};
perUserProjectItems = {
- 8B9D70D31F7EF8CC007AB60F /* PBXTextBookmark */ = 8B9D70D31F7EF8CC007AB60F /* PBXTextBookmark */;
+ 8B7940F021F60B71006E9731 /* PBXTextBookmark */ = 8B7940F021F60B71006E9731 /* PBXTextBookmark */;
8B9D7EA31F7FB6EC007AB60F /* PBXTextBookmark */ = 8B9D7EA31F7FB6EC007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -62,23 +62,23 @@
};
2407DEB6089929BA00EB68BF /* SurgeTide.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1846}}";
- sepNavSelRange = "{4583, 0}";
- sepNavVisRange = "{0, 1913}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1859}}";
+ sepNavSelRange = "{517, 0}";
+ sepNavVisRange = "{0, 1960}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* SurgeTide.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 949}}";
- sepNavSelRange = "{2633, 0}";
- sepNavVisRange = "{377, 2268}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 923}}";
+ sepNavSelRange = "{2465, 0}";
+ sepNavVisRange = "{369, 2224}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {747, 19864}}";
+ sepNavIntBoundsRect = "{{0, 0}, {747, 19877}}";
sepNavSelRange = "{10616, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
@@ -106,7 +106,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D70D31F7EF8CC007AB60F /* PBXTextBookmark */ = {
+ 8B7940F021F60B71006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
diff --git a/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3
index 4c96578..ad29a23 100755
--- a/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/SurgeTide/SurgeTide.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7EA31F7FB6EC007AB60F</string>
+ <string>8B7940F021F60B71006E9731</string>
<key>history</key>
<array>
- <string>8B9D70D31F7EF8CC007AB60F</string>
+ <string>8B9D7EA31F7FB6EC007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>384 385 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
- <key>RubberWindowFrame</key>
- <string>384 385 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 414}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -449,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>384 385 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7EA41F7FB6EC007AB60F</string>
+ <string>8B7940F121F60B71006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7EA51F7FB6EC007AB60F</string>
+ <string>8B7940F221F60B71006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7EA61F7FB6EC007AB60F</string>
+ <string>8B7940F321F60B71006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528463596.67712098</real>
+ <real>569772913.08327401</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7EA71F7FB6EC007AB60F</string>
+ <string>8B7940F421F60B71006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacVST/SurgeTide/SurgeTide.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/SurgeTide/source/SurgeTide.cpp b/plugins/MacVST/SurgeTide/source/SurgeTide.cpp
index 8df46c0..494e886 100755
--- a/plugins/MacVST/SurgeTide/source/SurgeTide.cpp
+++ b/plugins/MacVST/SurgeTide/source/SurgeTide.cpp
@@ -15,10 +15,8 @@ SurgeTide::SurgeTide(audioMasterCallback audioMaster) :
A = 0.5;
B = 0.3;
C = 1.0;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
flip = true;
chaseA = 0.0;
chaseB = 0.0;
diff --git a/plugins/MacVST/SurgeTide/source/SurgeTide.h b/plugins/MacVST/SurgeTide/source/SurgeTide.h
index 27495d7..8f8cd42 100755
--- a/plugins/MacVST/SurgeTide/source/SurgeTide.h
+++ b/plugins/MacVST/SurgeTide/source/SurgeTide.h
@@ -54,10 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
long double chaseA;
long double chaseB;
diff --git a/plugins/MacVST/SurgeTide/source/SurgeTideProc.cpp b/plugins/MacVST/SurgeTide/source/SurgeTideProc.cpp
index 2fc6a1a..59a92aa 100755
--- a/plugins/MacVST/SurgeTide/source/SurgeTideProc.cpp
+++ b/plugins/MacVST/SurgeTide/source/SurgeTideProc.cpp
@@ -17,9 +17,6 @@ void SurgeTide::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -110,27 +107,14 @@ void SurgeTide::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -152,9 +136,6 @@ void SurgeTide::processDoubleReplacing(double **inputs, double **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -245,27 +226,16 @@ void SurgeTide::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.pbxuser
index dcb6a41..6dbf178 100755
--- a/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* Swell */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 532491124;
- PBXWorkspaceStateSaveDate = 532491124;
+ PBXPerProjectTemplateStateSaveDate = 569772934;
+ PBXWorkspaceStateSaveDate = 569772934;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* Swell */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3
index c2e2adb..4bb2aa5 100755
--- a/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Swell/Swell.xcodeproj/christopherjohnson.perspectivev3
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BCC7CDC1FBD2FDD00982BD6</string>
+ <string>8B79410721F60B8F006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BCC7CDD1FBD2FDD00982BD6</string>
+ <string>8B79410821F60B8F006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BCC7CDE1FBD2FDD00982BD6</string>
+ <string>8B79410921F60B8F006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>532492253.86718899</real>
+ <real>569772943.08427894</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/Swell/Swell.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/Swell/Swell.xcodeproj</string>
</array>
<key>WindowString</key>
<string>21 352 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/Swell/Swell.xcodeproj/project.pbxproj b/plugins/MacVST/Swell/Swell.xcodeproj/project.pbxproj
index 30d06b4..eb22bb1 100755
--- a/plugins/MacVST/Swell/Swell.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/Swell/Swell.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* Swell */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Swell" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* Swell */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/Swell/source/Swell.cpp b/plugins/MacVST/Swell/source/Swell.cpp
index 30518d8..e197cfb 100755
--- a/plugins/MacVST/Swell/source/Swell.cpp
+++ b/plugins/MacVST/Swell/source/Swell.cpp
@@ -21,11 +21,8 @@ Swell::Swell(audioMasterCallback audioMaster) :
louderL = false;
louderR = false;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Swell/source/Swell.h b/plugins/MacVST/Swell/source/Swell.h
index c383df2..7c108b7 100755
--- a/plugins/MacVST/Swell/source/Swell.h
+++ b/plugins/MacVST/Swell/source/Swell.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
diff --git a/plugins/MacVST/Swell/source/SwellProc.cpp b/plugins/MacVST/Swell/source/SwellProc.cpp
index 28c0aba..3ab1e9b 100755
--- a/plugins/MacVST/Swell/source/SwellProc.cpp
+++ b/plugins/MacVST/Swell/source/SwellProc.cpp
@@ -17,9 +17,6 @@ void Swell::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double thresholdOn = pow(A,2) * B;
double speedOn = (pow(B,2)*0.001)/overallscale;
@@ -97,25 +94,14 @@ void Swell::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -137,9 +123,6 @@ void Swell::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double thresholdOn = pow(A,2) * B;
double speedOn = (pow(B,2)*0.001)/overallscale;
@@ -217,25 +200,16 @@ void Swell::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser
index be05dd0..be05dd0 100644..100755
--- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser
diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3
index 79249f6..79249f6 100644..100755
--- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3
diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index a80c038..a80c038 100644..100755
--- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
index 5c38f94..5c38f94 100644..100755
--- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
index 314de0f..314de0f 100644..100755
--- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.mode1v3
index c572326..c572326 100644..100755
--- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.mode1v3
+++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.mode1v3
diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.pbxuser
index df94780..df94780 100644..100755
--- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.pbxuser
+++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.pbxuser
diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
index 8ee693f..8ee693f 100644..100755
--- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
+++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
index 5bccbcb..5bccbcb 100644..100755
--- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
index a7bdd62..a7bdd62 100644..100755
--- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
index 0df2de4..0df2de4 100644..100755
--- a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
+++ b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
diff --git a/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser
index c5631ab..c3bc4aa 100755
--- a/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.pbxuser
@@ -51,11 +51,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 566515719;
- PBXWorkspaceStateSaveDate = 566515719;
+ PBXPerProjectTemplateStateSaveDate = 569772961;
+ PBXWorkspaceStateSaveDate = 569772961;
};
perUserProjectItems = {
- 8BBB336F21C45BB700825986 /* PBXTextBookmark */ = 8BBB336F21C45BB700825986 /* PBXTextBookmark */;
+ 8B79412621F60BA9006E9731 /* PBXTextBookmark */ = 8B79412621F60BA9006E9731 /* PBXTextBookmark */;
8BBB337021C45BB700825986 /* PBXTextBookmark */ = 8BBB337021C45BB700825986 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -64,9 +64,9 @@
};
2407DEB6089929BA00EB68BF /* TapeDelay.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {789, 2093}}";
+ sepNavIntBoundsRect = "{{0, 0}, {789, 2054}}";
sepNavSelRange = "{5754, 0}";
- sepNavVisRange = "{4829, 428}";
+ sepNavVisRange = "{4902, 355}";
sepNavWindowFrame = "{{561, 47}, {895, 831}}";
};
};
@@ -108,15 +108,15 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8BBB336F21C45BB700825986 /* PBXTextBookmark */ = {
+ 8B79412621F60BA9006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* TapeDelay.cpp */;
name = "TapeDelay.cpp: 147";
rLen = 0;
rLoc = 5754;
rType = 0;
- vrLen = 428;
- vrLoc = 4829;
+ vrLen = 355;
+ vrLoc = 4902;
};
8BBB337021C45BB700825986 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
diff --git a/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3
index 65a91fc..98c0fc3 100755
--- a/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/TapeDelay/TapeDelay.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>670 293 810 487 0 0 1440 878 </string>
+ <string>574 298 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BBB337021C45BB700825986</string>
+ <string>8B79412621F60BA9006E9731</string>
<key>history</key>
<array>
- <string>8BBB336F21C45BB700825986</string>
+ <string>8BBB337021C45BB700825986</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 102}}</string>
+ <string>{{0, 0}, {603, 86}}</string>
<key>RubberWindowFrame</key>
- <string>670 293 810 487 0 0 1440 878 </string>
+ <string>574 298 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>102pt</string>
+ <string>86pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>355pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,9 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 312}}</string>
+ <string>{{10, 27}, {603, 328}}</string>
<key>RubberWindowFrame</key>
- <string>670 293 810 487 0 0 1440 878 </string>
+ <string>574 298 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBB337121C45BB700825986</string>
+ <string>8B79412721F60BA9006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBB337221C45BB700825986</string>
+ <string>8B79412821F60BA9006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBB337321C45BB700825986</string>
+ <string>8B79412921F60BA9006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -654,7 +654,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>566516663.29121006</real>
+ <real>569772969.46289504</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -674,7 +674,7 @@
<string>/Users/christopherjohnson/Desktop/MacVST/TapeDelay/TapeDelay.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>670 293 810 487 0 0 1440 878 </string>
+ <string>574 298 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/TapeDelay/source/TapeDelayProc.cpp b/plugins/MacVST/TapeDelay/source/TapeDelayProc.cpp
index 43fa743..e2f1ade 100755
--- a/plugins/MacVST/TapeDelay/source/TapeDelayProc.cpp
+++ b/plugins/MacVST/TapeDelay/source/TapeDelayProc.cpp
@@ -156,18 +156,14 @@ void TapeDelay::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleL = (inputSampleL * dry) + (dL[delay] * wet);
inputSampleR = (inputSampleR * dry) + (dR[delay] * wet);
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -177,12 +173,6 @@ void TapeDelay::processReplacing(float **inputs, float **outputs, VstInt32 sampl
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -333,18 +323,16 @@ void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleL = (inputSampleL * dry) + (dL[delay] * wet);
inputSampleR = (inputSampleR * dry) + (dR[delay] * wet);
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -354,10 +342,4 @@ void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser
index fe5becd..8a6d7a7 100755
--- a/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* TapeDither */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528463605;
- PBXWorkspaceStateSaveDate = 528463605;
+ PBXPerProjectTemplateStateSaveDate = 557693738;
+ PBXWorkspaceStateSaveDate = 557693738;
+ };
+ perUserProjectItems = {
+ 8B913F7F213DBBCF00BA6EEC /* PBXBookmark */ = 8B913F7F213DBBCF00BA6EEC /* PBXBookmark */;
+ 8B913F80213DBBCF00BA6EEC /* PBXTextBookmark */ = 8B913F80213DBBCF00BA6EEC /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -82,10 +86,10 @@
};
24D8286F09A914000093AEF8 /* TapeDitherProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3068}}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 2405}}";
sepNavSelRange = "{634, 0}";
- sepNavVisRange = "{355, 2231}";
- sepNavWindowFrame = "{{405, 47}, {895, 831}}";
+ sepNavVisRange = "{0, 0}";
+ sepNavWindowFrame = "{{16, 47}, {895, 831}}";
};
};
8B02375E1D42B1C400E1E8C8 /* Source Control */ = {
@@ -102,7 +106,21 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8B913F7F213DBBCF00BA6EEC /* PBXBookmark */ = {
+ isa = PBXBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* TapeDitherProc.cpp */;
+ };
+ 8B913F80213DBBCF00BA6EEC /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* TapeDitherProc.cpp */;
+ name = "TapeDitherProc.cpp: 26";
+ rLen = 0;
+ rLoc = 634;
+ rType = 0;
+ vrLen = 0;
+ vrLoc = 0;
+ };
+ 8D01CCC60486CAD60068D4B7 /* TapeDither */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3
index 0786862..c000ce2 100755
--- a/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/TapeDither/TapeDither.xcodeproj/christopherjohnson.perspectivev3
@@ -339,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Gain.h</string>
+ <string>TapeDitherProc.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -347,7 +347,15 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
- <string>Gain.h</string>
+ <string>TapeDitherProc.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B913F80213DBBCF00BA6EEC</string>
+ <key>history</key>
+ <array>
+ <string>8B913F7F213DBBCF00BA6EEC</string>
+ </array>
</dict>
<key>SplitCount</key>
<string>1</string>
@@ -360,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 32}}</string>
+ <string>{{0, 0}, {603, 13}}</string>
<key>RubberWindowFrame</key>
<string>379 285 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>32pt</string>
+ <string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>409pt</string>
+ <string>428pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -385,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
+ <string>{{10, 27}, {603, 401}}</string>
<key>RubberWindowFrame</key>
<string>379 285 810 487 0 0 1440 878 </string>
</dict>
@@ -469,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7EC31F7FB712007AB60F</string>
+ <string>8B913F81213DBBCF00BA6EEC</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7EC41F7FB712007AB60F</string>
+ <string>8B913F82213DBBCF00BA6EEC</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7EC51F7FB712007AB60F</string>
+ <string>8B913F83213DBBCF00BA6EEC</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528463634.41372299</real>
+ <real>557693903.11264896</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +651,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7EC61F7FB712007AB60F</string>
+ <string>8B913F84213DBBCF00BA6EEC</string>
<string>/Users/christopherjohnson/Desktop/MacVST/TapeDither/TapeDither.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/TapeDither/TapeDither.xcodeproj/project.pbxproj b/plugins/MacVST/TapeDither/TapeDither.xcodeproj/project.pbxproj
index dafefdd..85188b9 100755
--- a/plugins/MacVST/TapeDither/TapeDither.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/TapeDither/TapeDither.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* TapeDither */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "TapeDither" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
+ 8D01CCC60486CAD60068D4B7 /* TapeDither */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser
index 3c2546d..db5f0e9 100755
--- a/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* TapeDust */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528463643;
- PBXWorkspaceStateSaveDate = 528463643;
+ PBXPerProjectTemplateStateSaveDate = 569772990;
+ PBXWorkspaceStateSaveDate = 569772990;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -58,18 +58,18 @@
};
2407DEB6089929BA00EB68BF /* TapeDust.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1807}}";
- sepNavSelRange = "{4129, 0}";
- sepNavVisRange = "{0, 1910}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1781}}";
+ sepNavSelRange = "{641, 0}";
+ sepNavVisRange = "{0, 1873}";
sepNavWindowFrame = "{{527, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* TapeDust.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 832}}";
- sepNavSelRange = "{421, 0}";
- sepNavVisRange = "{0, 2396}";
- sepNavWindowFrame = "{{513, 34}, {895, 831}}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 936}}";
+ sepNavSelRange = "{2457, 0}";
+ sepNavVisRange = "{365, 2218}";
+ sepNavWindowFrame = "{{513, 39}, {895, 831}}";
};
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
@@ -82,9 +82,9 @@
};
24D8286F09A914000093AEF8 /* TapeDustProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 3653}}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 3484}}";
sepNavSelRange = "{5633, 1892}";
- sepNavVisRange = "{315, 2084}";
+ sepNavVisRange = "{1840, 1844}";
sepNavWindowFrame = "{{296, 47}, {895, 831}}";
};
};
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* TapeDust */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3
index 2985e5f..908494e 100755
--- a/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/TapeDust/TapeDust.xcodeproj/christopherjohnson.perspectivev3
@@ -361,18 +361,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {531, 202}}</string>
+ <string>{{0, 0}, {531, 188}}</string>
<key>RubberWindowFrame</key>
<string>280 175 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>202pt</string>
+ <string>188pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>406pt</string>
+ <string>420pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -386,9 +386,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 379}}</string>
- <key>RubberWindowFrame</key>
- <string>280 175 841 654 0 0 1440 878 </string>
+ <string>{{10, 27}, {531, 393}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -442,7 +440,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {531, 339}}</string>
+ <string>{{10, 27}, {531, 393}}</string>
+ <key>RubberWindowFrame</key>
+ <string>280 175 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -470,11 +470,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7EE21F7FB727007AB60F</string>
+ <string>8B79415321F60BEB006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7EE31F7FB727007AB60F</string>
+ <string>8B79415421F60BEB006E9731</string>
<string>8BD7274A1D46E5A5000176F0</string>
- <string>8B9D7EE41F7FB727007AB60F</string>
+ <string>8B79415521F60BEB006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -647,7 +647,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528463655.50013697</real>
+ <real>569773035.93911803</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -664,7 +664,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7EE51F7FB727007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/TapeDust/TapeDust.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/TapeDust/TapeDust.xcodeproj/project.pbxproj b/plugins/MacVST/TapeDust/TapeDust.xcodeproj/project.pbxproj
index 2a33807..5d00f6e 100755
--- a/plugins/MacVST/TapeDust/TapeDust.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/TapeDust/TapeDust.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
+ 8D01CCC60486CAD60068D4B7 /* TapeDust */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "TapeDust" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
+ 8D01CCC60486CAD60068D4B7 /* TapeDust */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/TapeDust/source/TapeDust.cpp b/plugins/MacVST/TapeDust/source/TapeDust.cpp
index 9638c14..0ce16e0 100755
--- a/plugins/MacVST/TapeDust/source/TapeDust.cpp
+++ b/plugins/MacVST/TapeDust/source/TapeDust.cpp
@@ -22,10 +22,8 @@ TapeDust::TapeDust(audioMasterCallback audioMaster) :
fR[count] = 0.0;
}
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/MacVST/TapeDust/source/TapeDust.h b/plugins/MacVST/TapeDust/source/TapeDust.h
index 7b3a7fd..facbf40 100755
--- a/plugins/MacVST/TapeDust/source/TapeDust.h
+++ b/plugins/MacVST/TapeDust/source/TapeDust.h
@@ -53,10 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool fpFlip;
//default stuff
diff --git a/plugins/MacVST/TapeDust/source/TapeDustProc.cpp b/plugins/MacVST/TapeDust/source/TapeDustProc.cpp
index 3d6588d..429a366 100755
--- a/plugins/MacVST/TapeDust/source/TapeDustProc.cpp
+++ b/plugins/MacVST/TapeDust/source/TapeDustProc.cpp
@@ -13,9 +13,6 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -93,6 +90,7 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = -inputSampleL;
inputSampleR = -inputSampleR;
}
+ fpFlip = !fpFlip;
for(int count = 0; count < 9; count++) {
if (gainL > 1.0) {
@@ -120,25 +118,14 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -156,9 +143,6 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -236,6 +220,7 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = -inputSampleL;
inputSampleR = -inputSampleR;
}
+ fpFlip = !fpFlip;
for(int count = 0; count < 9; count++) {
if (gainL > 1.0) {
@@ -263,25 +248,16 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser
index 712e902..6e56b6e 100755
--- a/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* TapeFat */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 566515698;
- PBXWorkspaceStateSaveDate = 566515698;
+ PBXPerProjectTemplateStateSaveDate = 569773058;
+ PBXWorkspaceStateSaveDate = 569773058;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* TapeFat */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3
index 9b9a82f..2a91836 100755
--- a/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/TapeFat/TapeFat.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -384,6 +386,8 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>60 334 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -438,8 +442,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
- <key>RubberWindowFrame</key>
- <string>60 334 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -467,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBB339A21C45C7500825986</string>
+ <string>8B79416821F60C09006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBB339B21C45C7500825986</string>
+ <string>8B79416921F60C09006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBB339C21C45C7500825986</string>
+ <string>8B79416A21F60C09006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -624,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>566516853.28770995</real>
+ <real>569773065.92286897</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -641,8 +643,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8BBB339D21C45C7500825986</string>
- <string>/Users/christopherjohnson/Desktop/TapeFat/TapeFat.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/TapeFat/TapeFat.xcodeproj</string>
</array>
<key>WindowString</key>
<string>60 334 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/TapeFat/TapeFat.xcodeproj/project.pbxproj b/plugins/MacVST/TapeFat/TapeFat.xcodeproj/project.pbxproj
index ec6dc2a..4d47968 100755
--- a/plugins/MacVST/TapeFat/TapeFat.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/TapeFat/TapeFat.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* TapeFat */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "TapeFat" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* TapeFat */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/TapeFat/source/TapeFatProc.cpp b/plugins/MacVST/TapeFat/source/TapeFatProc.cpp
index 3f81d20..8eb0e98 100755
--- a/plugins/MacVST/TapeFat/source/TapeFatProc.cpp
+++ b/plugins/MacVST/TapeFat/source/TapeFatProc.cpp
@@ -119,18 +119,14 @@ void TapeFat::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
gcount--;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -140,12 +136,6 @@ void TapeFat::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -260,18 +250,16 @@ void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32
gcount--;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -281,10 +269,4 @@ void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser
index 79ebcf3..15ab8ae 100755
--- a/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.pbxuser
@@ -49,13 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528463664;
- PBXWorkspaceStateSaveDate = 528463664;
+ PBXPerProjectTemplateStateSaveDate = 569773085;
+ PBXWorkspaceStateSaveDate = 569773085;
};
perUserProjectItems = {
- 8B9D712F1F7EF94F007AB60F /* PBXTextBookmark */ = 8B9D712F1F7EF94F007AB60F /* PBXTextBookmark */;
+ 8B79419321F60C4C006E9731 /* PBXTextBookmark */ = 8B79419321F60C4C006E9731 /* PBXTextBookmark */;
8B9D7F011F7FB742007AB60F /* PBXTextBookmark */ = 8B9D7F011F7FB742007AB60F /* PBXTextBookmark */;
- 8BFE4BF31D92E5D600BBC6AC /* PBXTextBookmark */ = 8BFE4BF31D92E5D600BBC6AC /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -63,17 +62,17 @@
};
2407DEB6089929BA00EB68BF /* Thunder.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {848, 1898}}";
- sepNavSelRange = "{639, 0}";
- sepNavVisRange = "{2907, 2125}";
+ sepNavIntBoundsRect = "{{0, 0}, {848, 1937}}";
+ sepNavSelRange = "{494, 0}";
+ sepNavVisRange = "{0, 1878}";
sepNavWindowFrame = "{{542, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Thunder.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {866, 1092}}";
- sepNavSelRange = "{2556, 0}";
- sepNavVisRange = "{609, 2247}";
+ sepNavIntBoundsRect = "{{0, 0}, {866, 1066}}";
+ sepNavSelRange = "{2752, 0}";
+ sepNavVisRange = "{591, 2213}";
sepNavWindowFrame = "{{545, 47}, {895, 831}}";
};
};
@@ -87,7 +86,7 @@
};
24D8286F09A914000093AEF8 /* ThunderProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 6630}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 6240}}";
sepNavSelRange = "{1105, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{545, 47}, {895, 831}}";
@@ -107,10 +106,10 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D712F1F7EF94F007AB60F /* PBXTextBookmark */ = {
+ 8B79419321F60C4C006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ThunderProc.cpp */;
- name = "ThunderProc.cpp: 44";
+ name = "ThunderProc.cpp: 43";
rLen = 0;
rLoc = 1105;
rType = 0;
@@ -127,16 +126,6 @@
vrLen = 0;
vrLoc = 0;
};
- 8BFE4BF31D92E5D600BBC6AC /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 245463B80991757100464AD3 /* Thunder.h */;
- name = "Thunder.h: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 101;
- vrLoc = 0;
- };
8D01CCC60486CAD60068D4B7 /* Thunder */ = {
activeExec = 0;
};
diff --git a/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3
index 72d0e9f..b395b32 100755
--- a/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Thunder/Thunder.xcodeproj/christopherjohnson.perspectivev3
@@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>6</integer>
+ <integer>5</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@@ -351,11 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7F011F7FB742007AB60F</string>
+ <string>8B79419321F60C4C006E9731</string>
<key>history</key>
<array>
- <string>8BFE4BF31D92E5D600BBC6AC</string>
- <string>8B9D712F1F7EF94F007AB60F</string>
+ <string>8B9D7F011F7FB742007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>459 303 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,9 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
- <key>RubberWindowFrame</key>
- <string>459 303 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 414}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -450,7 +447,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 345}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
+ <key>RubberWindowFrame</key>
+ <string>459 303 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -478,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7F021F7FB742007AB60F</string>
+ <string>8B79419421F60C4C006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7F031F7FB742007AB60F</string>
+ <string>8B79419521F60C4C006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7F041F7FB742007AB60F</string>
+ <string>8B79419621F60C4C006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528463682.24477601</real>
+ <real>569773132.16742396</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7F051F7FB742007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Thunder/Thunder.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Thunder/source/Thunder.cpp b/plugins/MacVST/Thunder/source/Thunder.cpp
index 015eabd..7bc8226 100755
--- a/plugins/MacVST/Thunder/source/Thunder.cpp
+++ b/plugins/MacVST/Thunder/source/Thunder.cpp
@@ -15,10 +15,8 @@ Thunder::Thunder(audioMasterCallback audioMaster) :
A = 0.0;
B = 1.0;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
muSpeedA = 10000;
muSpeedB = 10000;
muCoefficientA = 1;
diff --git a/plugins/MacVST/Thunder/source/Thunder.h b/plugins/MacVST/Thunder/source/Thunder.h
index 1ef1d03..9e49054 100755
--- a/plugins/MacVST/Thunder/source/Thunder.h
+++ b/plugins/MacVST/Thunder/source/Thunder.h
@@ -69,10 +69,8 @@ private:
double iirSampleAM;
double iirSampleBM;
double iirSampleCM;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
float A;
diff --git a/plugins/MacVST/Thunder/source/ThunderProc.cpp b/plugins/MacVST/Thunder/source/ThunderProc.cpp
index bd401d4..2cf454d 100755
--- a/plugins/MacVST/Thunder/source/ThunderProc.cpp
+++ b/plugins/MacVST/Thunder/source/ThunderProc.cpp
@@ -40,9 +40,6 @@ void Thunder::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double resultML;
double resultMR;
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -225,27 +222,14 @@ void Thunder::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
inputSampleR *= outputGain;
}
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
@@ -291,9 +275,6 @@ void Thunder::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double resultML;
double resultMR;
- double fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -476,27 +457,16 @@ void Thunder::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR *= outputGain;
}
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
diff --git a/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser
index 6d067c0..6f55ad4 100755
--- a/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.pbxuser
@@ -49,15 +49,15 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528463719;
- PBXWorkspaceStateSaveDate = 528463719;
+ PBXPerProjectTemplateStateSaveDate = 569773171;
+ PBXWorkspaceStateSaveDate = 569773171;
};
perUserProjectItems = {
8B1A33851F16D336004DE6C5 /* PBXTextBookmark */ = 8B1A33851F16D336004DE6C5 /* PBXTextBookmark */;
8B1A33A71F16D5B5004DE6C5 /* PBXTextBookmark */ = 8B1A33A71F16D5B5004DE6C5 /* PBXTextBookmark */;
8B4846EC1F6D3E64007BD0D0 /* PBXTextBookmark */ = 8B4846EC1F6D3E64007BD0D0 /* PBXTextBookmark */;
- 8B9D716F1F7EFA45007AB60F /* PBXTextBookmark */ = 8B9D716F1F7EFA45007AB60F /* PBXTextBookmark */;
- 8B9D7F411F7FB77C007AB60F /* PBXTextBookmark */ = 8B9D7F411F7FB77C007AB60F /* PBXTextBookmark */;
+ 8B7941D521F60C99006E9731 /* PBXTextBookmark */ = 8B7941D521F60C99006E9731 /* PBXTextBookmark */;
+ 8B7941D921F60CC1006E9731 /* PBXTextBookmark */ = 8B7941D921F60CC1006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -89,9 +89,9 @@
};
24D8286F09A914000093AEF8 /* ToTape5Proc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {621, 10062}}";
- sepNavSelRange = "{39068, 0}";
- sepNavVisRange = "{191, 28}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 9685}}";
+ sepNavSelRange = "{584, 0}";
+ sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{400, 39}, {1005, 839}}";
};
};
@@ -146,25 +146,25 @@
vrLen = 135;
vrLoc = 3969;
};
- 8B9D716F1F7EFA45007AB60F /* PBXTextBookmark */ = {
+ 8B7941D521F60C99006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ToTape5Proc.cpp */;
- name = "ToTape5Proc.cpp: 737";
+ name = "ToTape5Proc.cpp: 20";
rLen = 0;
- rLoc = 39068;
+ rLoc = 584;
rType = 0;
- vrLen = 48;
- vrLoc = 171;
+ vrLen = 0;
+ vrLoc = 0;
};
- 8B9D7F411F7FB77C007AB60F /* PBXTextBookmark */ = {
+ 8B7941D921F60CC1006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ToTape5Proc.cpp */;
- name = "ToTape5Proc.cpp: 738";
+ name = "ToTape5Proc.cpp: 21";
rLen = 0;
- rLoc = 39068;
+ rLoc = 584;
rType = 0;
- vrLen = 28;
- vrLoc = 191;
+ vrLen = 0;
+ vrLoc = 0;
};
8D01CCC60486CAD60068D4B7 /* ToTape5 */ = {
activeExec = 0;
diff --git a/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3
index 6c0395d..9b9bafa 100755
--- a/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/ToTape5/ToTape5.xcodeproj/christopherjohnson.perspectivev3
@@ -256,8 +256,6 @@
<key>Layout</key>
<array>
<dict>
- <key>BecomeActive</key>
- <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -351,13 +349,13 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7F411F7FB77C007AB60F</string>
+ <string>8B7941D921F60CC1006E9731</string>
<key>history</key>
<array>
<string>8B1A33851F16D336004DE6C5</string>
<string>8B1A33A71F16D5B5004DE6C5</string>
<string>8B4846EC1F6D3E64007BD0D0</string>
- <string>8B9D716F1F7EFA45007AB60F</string>
+ <string>8B7941D521F60C99006E9731</string>
</array>
</dict>
<key>SplitCount</key>
@@ -371,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 51}}</string>
+ <string>{{0, 0}, {603, 32}}</string>
<key>RubberWindowFrame</key>
<string>575 295 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>51pt</string>
+ <string>32pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>390pt</string>
+ <string>409pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -396,9 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 363}}</string>
- <key>RubberWindowFrame</key>
- <string>575 295 810 487 0 0 1440 878 </string>
+ <string>{{10, 27}, {603, 382}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -453,6 +449,8 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 382}}</string>
+ <key>RubberWindowFrame</key>
+ <string>575 295 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -480,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7F421F7FB77C007AB60F</string>
+ <string>8B7941DA21F60CC1006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7F431F7FB77C007AB60F</string>
+ <string>8B7941DB21F60CC1006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7F441F7FB77C007AB60F</string>
+ <string>8B7941DC21F60CC1006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -637,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528463740.98537701</real>
+ <real>569773249.12750697</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -654,7 +652,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7F451F7FB77C007AB60F</string>
+ <string>8B7941DD21F60CC1006E9731</string>
<string>/Users/christopherjohnson/Desktop/MacVST/ToTape5/ToTape5.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/ToTape5/source/ToTape5.cpp b/plugins/MacVST/ToTape5/source/ToTape5.cpp
index 01f61cb..6136aaf 100755
--- a/plugins/MacVST/ToTape5/source/ToTape5.cpp
+++ b/plugins/MacVST/ToTape5/source/ToTape5.cpp
@@ -98,11 +98,8 @@ ToTape5::ToTape5(audioMasterCallback audioMaster) :
hcount = 0;
flip = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/ToTape5/source/ToTape5.h b/plugins/MacVST/ToTape5/source/ToTape5.h
index ac26df5..d049014 100755
--- a/plugins/MacVST/ToTape5/source/ToTape5.h
+++ b/plugins/MacVST/ToTape5/source/ToTape5.h
@@ -140,11 +140,8 @@ private:
double iirSampleZR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/ToTape5/source/ToTape5Proc.cpp b/plugins/MacVST/ToTape5/source/ToTape5Proc.cpp
index 4d2d5c7..5824f80 100755
--- a/plugins/MacVST/ToTape5/source/ToTape5Proc.cpp
+++ b/plugins/MacVST/ToTape5/source/ToTape5Proc.cpp
@@ -17,7 +17,7 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
-
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
double inputgain = pow(A+1.0,3);
double outputgain = E;
double wet = F;
@@ -63,9 +63,6 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double tempSampleR;
double drySampleR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -358,25 +355,14 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -398,7 +384,7 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
-
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
double inputgain = pow(A+1.0,3);
double outputgain = E;
double wet = F;
@@ -443,10 +429,6 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double bridgerectifierR;
double tempSampleR;
double drySampleR;
-
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -738,25 +720,16 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser
index 23a4119..7ffc1fc 100755
--- a/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 537055041;
- PBXWorkspaceStateSaveDate = 537055041;
+ PBXPerProjectTemplateStateSaveDate = 569773266;
+ PBXWorkspaceStateSaveDate = 569773266;
};
perUserProjectItems = {
- 8B4D27EC2002CE340051360A /* PBXTextBookmark */ = 8B4D27EC2002CE340051360A /* PBXTextBookmark */;
8B7673412002CFD90068FDCE /* PBXTextBookmark */ = 8B7673412002CFD90068FDCE /* PBXTextBookmark */;
+ 8B7941F021F60CDA006E9731 /* PBXTextBookmark */ = 8B7941F021F60CDA006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -78,9 +78,9 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {838, 19851}}";
+ sepNavIntBoundsRect = "{{0, 0}, {838, 19864}}";
sepNavSelRange = "{10616, 0}";
- sepNavVisRange = "{10579, 157}";
+ sepNavVisRange = "{10613, 123}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
@@ -106,25 +106,25 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B4D27EC2002CE340051360A /* PBXTextBookmark */ = {
+ 8B7673412002CFD90068FDCE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
rLen = 0;
rLoc = 10616;
rType = 0;
- vrLen = 280;
- vrLoc = 10459;
+ vrLen = 157;
+ vrLoc = 10579;
};
- 8B7673412002CFD90068FDCE /* PBXTextBookmark */ = {
+ 8B7941F021F60CDA006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
rLen = 0;
rLoc = 10616;
rType = 0;
- vrLen = 157;
- vrLoc = 10579;
+ vrLen = 123;
+ vrLoc = 10613;
};
8D01CCC60486CAD60068D4B7 /* ToVinyl4 */ = {
activeExec = 0;
diff --git a/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3
index 09c35a6..19849f5 100755
--- a/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/ToVinyl4/ToVinyl4.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B7673412002CFD90068FDCE</string>
+ <string>8B7941F021F60CDA006E9731</string>
<key>history</key>
<array>
- <string>8B4D27EC2002CE340051360A</string>
+ <string>8B7673412002CFD90068FDCE</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 86}}</string>
+ <string>{{0, 0}, {603, 69}}</string>
<key>RubberWindowFrame</key>
<string>594 373 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>86pt</string>
+ <string>69pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>355pt</string>
+ <string>372pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 328}}</string>
+ <string>{{10, 27}, {603, 345}}</string>
<key>RubberWindowFrame</key>
<string>594 373 810 487 0 0 1440 878 </string>
</dict>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B7673422002CFD90068FDCE</string>
+ <string>8B7941F121F60CDA006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B7673432002CFD90068FDCE</string>
+ <string>8B7941F221F60CDA006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B7673442002CFD90068FDCE</string>
+ <string>8B7941F321F60CDA006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>537055193.49498403</real>
+ <real>569773274.60291398</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
diff --git a/plugins/MacVST/ToVinyl4/source/ToVinyl4.cpp b/plugins/MacVST/ToVinyl4/source/ToVinyl4.cpp
index b0c91f8..429187c 100755
--- a/plugins/MacVST/ToVinyl4/source/ToVinyl4.cpp
+++ b/plugins/MacVST/ToVinyl4/source/ToVinyl4.cpp
@@ -87,11 +87,8 @@ ToVinyl4::ToVinyl4(audioMasterCallback audioMaster) :
B = 0.3424051; //44.0 hz = ((B*B)*290)+10 (B*B)*290 = 34 (B*B) = 0.1172413 sqrt() = 0.3424051
C = 0.32;
D = 0.064;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/ToVinyl4/source/ToVinyl4.h b/plugins/MacVST/ToVinyl4/source/ToVinyl4.h
index 57bffac..6a2dc26 100755
--- a/plugins/MacVST/ToVinyl4/source/ToVinyl4.h
+++ b/plugins/MacVST/ToVinyl4/source/ToVinyl4.h
@@ -142,11 +142,8 @@ private:
double bMidPrev;
double bSidePrev;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/ToVinyl4/source/ToVinyl4Proc.cpp b/plugins/MacVST/ToVinyl4/source/ToVinyl4Proc.cpp
index 8d9dc0c..a67af99 100755
--- a/plugins/MacVST/ToVinyl4/source/ToVinyl4Proc.cpp
+++ b/plugins/MacVST/ToVinyl4/source/ToVinyl4Proc.cpp
@@ -17,9 +17,6 @@ void ToVinyl4::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double fusswithscale = 50000; //corrected
double cutofffreq = ((A*A)*290.0)+10.0;
@@ -464,25 +461,14 @@ void ToVinyl4::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = accumulatorSample;
//we just re-use accumulatorSample to do this little shuffle
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -504,9 +490,6 @@ void ToVinyl4::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double fusswithscale = 50000; //corrected
double cutofffreq = ((A*A)*290.0)+10.0;
@@ -950,25 +933,16 @@ void ToVinyl4::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = accumulatorSample;
//we just re-use accumulatorSample to do this little shuffle
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser
index ed37f4c..ec11856 100755
--- a/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528463692;
- PBXWorkspaceStateSaveDate = 528463692;
+ PBXPerProjectTemplateStateSaveDate = 569773146;
+ PBXWorkspaceStateSaveDate = 569773146;
};
perUserProjectItems = {
8B42FB431DB15F0F0057B6AB /* PBXTextBookmark */ = 8B42FB431DB15F0F0057B6AB /* PBXTextBookmark */;
- 8B9D714F1F7EF9AB007AB60F /* PBXTextBookmark */ = 8B9D714F1F7EF9AB007AB60F /* PBXTextBookmark */;
+ 8B7941A921F60C62006E9731 /* PBXTextBookmark */ = 8B7941A921F60C62006E9731 /* PBXTextBookmark */;
8B9D7F211F7FB75D007AB60F /* PBXTextBookmark */ = 8B9D7F211F7FB75D007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -87,7 +87,7 @@
};
24D8286F09A914000093AEF8 /* ToneSlantProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {554, 3536}}";
+ sepNavIntBoundsRect = "{{0, 0}, {554, 3224}}";
sepNavSelRange = "{1408, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{428, 47}, {895, 831}}";
@@ -117,10 +117,10 @@
vrLen = 71;
vrLoc = 1774;
};
- 8B9D714F1F7EF9AB007AB60F /* PBXTextBookmark */ = {
+ 8B7941A921F60C62006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ToneSlantProc.cpp */;
- name = "ToneSlantProc.cpp: 49";
+ name = "ToneSlantProc.cpp: 51";
rLen = 0;
rLoc = 1408;
rType = 0;
diff --git a/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3
index 8350aa9..20a16b4 100755
--- a/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/ToneSlant/ToneSlant.xcodeproj/christopherjohnson.perspectivev3
@@ -351,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7F211F7FB75D007AB60F</string>
+ <string>8B7941A921F60C62006E9731</string>
<key>history</key>
<array>
<string>8B42FB431DB15F0F0057B6AB</string>
- <string>8B9D714F1F7EF9AB007AB60F</string>
+ <string>8B9D7F211F7FB75D007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>575 281 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,7 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
<string>575 281 810 487 0 0 1440 878 </string>
</dict>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7F221F7FB75D007AB60F</string>
+ <string>8B7941AA21F60C62006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7F231F7FB75D007AB60F</string>
+ <string>8B7941AB21F60C62006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7F241F7FB75D007AB60F</string>
+ <string>8B7941AC21F60C62006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528463709.164518</real>
+ <real>569773154.60327995</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -652,7 +652,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7F251F7FB75D007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/ToneSlant/ToneSlant.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/ToneSlant/source/ToneSlant.cpp b/plugins/MacVST/ToneSlant/source/ToneSlant.cpp
index 0ed3618..d99fa60 100755
--- a/plugins/MacVST/ToneSlant/source/ToneSlant.cpp
+++ b/plugins/MacVST/ToneSlant/source/ToneSlant.cpp
@@ -15,11 +15,8 @@ ToneSlant::ToneSlant(audioMasterCallback audioMaster) :
A = 0.0;
B = 0.0;
for(int count = 0; count < 102; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;}
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/ToneSlant/source/ToneSlant.h b/plugins/MacVST/ToneSlant/source/ToneSlant.h
index 655cc55..7c52bca 100755
--- a/plugins/MacVST/ToneSlant/source/ToneSlant.h
+++ b/plugins/MacVST/ToneSlant/source/ToneSlant.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/ToneSlant/source/ToneSlantProc.cpp b/plugins/MacVST/ToneSlant/source/ToneSlantProc.cpp
index b594b05..d78cfb5 100755
--- a/plugins/MacVST/ToneSlant/source/ToneSlantProc.cpp
+++ b/plugins/MacVST/ToneSlant/source/ToneSlantProc.cpp
@@ -14,9 +14,6 @@ void ToneSlant::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputSampleL;
double inputSampleR;
@@ -109,25 +106,14 @@ void ToneSlant::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR += (correctionSampleR * applySlant);
//our one math operation on the input data coming in
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -146,9 +132,6 @@ void ToneSlant::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputSampleL;
double inputSampleR;
@@ -240,25 +223,16 @@ void ToneSlant::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR += (correctionSampleR * applySlant);
//our one math operation on the input data coming in
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser
index e3ec9d4..4346de3 100755
--- a/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528463797;
- PBXWorkspaceStateSaveDate = 528463797;
+ PBXPerProjectTemplateStateSaveDate = 569773315;
+ PBXWorkspaceStateSaveDate = 569773315;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
diff --git a/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3
index be4151f..a084408 100755
--- a/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/TransDesk/TransDesk.xcodeproj/christopherjohnson.perspectivev3
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7F801F7FB7C8007AB60F</string>
+ <string>8B79421021F60D0A006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7F811F7FB7C8007AB60F</string>
+ <string>8B79421121F60D0A006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7F821F7FB7C8007AB60F</string>
+ <string>8B79421221F60D0A006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528463816.43040597</real>
+ <real>569773322.06946695</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7F831F7FB7C8007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/TransDesk/TransDesk.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/TransDesk/source/TransDesk.cpp b/plugins/MacVST/TransDesk/source/TransDesk.cpp
index 24443bd..3f352f7 100755
--- a/plugins/MacVST/TransDesk/source/TransDesk.cpp
+++ b/plugins/MacVST/TransDesk/source/TransDesk.cpp
@@ -25,11 +25,8 @@ TransDesk::TransDesk(audioMasterCallback audioMaster) :
lastOutSampleR = 0.0;
lastSlewR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/TransDesk/source/TransDesk.h b/plugins/MacVST/TransDesk/source/TransDesk.h
index b3b891d..5729b4c 100755
--- a/plugins/MacVST/TransDesk/source/TransDesk.h
+++ b/plugins/MacVST/TransDesk/source/TransDesk.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
int gcount;
diff --git a/plugins/MacVST/TransDesk/source/TransDeskProc.cpp b/plugins/MacVST/TransDesk/source/TransDeskProc.cpp
index c7df5e8..c8b45c2 100755
--- a/plugins/MacVST/TransDesk/source/TransDeskProc.cpp
+++ b/plugins/MacVST/TransDesk/source/TransDeskProc.cpp
@@ -17,9 +17,6 @@ void TransDesk::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = 0.02198359;
double depthA = 3.0;
@@ -200,25 +197,14 @@ void TransDesk::processReplacing(float **inputs, float **outputs, VstInt32 sampl
gcount--;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -240,9 +226,6 @@ void TransDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = 0.02198359;
double depthA = 3.0;
@@ -423,25 +406,16 @@ void TransDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt
gcount--;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser
index eabc2fb..170e53c 100755
--- a/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528463825;
- PBXWorkspaceStateSaveDate = 528463825;
+ PBXPerProjectTemplateStateSaveDate = 569773339;
+ PBXWorkspaceStateSaveDate = 569773339;
};
perUserProjectItems = {
- 8B9D71CC1F7EFAE7007AB60F /* PBXTextBookmark */ = 8B9D71CC1F7EFAE7007AB60F /* PBXTextBookmark */;
+ 8B79422F21F60D22006E9731 /* PBXTextBookmark */ = 8B79422F21F60D22006E9731 /* PBXTextBookmark */;
8B9D7F9F1F7FB7DF007AB60F /* PBXTextBookmark */ = 8B9D7F9F1F7FB7DF007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -106,7 +106,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D71CC1F7EFAE7007AB60F /* PBXTextBookmark */ = {
+ 8B79422F21F60D22006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
diff --git a/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3
index 16e3a4d..2a3782e 100755
--- a/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Tremolo/Tremolo.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7F9F1F7FB7DF007AB60F</string>
+ <string>8B79422F21F60D22006E9731</string>
<key>history</key>
<array>
- <string>8B9D71CC1F7EFAE7007AB60F</string>
+ <string>8B9D7F9F1F7FB7DF007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7FA01F7FB7DF007AB60F</string>
+ <string>8B79423021F60D22006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7FA11F7FB7DF007AB60F</string>
+ <string>8B79423121F60D22006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7FA21F7FB7DF007AB60F</string>
+ <string>8B79423221F60D22006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528463839.58097899</real>
+ <real>569773346.55622005</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7FA31F7FB7DF007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/Tremolo/Tremolo.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/Tremolo/source/Tremolo.cpp b/plugins/MacVST/Tremolo/source/Tremolo.cpp
index be5d06d..f0b649d 100755
--- a/plugins/MacVST/Tremolo/source/Tremolo.cpp
+++ b/plugins/MacVST/Tremolo/source/Tremolo.cpp
@@ -21,11 +21,8 @@ Tremolo::Tremolo(audioMasterCallback audioMaster) :
depthAmount = 0.0;
lastSpeed = 1000.0;
lastDepth = 1000.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Tremolo/source/Tremolo.h b/plugins/MacVST/Tremolo/source/Tremolo.h
index ea40aa6..11fc718 100755
--- a/plugins/MacVST/Tremolo/source/Tremolo.h
+++ b/plugins/MacVST/Tremolo/source/Tremolo.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double sweep;
diff --git a/plugins/MacVST/Tremolo/source/TremoloProc.cpp b/plugins/MacVST/Tremolo/source/TremoloProc.cpp
index d0de7cc..d27dc86 100755
--- a/plugins/MacVST/Tremolo/source/TremoloProc.cpp
+++ b/plugins/MacVST/Tremolo/source/TremoloProc.cpp
@@ -17,9 +17,6 @@ void Tremolo::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
speedChase = pow(A,4);
depthChase = B;
@@ -151,25 +148,14 @@ void Tremolo::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
inputSampleR = (drySampleR * (1-depth)) + (inputSampleR*depth);
//end R
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -191,9 +177,6 @@ void Tremolo::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
speedChase = pow(A,4);
depthChase = B;
@@ -326,25 +309,16 @@ void Tremolo::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR = (drySampleR * (1-depth)) + (inputSampleR*depth);
//end R
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser
index 39db978..f2588de 100755
--- a/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.pbxuser
@@ -49,11 +49,11 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 528463849;
- PBXWorkspaceStateSaveDate = 528463849;
+ PBXPerProjectTemplateStateSaveDate = 569773377;
+ PBXWorkspaceStateSaveDate = 569773377;
};
perUserProjectItems = {
- 8B9D71EC1F7EFB47007AB60F /* PBXTextBookmark */ = 8B9D71EC1F7EFB47007AB60F /* PBXTextBookmark */;
+ 8B79424F21F60D4A006E9731 /* PBXTextBookmark */ = 8B79424F21F60D4A006E9731 /* PBXTextBookmark */;
8B9D7FBF1F7FB7FA007AB60F /* PBXTextBookmark */ = 8B9D7FBF1F7FB7FA007AB60F /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -106,7 +106,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B9D71EC1F7EFB47007AB60F /* PBXTextBookmark */ = {
+ 8B79424F21F60D4A006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
diff --git a/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3
index b3bcad8..a09ec6b 100755
--- a/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/TubeDesk/TubeDesk.xcodeproj/christopherjohnson.perspectivev3
@@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B9D7FBF1F7FB7FA007AB60F</string>
+ <string>8B79424F21F60D4A006E9731</string>
<key>history</key>
<array>
- <string>8B9D71EC1F7EFB47007AB60F</string>
+ <string>8B9D7FBF1F7FB7FA007AB60F</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 13}}</string>
+ <string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>422 271 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>13pt</string>
+ <string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>428pt</string>
+ <string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 401}}</string>
+ <string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
<string>422 271 810 487 0 0 1440 878 </string>
</dict>
@@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B9D7FC01F7FB7FA007AB60F</string>
+ <string>8B79425021F60D4A006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B9D7FC11F7FB7FA007AB60F</string>
+ <string>8B79425121F60D4A006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B9D7FC21F7FB7FA007AB60F</string>
+ <string>8B79425221F60D4A006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>528463866.70419401</real>
+ <real>569773386.273072</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,7 +651,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B9D7FC31F7FB7FA007AB60F</string>
<string>/Users/christopherjohnson/Desktop/MacVST/TubeDesk/TubeDesk.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/MacVST/TubeDesk/source/TubeDesk.cpp b/plugins/MacVST/TubeDesk/source/TubeDesk.cpp
index fc4bd75..5a7465c 100755
--- a/plugins/MacVST/TubeDesk/source/TubeDesk.cpp
+++ b/plugins/MacVST/TubeDesk/source/TubeDesk.cpp
@@ -25,11 +25,8 @@ TubeDesk::TubeDesk(audioMasterCallback audioMaster) :
lastOutSampleR = 0.0;
lastSlewR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/TubeDesk/source/TubeDesk.h b/plugins/MacVST/TubeDesk/source/TubeDesk.h
index b41b283..fb15768 100755
--- a/plugins/MacVST/TubeDesk/source/TubeDesk.h
+++ b/plugins/MacVST/TubeDesk/source/TubeDesk.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
int gcount;
diff --git a/plugins/MacVST/TubeDesk/source/TubeDeskProc.cpp b/plugins/MacVST/TubeDesk/source/TubeDeskProc.cpp
index 2636076..cccf6e2 100755
--- a/plugins/MacVST/TubeDesk/source/TubeDeskProc.cpp
+++ b/plugins/MacVST/TubeDesk/source/TubeDeskProc.cpp
@@ -17,9 +17,6 @@ void TubeDesk::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = 0.4384938;
double depthA = 549.0;
@@ -199,25 +196,14 @@ void TubeDesk::processReplacing(float **inputs, float **outputs, VstInt32 sample
gcount--;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -239,9 +225,6 @@ void TubeDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = 0.4384938;
double depthA = 549.0;
@@ -421,25 +404,16 @@ void TubeDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt3
gcount--;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser
index d840507..0fc18df 100755
--- a/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 557535066;
- PBXWorkspaceStateSaveDate = 557535066;
+ PBXPerProjectTemplateStateSaveDate = 569773466;
+ PBXWorkspaceStateSaveDate = 569773466;
};
perUserProjectItems = {
- 8B6DBA77213B59C900E44739 /* XCBuildMessageTextBookmark */ = 8B6DBA77213B59C900E44739 /* XCBuildMessageTextBookmark */;
8B6DBA78213B59C900E44739 /* PBXTextBookmark */ = 8B6DBA78213B59C900E44739 /* PBXTextBookmark */;
+ 8B7942AD21F60DA4006E9731 /* PBXTextBookmark */ = 8B7942AD21F60DA4006E9731 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -78,9 +78,9 @@
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {838, 19747}}";
+ sepNavIntBoundsRect = "{{0, 0}, {838, 19877}}";
sepNavSelRange = "{10616, 0}";
- sepNavVisRange = "{10459, 399}";
+ sepNavVisRange = "{10459, 280}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
@@ -106,23 +106,24 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8B6DBA77213B59C900E44739 /* XCBuildMessageTextBookmark */ = {
+ 8B6DBA78213B59C900E44739 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
- comments = "Deprecated conversion from string constant to 'char*'";
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
- fallbackIsa = XCBuildMessageTextBookmark;
- rLen = 1;
- rLoc = 306;
- rType = 1;
+ name = "audioeffectx.cpp: 307";
+ rLen = 0;
+ rLoc = 10616;
+ rType = 0;
+ vrLen = 399;
+ vrLoc = 10459;
};
- 8B6DBA78213B59C900E44739 /* PBXTextBookmark */ = {
+ 8B7942AD21F60DA4006E9731 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
name = "audioeffectx.cpp: 307";
rLen = 0;
rLoc = 10616;
rType = 0;
- vrLen = 399;
+ vrLen = 280;
vrLoc = 10459;
};
8D01CCC60486CAD60068D4B7 /* UnBox */ = {
diff --git a/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3
index 6a3b9e1..d995ead 100755
--- a/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/UnBox/UnBox.xcodeproj/christopherjohnson.perspectivev3
@@ -256,6 +256,8 @@
<key>Layout</key>
<array>
<dict>
+ <key>BecomeActive</key>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXBottomSmartGroupGIDs</key>
@@ -349,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B6DBA78213B59C900E44739</string>
+ <string>8B7942AD21F60DA4006E9731</string>
<key>history</key>
<array>
- <string>8B6DBA77213B59C900E44739</string>
+ <string>8B6DBA78213B59C900E44739</string>
</array>
</dict>
<key>SplitCount</key>
@@ -366,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 132}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
<string>64 284 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>132pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>309pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -391,7 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 414}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>64 284 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -446,8 +450,6 @@
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
- <key>RubberWindowFrame</key>
- <string>64 284 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -475,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B6DBA79213B59C900E44739</string>
+ <string>8B7942AE21F60DA4006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B6DBA7A213B59C900E44739</string>
+ <string>8B7942AF21F60DA4006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B6DBA7B213B59C900E44739</string>
+ <string>8B7942B021F60DA4006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -632,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>557537737.84302604</real>
+ <real>569773476.89428103</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -649,7 +651,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/UnBox/UnBox.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/UnBox/UnBox.xcodeproj</string>
</array>
<key>WindowString</key>
<string>64 284 810 487 0 0 1440 878 </string>
diff --git a/plugins/MacVST/UnBox/source/UnBoxProc.cpp b/plugins/MacVST/UnBox/source/UnBoxProc.cpp
index 12133dc..3cb3aab 100755
--- a/plugins/MacVST/UnBox/source/UnBoxProc.cpp
+++ b/plugins/MacVST/UnBox/source/UnBoxProc.cpp
@@ -218,18 +218,14 @@ void UnBox::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
if (output != 1.0) {inputSampleL *= output; inputSampleR *= output;}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -239,12 +235,6 @@ void UnBox::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -458,18 +448,16 @@ void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
if (output != 1.0) {inputSampleL *= output; inputSampleR *= output;}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -479,10 +467,4 @@ void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser
index 817d97b..26171e9 100755
--- a/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* VariMu */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 553992948;
- PBXWorkspaceStateSaveDate = 553992948;
+ PBXPerProjectTemplateStateSaveDate = 569773498;
+ PBXWorkspaceStateSaveDate = 569773498;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* VariMu */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3
index 95718ee..1fd954d 100755
--- a/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/VariMu/VariMu.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>50 341 810 487 0 0 1440 878 </string>
+ <string>398 267 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -362,7 +362,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>50 341 810 487 0 0 1440 878 </string>
+ <string>398 267 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -387,7 +387,7 @@
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
- <string>50 341 810 487 0 0 1440 878 </string>
+ <string>398 267 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BBD1887210542F70015A233</string>
+ <string>8B7942CD21F60DC2006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BBD1888210542F70015A233</string>
+ <string>8B7942CE21F60DC2006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BBD1889210542F70015A233</string>
+ <string>8B7942CF21F60DC2006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>553992991.79695594</real>
+ <real>569773506.89082396</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -646,7 +646,7 @@
<string>/Users/christopherjohnson/Desktop/MacVST/VariMu/VariMu.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>50 341 810 487 0 0 1440 878 </string>
+ <string>398 267 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/VariMu/source/VariMuProc.cpp b/plugins/MacVST/VariMu/source/VariMuProc.cpp
index b966cd8..323b5e4 100755
--- a/plugins/MacVST/VariMu/source/VariMuProc.cpp
+++ b/plugins/MacVST/VariMu/source/VariMuProc.cpp
@@ -233,18 +233,14 @@ void VariMu::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -254,12 +250,6 @@ void VariMu::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -488,18 +478,16 @@ void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -509,10 +497,4 @@ void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser
index cc6b613..2be57bf 100644..100755
--- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser
@@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
- activeTarget = 8D01CCC60486CAD60068D4B7 /* VoiceOfTheStarship */;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 538706768;
- PBXWorkspaceStateSaveDate = 538706768;
+ PBXPerProjectTemplateStateSaveDate = 569773528;
+ PBXWorkspaceStateSaveDate = 569773528;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@@ -102,7 +102,7 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 8D01CCC60486CAD60068D4B7 /* VoiceOfTheStarship */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
activeExec = 0;
};
}
diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3
index 2952204..91123cf 100644..100755
--- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B4E5825201C035700B5DC2A</string>
+ <string>8B7942EC21F60DE2006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B4E5826201C035700B5DC2A</string>
+ <string>8B7942ED21F60DE2006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B4E5827201C035700B5DC2A</string>
+ <string>8B7942EE21F60DE2006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>538709213.91348803</real>
+ <real>569773538.74268901</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>/Users/christopherjohnson/Desktop/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj</string>
+ <string>/Users/christopherjohnson/Desktop/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj</string>
</array>
<key>WindowString</key>
<string>123 420 688 434 0 0 1440 878 </string>
diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj
index 6a80a71..1ae3b0f 100755
--- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj
+++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj
@@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 8D01CCC60486CAD60068D4B7 /* VoiceOfTheStarship */ = {
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "VoiceOfTheStarship" */;
buildPhases = (
@@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
- 8D01CCC60486CAD60068D4B7 /* VoiceOfTheStarship */,
+ 8D01CCC60486CAD60068D4B7 /* AudioUnit */,
);
};
/* End PBXProject section */
diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index a80c038..a80c038 100644..100755
--- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
index 5c38f94..5c38f94 100644..100755
--- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
index 314de0f..314de0f 100644..100755
--- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.mode1v3
index c572326..c572326 100644..100755
--- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.mode1v3
+++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.mode1v3
diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.pbxuser
index df94780..df94780 100644..100755
--- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.pbxuser
+++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.pbxuser
diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
index 8ee693f..8ee693f 100644..100755
--- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
+++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme
diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
index 5bccbcb..5bccbcb 100644..100755
--- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
index a7bdd62..a7bdd62 100644..100755
--- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
index 0df2de4..0df2de4 100644..100755
--- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
+++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/«PROJECTNAME».xcscheme
diff --git a/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.cpp b/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.cpp
index c30bd47..19f1d94 100755
--- a/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.cpp
+++ b/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.cpp
@@ -28,11 +28,8 @@ VoiceOfTheStarship::VoiceOfTheStarship(audioMasterCallback audioMaster) :
for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;}
lastAlgorithm = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.h b/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.h
index febb344..519923b 100755
--- a/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.h
+++ b/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarship.h
@@ -73,11 +73,8 @@ private:
int lastAlgorithm;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarshipProc.cpp b/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarshipProc.cpp
index 32979d0..bbb14fa 100755
--- a/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarshipProc.cpp
+++ b/plugins/MacVST/VoiceOfTheStarship/source/VoiceOfTheStarshipProc.cpp
@@ -79,9 +79,6 @@ void VoiceOfTheStarship::processReplacing(float **inputs, float **outputs, VstIn
double inputSampleL;
double inputSampleR;
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -181,25 +178,14 @@ void VoiceOfTheStarship::processReplacing(float **inputs, float **outputs, VstIn
filterflip = !filterflip;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -283,9 +269,6 @@ void VoiceOfTheStarship::processDoubleReplacing(double **inputs, double **output
double inputSampleL;
double inputSampleR;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -384,25 +367,16 @@ void VoiceOfTheStarship::processDoubleReplacing(double **inputs, double **output
flipR = !flipR;
filterflip = !filterflip;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.pbxuser
index 83caea6..5391b9e 100755
--- a/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.pbxuser
@@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 546573996;
- PBXWorkspaceStateSaveDate = 546573996;
+ PBXPerProjectTemplateStateSaveDate = 569773559;
+ PBXWorkspaceStateSaveDate = 569773559;
};
perUserProjectItems = {
+ 8B79430B21F60E03006E9731 /* PBXTextBookmark */ = 8B79430B21F60E03006E9731 /* PBXTextBookmark */;
8BC5D04620940E2D0058B257 /* PBXTextBookmark */ = 8BC5D04620940E2D0058B257 /* PBXTextBookmark */;
- 8BC5D07D20940F320058B257 /* PBXTextBookmark */ = 8BC5D07D20940F320058B257 /* PBXTextBookmark */;
8BC5D07E20940F320058B257 /* PBXTextBookmark */ = 8BC5D07E20940F320058B257 /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
@@ -87,9 +87,9 @@
};
24D8286F09A914000093AEF8 /* WiderProc.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {852, 4394}}";
+ sepNavIntBoundsRect = "{{0, 0}, {691, 3926}}";
sepNavSelRange = "{7057, 0}";
- sepNavVisRange = "{6953, 155}";
+ sepNavVisRange = "{6846, 405}";
sepNavWindowFrame = "{{11, 47}, {895, 831}}";
};
};
@@ -107,6 +107,16 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
+ 8B79430B21F60E03006E9731 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 24D8286F09A914000093AEF8 /* WiderProc.cpp */;
+ name = "WiderProc.cpp: 203";
+ rLen = 0;
+ rLoc = 7057;
+ rType = 0;
+ vrLen = 405;
+ vrLoc = 6846;
+ };
8BC5D04620940E2D0058B257 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */;
@@ -117,16 +127,6 @@
vrLen = 280;
vrLoc = 10459;
};
- 8BC5D07D20940F320058B257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 24D8286F09A914000093AEF8 /* WiderProc.cpp */;
- name = "WiderProc.cpp: 209";
- rLen = 0;
- rLoc = 7057;
- rType = 0;
- vrLen = 155;
- vrLoc = 6953;
- };
8BC5D07E20940F320058B257 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* WiderProc.cpp */;
diff --git a/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3
index 733a26c..f44db5a 100755
--- a/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/Wider/Wider.xcodeproj/christopherjohnson.perspectivev3
@@ -351,11 +351,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8BC5D07E20940F320058B257</string>
+ <string>8B79430B21F60E03006E9731</string>
<key>history</key>
<array>
<string>8BC5D04620940E2D0058B257</string>
- <string>8BC5D07D20940F320058B257</string>
+ <string>8BC5D07E20940F320058B257</string>
</array>
</dict>
<key>SplitCount</key>
@@ -369,18 +369,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 102}}</string>
+ <string>{{0, 0}, {603, 86}}</string>
<key>RubberWindowFrame</key>
<string>29 317 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>102pt</string>
+ <string>86pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>339pt</string>
+ <string>355pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -394,7 +394,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 312}}</string>
+ <string>{{10, 27}, {603, 328}}</string>
<key>RubberWindowFrame</key>
<string>29 317 810 487 0 0 1440 878 </string>
</dict>
@@ -478,11 +478,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8BC5D07F20940F320058B257</string>
+ <string>8B79430C21F60E03006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8BC5D08020940F320058B257</string>
+ <string>8B79430D21F60E03006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8BC5D08120940F320058B257</string>
+ <string>8B79430E21F60E03006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -635,7 +635,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>546574130.26758397</real>
+ <real>569773571.22399402</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
diff --git a/plugins/MacVST/Wider/source/Wider.cpp b/plugins/MacVST/Wider/source/Wider.cpp
index c1e57d0..26d4d47 100755
--- a/plugins/MacVST/Wider/source/Wider.cpp
+++ b/plugins/MacVST/Wider/source/Wider.cpp
@@ -17,11 +17,8 @@ Wider::Wider(audioMasterCallback audioMaster) :
C = 1.0;
for(int fcount = 0; fcount < 4098; fcount++) {p[fcount] = 0.0;}
count = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/MacVST/Wider/source/Wider.h b/plugins/MacVST/Wider/source/Wider.h
index 8b04cfb..6a6a2df 100755
--- a/plugins/MacVST/Wider/source/Wider.h
+++ b/plugins/MacVST/Wider/source/Wider.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double p[4099];
diff --git a/plugins/MacVST/Wider/source/WiderProc.cpp b/plugins/MacVST/Wider/source/WiderProc.cpp
index 618e651..f90fa21 100755
--- a/plugins/MacVST/Wider/source/WiderProc.cpp
+++ b/plugins/MacVST/Wider/source/WiderProc.cpp
@@ -17,9 +17,6 @@ void Wider::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -141,25 +138,14 @@ void Wider::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleL = (drySampleL * dry) + ((mid+side) * wet);
inputSampleR = (drySampleR * dry) + ((mid-side) * wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -181,9 +167,6 @@ void Wider::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -305,25 +288,16 @@ void Wider::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleL = (drySampleL * dry) + ((mid+side) * wet);
inputSampleR = (drySampleR * dry) + ((mid-side) * wet);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/MacVST/uLawDecode/source/uLawDecodeProc.cpp b/plugins/MacVST/uLawDecode/source/uLawDecodeProc.cpp
index a78b3c2..1835623 100755
--- a/plugins/MacVST/uLawDecode/source/uLawDecodeProc.cpp
+++ b/plugins/MacVST/uLawDecode/source/uLawDecodeProc.cpp
@@ -88,18 +88,14 @@ void uLawDecode::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -109,12 +105,6 @@ void uLawDecode::processReplacing(float **inputs, float **outputs, VstInt32 samp
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -198,18 +188,16 @@ void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -219,10 +207,4 @@ void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstIn
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser
index a221ade..78e474f 100755
--- a/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.pbxuser
@@ -75,8 +75,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561241927;
- PBXWorkspaceStateSaveDate = 561241927;
+ PBXPerProjectTemplateStateSaveDate = 569773408;
+ PBXWorkspaceStateSaveDate = 569773408;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
diff --git a/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3
index 11e6474..45637a5 100755
--- a/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/uLawDecode/uLawDecode.xcodeproj/christopherjohnson.perspectivev3
@@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>24 356 810 487 0 0 1440 878 </string>
+ <string>426 311 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -362,7 +362,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
- <string>24 356 810 487 0 0 1440 878 </string>
+ <string>426 311 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -387,7 +387,7 @@
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
- <string>24 356 810 487 0 0 1440 878 </string>
+ <string>426 311 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B2721E12173DF5E00396442</string>
+ <string>8B79426F21F60D67006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B2721E22173DF5E00396442</string>
+ <string>8B79427021F60D67006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B2721E32173DF5E00396442</string>
+ <string>8B79427121F60D67006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -646,7 +646,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561241950.77135801</real>
+ <real>569773415.70611095</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -663,11 +663,10 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B2721E42173DF5E00396442</string>
<string>/Users/christopherjohnson/Desktop/MacVST/uLawDecode/uLawDecode.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>24 356 810 487 0 0 1440 878 </string>
+ <string>426 311 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
diff --git a/plugins/MacVST/uLawEncode/source/uLawEncodeProc.cpp b/plugins/MacVST/uLawEncode/source/uLawEncodeProc.cpp
index 3d86a7f..c5dd74d 100755
--- a/plugins/MacVST/uLawEncode/source/uLawEncodeProc.cpp
+++ b/plugins/MacVST/uLawEncode/source/uLawEncodeProc.cpp
@@ -88,18 +88,14 @@ void uLawEncode::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -109,12 +105,6 @@ void uLawEncode::processReplacing(float **inputs, float **outputs, VstInt32 samp
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -198,18 +188,16 @@ void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -219,10 +207,4 @@ void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstIn
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser
index 37fd5e3..4382acd 100755
--- a/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser
+++ b/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.pbxuser
@@ -49,8 +49,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 561241903;
- PBXWorkspaceStateSaveDate = 561241903;
+ PBXPerProjectTemplateStateSaveDate = 569773438;
+ PBXWorkspaceStateSaveDate = 569773438;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
diff --git a/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3
index 01f5c6f..6742d70 100755
--- a/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3
+++ b/plugins/MacVST/uLawEncode/uLawEncode.xcodeproj/christopherjohnson.perspectivev3
@@ -469,11 +469,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B2721BE2173DF3C00396442</string>
+ <string>8B79428E21F60D86006E9731</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B2721BF2173DF3C00396442</string>
+ <string>8B79428F21F60D86006E9731</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B2721C02173DF3C00396442</string>
+ <string>8B79429021F60D86006E9731</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -626,7 +626,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>561241916.28170097</real>
+ <real>569773446.35580504</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -643,7 +643,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B2721C12173DF3C00396442</string>
<string>/Users/christopherjohnson/Desktop/MacVST/uLawEncode/uLawEncode.xcodeproj</string>
</array>
<key>WindowString</key>
diff --git a/plugins/WinVST/ADClip7/.vs/VSTProject/v14/.suo b/plugins/WinVST/ADClip7/.vs/VSTProject/v14/.suo
index 41b2402..51c82cf 100755
--- a/plugins/WinVST/ADClip7/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/ADClip7/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/ADClip7/ADClip7.cpp b/plugins/WinVST/ADClip7/ADClip7.cpp
index fb6d6c6..7ebc817 100755
--- a/plugins/WinVST/ADClip7/ADClip7.cpp
+++ b/plugins/WinVST/ADClip7/ADClip7.cpp
@@ -30,11 +30,8 @@ ADClip7::ADClip7(audioMasterCallback audioMaster) :
iirLowsBL = 0.0;
iirLowsBR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/ADClip7/ADClip7.h b/plugins/WinVST/ADClip7/ADClip7.h
index f20d3fb..f0cde6c 100755
--- a/plugins/WinVST/ADClip7/ADClip7.h
+++ b/plugins/WinVST/ADClip7/ADClip7.h
@@ -55,11 +55,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
long double lastSampleL;
long double lastSampleR;
diff --git a/plugins/WinVST/ADClip7/ADClip7Proc.cpp b/plugins/WinVST/ADClip7/ADClip7Proc.cpp
index 2705d61..abc9909 100755
--- a/plugins/WinVST/ADClip7/ADClip7Proc.cpp
+++ b/plugins/WinVST/ADClip7/ADClip7Proc.cpp
@@ -17,10 +17,8 @@ void ADClip7::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ long double fpNew = 1.0 - fpOld;
double inputGain = pow(10.0,(A*18.0)/20.0);
double softness = B * fpNew;
double hardness = 1.0 - softness;
@@ -449,25 +447,14 @@ void ADClip7::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
if (inputSampleR < -refclipR) inputSampleR = -refclipR;
//final iron bar
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -489,10 +476,8 @@ void ADClip7::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ long double fpNew = 1.0 - fpOld;
double inputGain = pow(10.0,(A*18.0)/20.0);
double softness = B * fpNew;
double hardness = 1.0 - softness;
@@ -922,25 +907,16 @@ void ADClip7::processDoubleReplacing(double **inputs, double **outputs, VstInt32
if (inputSampleR < -refclipR) inputSampleR = -refclipR;
//final iron bar
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/ADT/.vs/VSTProject/v14/.suo b/plugins/WinVST/ADT/.vs/VSTProject/v14/.suo
index bf5ce54..60acd7c 100755
--- a/plugins/WinVST/ADT/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/ADT/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/ADT/ADTProc.cpp b/plugins/WinVST/ADT/ADTProc.cpp
index f963f2f..74d23dd 100755
--- a/plugins/WinVST/ADT/ADTProc.cpp
+++ b/plugins/WinVST/ADT/ADTProc.cpp
@@ -156,18 +156,14 @@ void ADT::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
if (output < 1.0) {inputSampleL *= output; inputSampleR *= output;}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -177,12 +173,6 @@ void ADT::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -334,18 +324,16 @@ void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
if (output < 1.0) {inputSampleL *= output; inputSampleR *= output;}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -355,10 +343,4 @@ void ADT::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/AQuickVoiceClip/.vs/VSTProject/v14/.suo b/plugins/WinVST/AQuickVoiceClip/.vs/VSTProject/v14/.suo
index 42a754f..c1193f7 100755
--- a/plugins/WinVST/AQuickVoiceClip/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/AQuickVoiceClip/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.cpp b/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.cpp
index 9b5ea81..9b84221 100755
--- a/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.cpp
+++ b/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.cpp
@@ -57,11 +57,8 @@ AQuickVoiceClip::AQuickVoiceClip(audioMasterCallback audioMaster) :
ataK4 = 0.886; //remainder of interpolated dry, adds up to 1.0
ataK5 = 0.431; //subtract this much prev. diff sample, brightens. 0.431 becomes flat
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.h b/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.h
index dc8f5fa..40cfab2 100755
--- a/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.h
+++ b/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.h
@@ -115,11 +115,8 @@ private:
double RiirSampleD;
bool flip;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClipProc.cpp b/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClipProc.cpp
index 69dc283..cc282b6 100755
--- a/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClipProc.cpp
+++ b/plugins/WinVST/AQuickVoiceClip/AQuickVoiceClipProc.cpp
@@ -41,9 +41,6 @@ void AQuickVoiceClip::processReplacing(float **inputs, float **outputs, VstInt32
double RoutputSample;
double RdrySample;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -410,25 +407,14 @@ void AQuickVoiceClip::processReplacing(float **inputs, float **outputs, VstInt32
if (LlpDepth < 0.0) LlpDepth = 0.0;
if (RlpDepth < 0.0) RlpDepth = 0.0;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
inputSampleL *= (1.0-LmaxRecent);
inputSampleR *= (1.0-RmaxRecent);
@@ -487,9 +473,6 @@ void AQuickVoiceClip::processDoubleReplacing(double **inputs, double **outputs,
double RoutputSample;
double RdrySample;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -856,25 +839,16 @@ void AQuickVoiceClip::processDoubleReplacing(double **inputs, double **outputs,
if (LlpDepth < 0.0) LlpDepth = 0.0;
if (RlpDepth < 0.0) RlpDepth = 0.0;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
inputSampleL *= (1.0-LmaxRecent);
inputSampleR *= (1.0-RmaxRecent);
diff --git a/plugins/WinVST/Acceleration/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/Acceleration/.vs/Console4Channel64/v14/.suo
index 777b846..777b846 100644..100755
--- a/plugins/WinVST/Acceleration/.vs/Console4Channel64/v14/.suo
+++ b/plugins/WinVST/Acceleration/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suo b/plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suo
index 734c0c5..2ff1d0a 100644..100755
--- a/plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Acceleration/Acceleration.cpp b/plugins/WinVST/Acceleration/Acceleration.cpp
index f20c8f2..b2721d9 100644..100755
--- a/plugins/WinVST/Acceleration/Acceleration.cpp
+++ b/plugins/WinVST/Acceleration/Acceleration.cpp
@@ -23,11 +23,8 @@ Acceleration::Acceleration(audioMasterCallback audioMaster) :
o1R = o2R = o3R = 0.0;
m1R = m2R = desR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Acceleration/Acceleration.h b/plugins/WinVST/Acceleration/Acceleration.h
index a152e25..02a3760 100644..100755
--- a/plugins/WinVST/Acceleration/Acceleration.h
+++ b/plugins/WinVST/Acceleration/Acceleration.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double ataLastOutL;
double s1L;
diff --git a/plugins/WinVST/Acceleration/AccelerationProc.cpp b/plugins/WinVST/Acceleration/AccelerationProc.cpp
index 4785e37..0151dbe 100644..100755
--- a/plugins/WinVST/Acceleration/AccelerationProc.cpp
+++ b/plugins/WinVST/Acceleration/AccelerationProc.cpp
@@ -17,9 +17,6 @@ void Acceleration::processReplacing(float **inputs, float **outputs, VstInt32 sa
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = pow(A,3)*(32/overallscale);
double wet = B;
@@ -135,25 +132,14 @@ void Acceleration::processReplacing(float **inputs, float **outputs, VstInt32 sa
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -175,9 +161,6 @@ void Acceleration::processDoubleReplacing(double **inputs, double **outputs, Vst
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = pow(A,3)*(32/overallscale);
double wet = B;
@@ -293,25 +276,16 @@ void Acceleration::processDoubleReplacing(double **inputs, double **outputs, Vst
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Acceleration/VSTProject.sln b/plugins/WinVST/Acceleration/VSTProject.sln
index 694b424..694b424 100644..100755
--- a/plugins/WinVST/Acceleration/VSTProject.sln
+++ b/plugins/WinVST/Acceleration/VSTProject.sln
diff --git a/plugins/WinVST/Acceleration/VSTProject.vcxproj b/plugins/WinVST/Acceleration/VSTProject.vcxproj
index 3a80f39..3a80f39 100644..100755
--- a/plugins/WinVST/Acceleration/VSTProject.vcxproj
+++ b/plugins/WinVST/Acceleration/VSTProject.vcxproj
diff --git a/plugins/WinVST/Acceleration/VSTProject.vcxproj.filters b/plugins/WinVST/Acceleration/VSTProject.vcxproj.filters
index 8e2ce84..8e2ce84 100644..100755
--- a/plugins/WinVST/Acceleration/VSTProject.vcxproj.filters
+++ b/plugins/WinVST/Acceleration/VSTProject.vcxproj.filters
diff --git a/plugins/WinVST/Acceleration/VSTProject.vcxproj.user b/plugins/WinVST/Acceleration/VSTProject.vcxproj.user
index 2216267..2216267 100644..100755
--- a/plugins/WinVST/Acceleration/VSTProject.vcxproj.user
+++ b/plugins/WinVST/Acceleration/VSTProject.vcxproj.user
diff --git a/plugins/WinVST/Acceleration/vstplug.def b/plugins/WinVST/Acceleration/vstplug.def
index 5bf499a..5bf499a 100644..100755
--- a/plugins/WinVST/Acceleration/vstplug.def
+++ b/plugins/WinVST/Acceleration/vstplug.def
diff --git a/plugins/WinVST/Air/.vs/VSTProject/v14/.suo b/plugins/WinVST/Air/.vs/VSTProject/v14/.suo
index 5e12ea1..50bebe3 100755
--- a/plugins/WinVST/Air/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Air/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Air/Air.cpp b/plugins/WinVST/Air/Air.cpp
index ebe8adc..ea52c26 100755
--- a/plugins/WinVST/Air/Air.cpp
+++ b/plugins/WinVST/Air/Air.cpp
@@ -61,11 +61,8 @@ Air::Air(audioMasterCallback audioMaster) :
D = 0.0;
E = 1.0;
F = 1.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Air/Air.h b/plugins/WinVST/Air/Air.h
index 00c0b76..a713cf2 100755
--- a/plugins/WinVST/Air/Air.h
+++ b/plugins/WinVST/Air/Air.h
@@ -100,11 +100,8 @@ private:
bool flop;
int count;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Air/AirProc.cpp b/plugins/WinVST/Air/AirProc.cpp
index f73e7d8..f5eb39f 100755
--- a/plugins/WinVST/Air/AirProc.cpp
+++ b/plugins/WinVST/Air/AirProc.cpp
@@ -22,9 +22,6 @@ void Air::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
double wet = F;
double dry = 1.0-wet;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -260,25 +257,14 @@ void Air::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -305,9 +291,6 @@ void Air::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
double wet = F;
double dry = 1.0-wet;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -543,25 +526,16 @@ void Air::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/AtmosphereBuss/.vs/VSTProject/v14/.suo b/plugins/WinVST/AtmosphereBuss/.vs/VSTProject/v14/.suo
index 48715fd..c97c439 100755
--- a/plugins/WinVST/AtmosphereBuss/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/AtmosphereBuss/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/AtmosphereBuss/AtmosphereBussProc.cpp b/plugins/WinVST/AtmosphereBuss/AtmosphereBussProc.cpp
index 6530a7e..16d7a31 100755
--- a/plugins/WinVST/AtmosphereBuss/AtmosphereBussProc.cpp
+++ b/plugins/WinVST/AtmosphereBuss/AtmosphereBussProc.cpp
@@ -13,7 +13,6 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
@@ -250,18 +249,14 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32
lastSampleAR = drySampleR;
//store the raw R input sample again for use next time
- //noise shaping to 32-bit floating point
- fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -271,12 +266,6 @@ void AtmosphereBuss::processReplacing(float **inputs, float **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -285,7 +274,6 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
@@ -522,18 +510,16 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V
lastSampleAR = drySampleR;
//store the raw R input sample again for use next time
- //noise shaping to 64-bit floating point
- fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -543,10 +529,4 @@ void AtmosphereBuss::processDoubleReplacing(double **inputs, double **outputs, V
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
} \ No newline at end of file
diff --git a/plugins/WinVST/AtmosphereChannel/.vs/VSTProject/v14/.suo b/plugins/WinVST/AtmosphereChannel/.vs/VSTProject/v14/.suo
index 76526b8..c7e4ab5 100755
--- a/plugins/WinVST/AtmosphereChannel/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/AtmosphereChannel/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/AtmosphereChannel/AtmosphereChannelProc.cpp b/plugins/WinVST/AtmosphereChannel/AtmosphereChannelProc.cpp
index 97038e8..bbdf44c 100755
--- a/plugins/WinVST/AtmosphereChannel/AtmosphereChannelProc.cpp
+++ b/plugins/WinVST/AtmosphereChannel/AtmosphereChannelProc.cpp
@@ -13,7 +13,6 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
@@ -245,18 +244,14 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt
lastSampleAR = drySampleR;
//store the raw R input sample again for use next time
- //noise shaping to 32-bit floating point
- fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -266,12 +261,6 @@ void AtmosphereChannel::processReplacing(float **inputs, float **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -280,7 +269,6 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
@@ -512,18 +500,16 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs
lastSampleAR = drySampleR;
//store the raw R input sample again for use next time
- //noise shaping to 64-bit floating point
- fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -533,10 +519,4 @@ void AtmosphereChannel::processDoubleReplacing(double **inputs, double **outputs
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
} \ No newline at end of file
diff --git a/plugins/WinVST/Aura/.vs/VSTProject/v14/.suo b/plugins/WinVST/Aura/.vs/VSTProject/v14/.suo
index 885f4c3..ef870fa 100755
--- a/plugins/WinVST/Aura/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Aura/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Aura/Aura.cpp b/plugins/WinVST/Aura/Aura.cpp
index d011564..8663d3b 100755
--- a/plugins/WinVST/Aura/Aura.cpp
+++ b/plugins/WinVST/Aura/Aura.cpp
@@ -24,11 +24,8 @@ Aura::Aura(audioMasterCallback audioMaster) :
lastSampleR = 0.0;
previousVelocityR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Aura/Aura.h b/plugins/WinVST/Aura/Aura.h
index 557169d..22d4653 100755
--- a/plugins/WinVST/Aura/Aura.h
+++ b/plugins/WinVST/Aura/Aura.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
long double lastSampleL;
double previousVelocityL;
diff --git a/plugins/WinVST/Aura/AuraProc.cpp b/plugins/WinVST/Aura/AuraProc.cpp
index daf54d6..089a873 100755
--- a/plugins/WinVST/Aura/AuraProc.cpp
+++ b/plugins/WinVST/Aura/AuraProc.cpp
@@ -14,9 +14,6 @@ void Aura::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double correctionL;
double correctionR;
@@ -211,25 +208,14 @@ void Aura::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -248,9 +234,6 @@ void Aura::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double correctionL;
double correctionR;
@@ -445,25 +428,16 @@ void Aura::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Average/.vs/VSTProject/v14/.suo b/plugins/WinVST/Average/.vs/VSTProject/v14/.suo
index 24b500e..832bbaa 100755
--- a/plugins/WinVST/Average/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Average/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Average/Average.cpp b/plugins/WinVST/Average/Average.cpp
index 945c76c..2f39ca1 100755
--- a/plugins/WinVST/Average/Average.cpp
+++ b/plugins/WinVST/Average/Average.cpp
@@ -17,11 +17,8 @@ Average::Average(audioMasterCallback audioMaster) :
for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;}
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Average/Average.h b/plugins/WinVST/Average/Average.h
index 7e4b25e..9932e99 100755
--- a/plugins/WinVST/Average/Average.h
+++ b/plugins/WinVST/Average/Average.h
@@ -57,11 +57,8 @@ private:
double f[11];
double bR[11];
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Average/AverageProc.cpp b/plugins/WinVST/Average/AverageProc.cpp
index 2b1c355..17f4783 100755
--- a/plugins/WinVST/Average/AverageProc.cpp
+++ b/plugins/WinVST/Average/AverageProc.cpp
@@ -14,9 +14,6 @@ void Average::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double correctionSample;
double accumulatorSampleL;
@@ -154,25 +151,14 @@ void Average::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
//in the floating point system.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -189,12 +175,7 @@ void Average::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double* in1 = inputs[0];
double* in2 = inputs[1];
double* out1 = outputs[0];
- double* out2 = outputs[1];
-
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ double* out2 = outputs[1];
double correctionSample;
double accumulatorSampleL;
double accumulatorSampleR;
@@ -330,25 +311,16 @@ void Average::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//if it 'won't change anything' but our sample might be at a very different scaling
//in the floating point system.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/BassKit/.vs/VSTProject/v14/.suo b/plugins/WinVST/BassKit/.vs/VSTProject/v14/.suo
index 8b0a466..adef4ae 100755
--- a/plugins/WinVST/BassKit/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/BassKit/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/BassKit/BassKitProc.cpp b/plugins/WinVST/BassKit/BassKitProc.cpp
index df3310e..9199c82 100755
--- a/plugins/WinVST/BassKit/BassKitProc.cpp
+++ b/plugins/WinVST/BassKit/BassKitProc.cpp
@@ -204,18 +204,14 @@ void BassKit::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -225,12 +221,6 @@ void BassKit::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -430,18 +420,16 @@ void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -451,10 +439,4 @@ void BassKit::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/BitGlitter/.vs/VSTProject/v14/.suo b/plugins/WinVST/BitGlitter/.vs/VSTProject/v14/.suo
index 22c8c6e..6d68229 100755
--- a/plugins/WinVST/BitGlitter/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/BitGlitter/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/BitGlitter/BitGlitter.cpp b/plugins/WinVST/BitGlitter/BitGlitter.cpp
index 7e9cfdb..a1e1a9b 100755
--- a/plugins/WinVST/BitGlitter/BitGlitter.cpp
+++ b/plugins/WinVST/BitGlitter/BitGlitter.cpp
@@ -17,6 +17,9 @@ BitGlitter::BitGlitter(audioMasterCallback audioMaster) :
C = 0.5;
D = 1.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+
ataLastSampleL = 0.0;
ataHalfwaySampleL = 0.0;
lastSampleL = 0.0;
diff --git a/plugins/WinVST/BitGlitter/BitGlitter.h b/plugins/WinVST/BitGlitter/BitGlitter.h
index d87e277..4f108cd 100755
--- a/plugins/WinVST/BitGlitter/BitGlitter.h
+++ b/plugins/WinVST/BitGlitter/BitGlitter.h
@@ -55,6 +55,9 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
+ long double fpNShapeL;
+ long double fpNShapeR;
+
double ataLastSampleL;
double ataHalfwaySampleL;
double ataDrySampleL;
diff --git a/plugins/WinVST/BitGlitter/BitGlitterProc.cpp b/plugins/WinVST/BitGlitter/BitGlitterProc.cpp
index 321d0b6..ff2968c 100755
--- a/plugins/WinVST/BitGlitter/BitGlitterProc.cpp
+++ b/plugins/WinVST/BitGlitter/BitGlitterProc.cpp
@@ -202,6 +202,14 @@ void BitGlitter::processReplacing(float **inputs, float **outputs, VstInt32 samp
outputSampleL = (drySampleL * (1.0-wet)) + (outputSampleL * wet);
outputSampleR = (drySampleR * (1.0-wet)) + (outputSampleR * wet);
}
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)outputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ outputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)outputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ outputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
@@ -408,6 +416,17 @@ void BitGlitter::processDoubleReplacing(double **inputs, double **outputs, VstIn
outputSampleR = (drySampleR * (1.0-wet)) + (outputSampleR * wet);
}
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)outputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ outputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)outputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ outputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
+
*out1 = outputSampleL;
*out2 = outputSampleR;
diff --git a/plugins/WinVST/BitShiftGain/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/BitShiftGain/.vs/Console4Channel64/v14/.suo
index 777b846..777b846 100644..100755
--- a/plugins/WinVST/BitShiftGain/.vs/Console4Channel64/v14/.suo
+++ b/plugins/WinVST/BitShiftGain/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suo b/plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suo
index 0b76ac5..d9c85b0 100644..100755
--- a/plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/BitShiftGain/BitShiftGain.cpp b/plugins/WinVST/BitShiftGain/BitShiftGain.cpp
index c89bb9f..c89bb9f 100644..100755
--- a/plugins/WinVST/BitShiftGain/BitShiftGain.cpp
+++ b/plugins/WinVST/BitShiftGain/BitShiftGain.cpp
diff --git a/plugins/WinVST/BitShiftGain/BitShiftGain.h b/plugins/WinVST/BitShiftGain/BitShiftGain.h
index 00400a2..00400a2 100644..100755
--- a/plugins/WinVST/BitShiftGain/BitShiftGain.h
+++ b/plugins/WinVST/BitShiftGain/BitShiftGain.h
diff --git a/plugins/WinVST/BitShiftGain/BitShiftGainProc.cpp b/plugins/WinVST/BitShiftGain/BitShiftGainProc.cpp
index c680ebe..c680ebe 100644..100755
--- a/plugins/WinVST/BitShiftGain/BitShiftGainProc.cpp
+++ b/plugins/WinVST/BitShiftGain/BitShiftGainProc.cpp
diff --git a/plugins/WinVST/BitShiftGain/VSTProject.sln b/plugins/WinVST/BitShiftGain/VSTProject.sln
index 694b424..694b424 100644..100755
--- a/plugins/WinVST/BitShiftGain/VSTProject.sln
+++ b/plugins/WinVST/BitShiftGain/VSTProject.sln
diff --git a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj
index 4403483..4403483 100644..100755
--- a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj
+++ b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj
diff --git a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.filters b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.filters
index 6d9420c..6d9420c 100644..100755
--- a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.filters
+++ b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.filters
diff --git a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.user b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.user
index 2216267..2216267 100644..100755
--- a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.user
+++ b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.user
diff --git a/plugins/WinVST/BitShiftGain/vstplug.def b/plugins/WinVST/BitShiftGain/vstplug.def
index 5bf499a..5bf499a 100644..100755
--- a/plugins/WinVST/BitShiftGain/vstplug.def
+++ b/plugins/WinVST/BitShiftGain/vstplug.def
diff --git a/plugins/WinVST/Bite/.vs/VSTProject/v14/.suo b/plugins/WinVST/Bite/.vs/VSTProject/v14/.suo
index a8fee43..3113a75 100755
--- a/plugins/WinVST/Bite/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Bite/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Bite/Bite.cpp b/plugins/WinVST/Bite/Bite.cpp
index b563f54..c9d0fcb 100755
--- a/plugins/WinVST/Bite/Bite.cpp
+++ b/plugins/WinVST/Bite/Bite.cpp
@@ -34,11 +34,8 @@ Bite::Bite(audioMasterCallback audioMaster) :
sampleHR = 0.0;
sampleIR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Bite/Bite.h b/plugins/WinVST/Bite/Bite.h
index d6f9e44..288ac7f 100755
--- a/plugins/WinVST/Bite/Bite.h
+++ b/plugins/WinVST/Bite/Bite.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double sampleAL;
double sampleBL;
diff --git a/plugins/WinVST/Bite/BiteProc.cpp b/plugins/WinVST/Bite/BiteProc.cpp
index 690a998..64e0ac4 100755
--- a/plugins/WinVST/Bite/BiteProc.cpp
+++ b/plugins/WinVST/Bite/BiteProc.cpp
@@ -17,9 +17,6 @@ void Bite::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
double overallscale = 1.3;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double gain = ((A*2.0)-1.0)*overallscale;
double outputgain = B;
@@ -119,25 +116,14 @@ void Bite::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
inputSampleR *= outputgain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -159,9 +145,6 @@ void Bite::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
double overallscale = 1.3;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double gain = ((A*2.0)-1.0)*overallscale;
double outputgain = B;
@@ -261,25 +244,16 @@ void Bite::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
inputSampleR *= outputgain;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/BuildATPDF/.vs/VSTProject/v14/.suo b/plugins/WinVST/BuildATPDF/.vs/VSTProject/v14/.suo
index 48c954d..ac5f5f8 100755
--- a/plugins/WinVST/BuildATPDF/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/BuildATPDF/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/BussColors4/.vs/VSTProject/v14/.suo b/plugins/WinVST/BussColors4/.vs/VSTProject/v14/.suo
index 8ad21ec..d45891a 100755
--- a/plugins/WinVST/BussColors4/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/BussColors4/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/BussColors4/BussColors4.cpp b/plugins/WinVST/BussColors4/BussColors4.cpp
index 720dbf9..c7de380 100755
--- a/plugins/WinVST/BussColors4/BussColors4.cpp
+++ b/plugins/WinVST/BussColors4/BussColors4.cpp
@@ -44,11 +44,8 @@ BussColors4::BussColors4(audioMasterCallback audioMaster) :
slowdynR = 0;
gcount = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
@@ -114,21 +111,6 @@ void BussColors4::setParameter(VstInt32 index, float value) {
case kParamD: D = value; break; //this is the popup, stored as a float
default: throw; // unknown parameter, shouldn't happen!
}
- //we can also set other defaults here, and do calculations that only have to happen
- //once when parameters actually change. Here is the 'popup' setting its (global) values.
- //variables can also be set in the processreplacing loop, and there they'll be set every buffersize
- //here they're set when a parameter's actually changed, which should be less frequent, but
- //you must use global variables in the BussColors4.h file to do it.
- switch((VstInt32)( D * 3.999 ))
- {
- case 0: fpFlip = true; break; //choice A
- case 1: fpFlip = false; break; //choice B
- case 2: break; //choice C
- case 3: break; //choice D
- default: break; //should not happen
- }
- //this relates to using D as a 'popup' and changing things based on that switch.
- //we are using fpFlip just because it's already there globally, as an example.
}
float BussColors4::getParameter(VstInt32 index) {
diff --git a/plugins/WinVST/BussColors4/BussColors4.h b/plugins/WinVST/BussColors4/BussColors4.h
index d07460e..6452555 100755
--- a/plugins/WinVST/BussColors4/BussColors4.h
+++ b/plugins/WinVST/BussColors4/BussColors4.h
@@ -68,11 +68,8 @@ private:
double slowdynR;
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/BussColors4/BussColors4Proc.cpp b/plugins/WinVST/BussColors4/BussColors4Proc.cpp
index 2629ee8..b1b9451 100755
--- a/plugins/WinVST/BussColors4/BussColors4Proc.cpp
+++ b/plugins/WinVST/BussColors4/BussColors4Proc.cpp
@@ -31,9 +31,6 @@ void BussColors4::processReplacing(float **inputs, float **outputs, VstInt32 sam
double gain = 0.436;
double outgain = 1.0;
double bridgerectifier;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -795,25 +792,14 @@ void BussColors4::processReplacing(float **inputs, float **outputs, VstInt32 sam
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -849,9 +835,6 @@ void BussColors4::processDoubleReplacing(double **inputs, double **outputs, VstI
double gain = 0.436;
double outgain = 1.0;
double bridgerectifier;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -1613,25 +1596,16 @@ void BussColors4::processDoubleReplacing(double **inputs, double **outputs, VstI
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/ButterComp/.vs/VSTProject/v14/.suo b/plugins/WinVST/ButterComp/.vs/VSTProject/v14/.suo
index 973e33a..33f7d87 100755
--- a/plugins/WinVST/ButterComp/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/ButterComp/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/ButterComp/ButterComp.cpp b/plugins/WinVST/ButterComp/ButterComp.cpp
index e6a33f7..b3123e2 100755
--- a/plugins/WinVST/ButterComp/ButterComp.cpp
+++ b/plugins/WinVST/ButterComp/ButterComp.cpp
@@ -26,11 +26,8 @@ ButterComp::ButterComp(audioMasterCallback audioMaster) :
controlBnegR = 1.0;
targetposR = 1.0;
targetnegR = 1.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/ButterComp/ButterComp.h b/plugins/WinVST/ButterComp/ButterComp.h
index af6df66..5c9862b 100755
--- a/plugins/WinVST/ButterComp/ButterComp.h
+++ b/plugins/WinVST/ButterComp/ButterComp.h
@@ -65,11 +65,8 @@ private:
double controlBnegR;
double targetposR;
double targetnegR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/ButterComp/ButterCompProc.cpp b/plugins/WinVST/ButterComp/ButterCompProc.cpp
index ea52946..d87030c 100755
--- a/plugins/WinVST/ButterComp/ButterCompProc.cpp
+++ b/plugins/WinVST/ButterComp/ButterCompProc.cpp
@@ -17,9 +17,6 @@ void ButterComp::processReplacing(float **inputs, float **outputs, VstInt32 samp
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputposL;
double inputnegL;
@@ -181,25 +178,14 @@ void ButterComp::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -221,9 +207,6 @@ void ButterComp::processDoubleReplacing(double **inputs, double **outputs, VstIn
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputposL;
double inputnegL;
@@ -385,25 +368,16 @@ void ButterComp::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/ButterComp2/.vs/VSTProject/v14/.suo b/plugins/WinVST/ButterComp2/.vs/VSTProject/v14/.suo
index 5192314..7169495 100755
--- a/plugins/WinVST/ButterComp2/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/ButterComp2/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/ButterComp2/ButterComp2Proc.cpp b/plugins/WinVST/ButterComp2/ButterComp2Proc.cpp
index 55ce488..67a6367 100755
--- a/plugins/WinVST/ButterComp2/ButterComp2Proc.cpp
+++ b/plugins/WinVST/ButterComp2/ButterComp2Proc.cpp
@@ -223,18 +223,14 @@ void ButterComp2::processReplacing(float **inputs, float **outputs, VstInt32 sam
flip = !flip;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -244,12 +240,6 @@ void ButterComp2::processReplacing(float **inputs, float **outputs, VstInt32 sam
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -468,18 +458,16 @@ void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstI
flip = !flip;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -489,10 +477,4 @@ void ButterComp2::processDoubleReplacing(double **inputs, double **outputs, VstI
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/C5RawBuss/.vs/VSTProject/v14/.suo b/plugins/WinVST/C5RawBuss/.vs/VSTProject/v14/.suo
index 03f4aae..7727c07 100755
--- a/plugins/WinVST/C5RawBuss/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/C5RawBuss/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/C5RawBuss/C5RawBuss.cpp b/plugins/WinVST/C5RawBuss/C5RawBuss.cpp
index 14b4dc5..8fba0ef 100755
--- a/plugins/WinVST/C5RawBuss/C5RawBuss.cpp
+++ b/plugins/WinVST/C5RawBuss/C5RawBuss.cpp
@@ -17,11 +17,8 @@ C5RawBuss::C5RawBuss(audioMasterCallback audioMaster) :
lastSampleBussL = 0.0;
lastFXBussR = 0.0;
lastSampleBussR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/C5RawBuss/C5RawBuss.h b/plugins/WinVST/C5RawBuss/C5RawBuss.h
index 5a409bc..f4d01fe 100755
--- a/plugins/WinVST/C5RawBuss/C5RawBuss.h
+++ b/plugins/WinVST/C5RawBuss/C5RawBuss.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastFXBussL;
double lastSampleBussL;
diff --git a/plugins/WinVST/C5RawBuss/C5RawBussProc.cpp b/plugins/WinVST/C5RawBuss/C5RawBussProc.cpp
index 1bf5eec..fab4612 100755
--- a/plugins/WinVST/C5RawBuss/C5RawBussProc.cpp
+++ b/plugins/WinVST/C5RawBuss/C5RawBussProc.cpp
@@ -14,9 +14,6 @@ void C5RawBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = A * 0.5;
centering = 1.0 - pow(centering,5);
@@ -111,25 +108,14 @@ void C5RawBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampl
//build new signal off what was present in output last time
//slew aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -148,9 +134,6 @@ void C5RawBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = A * 0.5;
centering = 1.0 - pow(centering,5);
@@ -245,25 +228,16 @@ void C5RawBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt
//build new signal off what was present in output last time
//slew aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/C5RawChannel/.vs/VSTProject/v14/.suo b/plugins/WinVST/C5RawChannel/.vs/VSTProject/v14/.suo
index 60c2966..6732c5e 100755
--- a/plugins/WinVST/C5RawChannel/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/C5RawChannel/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/C5RawChannel/C5RawChannel.cpp b/plugins/WinVST/C5RawChannel/C5RawChannel.cpp
index b02a07d..ffc2ecf 100755
--- a/plugins/WinVST/C5RawChannel/C5RawChannel.cpp
+++ b/plugins/WinVST/C5RawChannel/C5RawChannel.cpp
@@ -17,11 +17,8 @@ C5RawChannel::C5RawChannel(audioMasterCallback audioMaster) :
lastSampleChannelL = 0.0;
lastFXChannelR = 0.0;
lastSampleChannelR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/C5RawChannel/C5RawChannel.h b/plugins/WinVST/C5RawChannel/C5RawChannel.h
index 2281961..3ce3e84 100755
--- a/plugins/WinVST/C5RawChannel/C5RawChannel.h
+++ b/plugins/WinVST/C5RawChannel/C5RawChannel.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastFXChannelL;
double lastSampleChannelL;
diff --git a/plugins/WinVST/C5RawChannel/C5RawChannelProc.cpp b/plugins/WinVST/C5RawChannel/C5RawChannelProc.cpp
index 41f949e..b2679ff 100755
--- a/plugins/WinVST/C5RawChannel/C5RawChannelProc.cpp
+++ b/plugins/WinVST/C5RawChannel/C5RawChannelProc.cpp
@@ -14,9 +14,6 @@ void C5RawChannel::processReplacing(float **inputs, float **outputs, VstInt32 sa
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = A * 0.5;
centering = 1.0 - pow(centering,5);
@@ -110,25 +107,14 @@ void C5RawChannel::processReplacing(float **inputs, float **outputs, VstInt32 sa
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -147,9 +133,6 @@ void C5RawChannel::processDoubleReplacing(double **inputs, double **outputs, Vst
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double centering = A * 0.5;
centering = 1.0 - pow(centering,5);
@@ -243,25 +226,16 @@ void C5RawChannel::processDoubleReplacing(double **inputs, double **outputs, Vst
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/CStrip/.vs/VSTProject/v14/.suo b/plugins/WinVST/CStrip/.vs/VSTProject/v14/.suo
index 36fe57d..09cd1aa 100755
--- a/plugins/WinVST/CStrip/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/CStrip/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/CStrip/CStrip.cpp b/plugins/WinVST/CStrip/CStrip.cpp
index 1c24d1b..2049ab8 100755
--- a/plugins/WinVST/CStrip/CStrip.cpp
+++ b/plugins/WinVST/CStrip/CStrip.cpp
@@ -153,11 +153,8 @@ CStrip::CStrip(audioMasterCallback audioMaster) :
nvgRA = nvgRB = 0.0;
//end ButterComp
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/CStrip/CStrip.h b/plugins/WinVST/CStrip/CStrip.h
index 10f6729..cc9f722 100755
--- a/plugins/WinVST/CStrip/CStrip.h
+++ b/plugins/WinVST/CStrip/CStrip.h
@@ -63,11 +63,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/WinVST/CStrip/CStripProc.cpp b/plugins/WinVST/CStrip/CStripProc.cpp
index 272b9b6..60ce59c 100755
--- a/plugins/WinVST/CStrip/CStripProc.cpp
+++ b/plugins/WinVST/CStrip/CStripProc.cpp
@@ -20,10 +20,8 @@ void CStrip::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
overallscale = getSampleRate();
compscale = compscale * overallscale;
//compscale is the one that's 1 or something like 2.2 for 96K rates
- float fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -728,25 +726,14 @@ void CStrip::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
inputSampleR *= outputgain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -771,10 +758,8 @@ void CStrip::processDoubleReplacing(double **inputs, double **outputs, VstInt32
overallscale = getSampleRate();
compscale = compscale * overallscale;
//compscale is the one that's 1 or something like 2.2 for 96K rates
- double fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
long double fpNew = 1.0 - fpOld;
-
long double inputSampleL;
long double inputSampleR;
@@ -1479,25 +1464,16 @@ void CStrip::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR *= outputgain;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Capacitor/.vs/VSTProject/v14/.suo b/plugins/WinVST/Capacitor/.vs/VSTProject/v14/.suo
index 28e146c..97e4f53 100755
--- a/plugins/WinVST/Capacitor/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Capacitor/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Capacitor/Capacitor.cpp b/plugins/WinVST/Capacitor/Capacitor.cpp
index 2a62df6..0ade9c9 100755
--- a/plugins/WinVST/Capacitor/Capacitor.cpp
+++ b/plugins/WinVST/Capacitor/Capacitor.cpp
@@ -51,11 +51,8 @@ Capacitor::Capacitor(audioMasterCallback audioMaster) :
lastHighpass = 1000.0;
lastWet = 1000.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Capacitor/Capacitor.h b/plugins/WinVST/Capacitor/Capacitor.h
index d80c676..0799d39 100755
--- a/plugins/WinVST/Capacitor/Capacitor.h
+++ b/plugins/WinVST/Capacitor/Capacitor.h
@@ -94,11 +94,8 @@ private:
double lastHighpass;
double lastWet;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Capacitor/CapacitorProc.cpp b/plugins/WinVST/Capacitor/CapacitorProc.cpp
index 6accb0d..6b3582b 100755
--- a/plugins/WinVST/Capacitor/CapacitorProc.cpp
+++ b/plugins/WinVST/Capacitor/CapacitorProc.cpp
@@ -30,9 +30,6 @@ void Capacitor::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double invHighpass;
double dry;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -182,25 +179,14 @@ void Capacitor::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleL = (drySampleL * dry) + (inputSampleL * wet);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -235,9 +221,6 @@ void Capacitor::processDoubleReplacing(double **inputs, double **outputs, VstInt
double invHighpass;
double dry;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -387,25 +370,16 @@ void Capacitor::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleL = (drySampleL * dry) + (inputSampleL * wet);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Channel6/.vs/VSTProject/v14/.suo b/plugins/WinVST/Channel6/.vs/VSTProject/v14/.suo
index 521c0d0..7d5f2f1 100755
--- a/plugins/WinVST/Channel6/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Channel6/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Channel6/Channel6Proc.cpp b/plugins/WinVST/Channel6/Channel6Proc.cpp
index d206851..9f16b2a 100755
--- a/plugins/WinVST/Channel6/Channel6Proc.cpp
+++ b/plugins/WinVST/Channel6/Channel6Proc.cpp
@@ -121,18 +121,14 @@ void Channel6::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR *= output;
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -142,12 +138,6 @@ void Channel6::processReplacing(float **inputs, float **outputs, VstInt32 sample
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -264,18 +254,16 @@ void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR *= output;
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -285,10 +273,4 @@ void Channel6::processDoubleReplacing(double **inputs, double **outputs, VstInt3
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/Chorus/.vs/VSTProject/v14/.suo b/plugins/WinVST/Chorus/.vs/VSTProject/v14/.suo
index 6891b3b..113c667 100755
--- a/plugins/WinVST/Chorus/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Chorus/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Chorus/Chorus.cpp b/plugins/WinVST/Chorus/Chorus.cpp
index a0699ec..1f3965a 100755
--- a/plugins/WinVST/Chorus/Chorus.cpp
+++ b/plugins/WinVST/Chorus/Chorus.cpp
@@ -27,12 +27,9 @@ Chorus::Chorus(audioMasterCallback audioMaster) :
airEvenR = 0.0;
airOddR = 0.0;
airFactorR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Chorus/Chorus.h b/plugins/WinVST/Chorus/Chorus.h
index fb2fb44..5508ac3 100755
--- a/plugins/WinVST/Chorus/Chorus.h
+++ b/plugins/WinVST/Chorus/Chorus.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
const static int totalsamples = 16386;
float dL[totalsamples];
@@ -73,6 +70,7 @@ private:
double airEvenR;
double airOddR;
double airFactorR;
+ bool fpFlip;
float A;
float B;
diff --git a/plugins/WinVST/Chorus/ChorusProc.cpp b/plugins/WinVST/Chorus/ChorusProc.cpp
index aed2bc0..368ade7 100755
--- a/plugins/WinVST/Chorus/ChorusProc.cpp
+++ b/plugins/WinVST/Chorus/ChorusProc.cpp
@@ -30,9 +30,6 @@ void Chorus::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
double offset;
//this is a double buffer so we will be splitting it in two
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -134,26 +131,16 @@ void Chorus::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -188,9 +175,6 @@ void Chorus::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double offset;
//this is a double buffer so we will be splitting it in two
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -293,25 +277,17 @@ void Chorus::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/ChorusEnsemble/.vs/VSTProject/v14/.suo b/plugins/WinVST/ChorusEnsemble/.vs/VSTProject/v14/.suo
index 169e939..f4a5693 100755
--- a/plugins/WinVST/ChorusEnsemble/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/ChorusEnsemble/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.cpp b/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.cpp
index b1012f9..318b678 100755
--- a/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.cpp
+++ b/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.cpp
@@ -27,12 +27,9 @@ ChorusEnsemble::ChorusEnsemble(audioMasterCallback audioMaster) :
airEvenR = 0.0;
airOddR = 0.0;
airFactorR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.h b/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.h
index bd442ab..e7df332 100755
--- a/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.h
+++ b/plugins/WinVST/ChorusEnsemble/ChorusEnsemble.h
@@ -67,12 +67,9 @@ private:
double airEvenR;
double airOddR;
double airFactorR;
-
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/ChorusEnsemble/ChorusEnsembleProc.cpp b/plugins/WinVST/ChorusEnsemble/ChorusEnsembleProc.cpp
index 2a783dd..1663244 100755
--- a/plugins/WinVST/ChorusEnsemble/ChorusEnsembleProc.cpp
+++ b/plugins/WinVST/ChorusEnsemble/ChorusEnsembleProc.cpp
@@ -17,9 +17,6 @@ void ChorusEnsemble::processReplacing(float **inputs, float **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double speed = pow(A,3) * 0.001;
speed *= overallscale;
@@ -174,27 +171,17 @@ void ChorusEnsemble::processReplacing(float **inputs, float **outputs, VstInt32
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
+ fpFlip = !fpFlip;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -216,9 +203,6 @@ void ChorusEnsemble::processDoubleReplacing(double **inputs, double **outputs, V
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double speed = pow(A,3) * 0.001;
speed *= overallscale;
@@ -373,27 +357,19 @@ void ChorusEnsemble::processDoubleReplacing(double **inputs, double **outputs, V
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
+ fpFlip = !fpFlip;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/ClipOnly/.vs/VSTProject/v14/.suo b/plugins/WinVST/ClipOnly/.vs/VSTProject/v14/.suo
index 0762d52..32dfba4 100755
--- a/plugins/WinVST/ClipOnly/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/ClipOnly/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Console4Buss/.vs/VSTProject/v14/.suo b/plugins/WinVST/Console4Buss/.vs/VSTProject/v14/.suo
index 82160f2..d8e035e 100755
--- a/plugins/WinVST/Console4Buss/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Console4Buss/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Console4Buss/Console4Buss.cpp b/plugins/WinVST/Console4Buss/Console4Buss.cpp
index 79c7f6f..0c8e00c 100755
--- a/plugins/WinVST/Console4Buss/Console4Buss.cpp
+++ b/plugins/WinVST/Console4Buss/Console4Buss.cpp
@@ -22,11 +22,8 @@ Console4Buss::Console4Buss(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
// TODO: uncomment canDo entries according to your plugin's capabilities
// _canDo.insert("sendVstEvents"); // plug-in will send Vst events to Host.
diff --git a/plugins/WinVST/Console4Buss/Console4Buss.h b/plugins/WinVST/Console4Buss/Console4Buss.h
index b19e6f2..9a9cbfb 100755
--- a/plugins/WinVST/Console4Buss/Console4Buss.h
+++ b/plugins/WinVST/Console4Buss/Console4Buss.h
@@ -71,11 +71,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- double fpNShapeLA;
- double fpNShapeLB;
- double fpNShapeRA;
- double fpNShapeRB;
- bool fpFlip;
+ double fpNShapeL;
+ double fpNShapeR;
//default stuff
double lastSampleL;
double lastSampleR;
diff --git a/plugins/WinVST/Console4Buss/Console4BussProc.cpp b/plugins/WinVST/Console4Buss/Console4BussProc.cpp
index 712e496..dde872a 100755
--- a/plugins/WinVST/Console4Buss/Console4BussProc.cpp
+++ b/plugins/WinVST/Console4Buss/Console4BussProc.cpp
@@ -18,10 +18,6 @@ void Console4Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
-
long double inputSampleL;
long double inputSampleR;
long double half;
@@ -123,25 +119,14 @@ void Console4Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa
//this is the inverse processing for Console: boosts but not so much if there's slew.
//is this too subtle an effect?
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -163,9 +148,6 @@ void Console4Buss::processDoubleReplacing(double **inputs, double **outputs, Vst
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -267,25 +249,16 @@ void Console4Buss::processDoubleReplacing(double **inputs, double **outputs, Vst
//this is the inverse processing for Console: boosts but not so much if there's slew.
//is this too subtle an effect?
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
diff --git a/plugins/WinVST/Console4Channel/.vs/VSTProject/v14/.suo b/plugins/WinVST/Console4Channel/.vs/VSTProject/v14/.suo
index e9e8200..bec1667 100755
--- a/plugins/WinVST/Console4Channel/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Console4Channel/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Console4Channel/Console4Channel.cpp b/plugins/WinVST/Console4Channel/Console4Channel.cpp
index 52f6190..2e524a1 100755
--- a/plugins/WinVST/Console4Channel/Console4Channel.cpp
+++ b/plugins/WinVST/Console4Channel/Console4Channel.cpp
@@ -20,11 +20,8 @@ Console4Channel::Console4Channel(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
// TODO: uncomment canDo entries according to your plugin's capabilities
// _canDo.insert("sendVstEvents"); // plug-in will send Vst events to Host.
diff --git a/plugins/WinVST/Console4Channel/Console4Channel.h b/plugins/WinVST/Console4Channel/Console4Channel.h
index 861ebe3..564853a 100755
--- a/plugins/WinVST/Console4Channel/Console4Channel.h
+++ b/plugins/WinVST/Console4Channel/Console4Channel.h
@@ -76,11 +76,8 @@ private:
double settingchase;
double chasespeed;
- double fpNShapeLA;
- double fpNShapeLB;
- double fpNShapeRA;
- double fpNShapeRB;
- bool fpFlip;
+ double fpNShapeL;
+ double fpNShapeR;
//default stuff
float gain;
};
diff --git a/plugins/WinVST/Console4Channel/Console4ChannelProc.cpp b/plugins/WinVST/Console4Channel/Console4ChannelProc.cpp
index 9bf7244..3538710 100755
--- a/plugins/WinVST/Console4Channel/Console4ChannelProc.cpp
+++ b/plugins/WinVST/Console4Channel/Console4ChannelProc.cpp
@@ -18,10 +18,6 @@ void Console4Channel::processReplacing(float **inputs, float **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
-
long double inputSampleL;
long double inputSampleR;
long double half;
@@ -105,25 +101,14 @@ void Console4Channel::processReplacing(float **inputs, float **outputs, VstInt32
//this is part of the Purest line: stuff that is on every track
//needs to be DAMN LOW ON MATH srsly guys
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -145,9 +130,6 @@ void Console4Channel::processDoubleReplacing(double **inputs, double **outputs,
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -232,25 +214,16 @@ void Console4Channel::processDoubleReplacing(double **inputs, double **outputs,
//this is part of the Purest line: stuff that is on every track
//needs to be DAMN LOW ON MATH srsly guys
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Console5Buss/.vs/VSTProject/v14/.suo b/plugins/WinVST/Console5Buss/.vs/VSTProject/v14/.suo
index f8fc15a..c5d83aa 100755
--- a/plugins/WinVST/Console5Buss/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Console5Buss/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Console5Buss/Console5Buss.cpp b/plugins/WinVST/Console5Buss/Console5Buss.cpp
index 7f1c915..7e937a8 100755
--- a/plugins/WinVST/Console5Buss/Console5Buss.cpp
+++ b/plugins/WinVST/Console5Buss/Console5Buss.cpp
@@ -22,11 +22,8 @@ Console5Buss::Console5Buss(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Console5Buss/Console5Buss.h b/plugins/WinVST/Console5Buss/Console5Buss.h
index 6ece284..0166f33 100755
--- a/plugins/WinVST/Console5Buss/Console5Buss.h
+++ b/plugins/WinVST/Console5Buss/Console5Buss.h
@@ -61,11 +61,8 @@ private:
double gainchase;
double settingchase;
double chasespeed;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Console5Buss/Console5BussProc.cpp b/plugins/WinVST/Console5Buss/Console5BussProc.cpp
index 28b4980..21069e8 100755
--- a/plugins/WinVST/Console5Buss/Console5BussProc.cpp
+++ b/plugins/WinVST/Console5Buss/Console5BussProc.cpp
@@ -17,9 +17,6 @@ void Console5Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -151,25 +148,14 @@ void Console5Buss::processReplacing(float **inputs, float **outputs, VstInt32 sa
lastFXBussR *= (1.0 - (nearZeroR * bassTrim));
//this cuts back the DC offset directly, relative to how near zero we are
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -191,9 +177,6 @@ void Console5Buss::processDoubleReplacing(double **inputs, double **outputs, Vst
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -325,25 +308,16 @@ void Console5Buss::processDoubleReplacing(double **inputs, double **outputs, Vst
lastFXBussR *= (1.0 - (nearZeroR * bassTrim));
//this cuts back the DC offset directly, relative to how near zero we are
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Console5Channel/.vs/VSTProject/v14/.suo b/plugins/WinVST/Console5Channel/.vs/VSTProject/v14/.suo
index ac0d461..99d2ade 100755
--- a/plugins/WinVST/Console5Channel/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Console5Channel/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Console5Channel/Console5Channel.cpp b/plugins/WinVST/Console5Channel/Console5Channel.cpp
index 9305bf4..1a8f6fb 100755
--- a/plugins/WinVST/Console5Channel/Console5Channel.cpp
+++ b/plugins/WinVST/Console5Channel/Console5Channel.cpp
@@ -22,11 +22,8 @@ Console5Channel::Console5Channel(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Console5Channel/Console5Channel.h b/plugins/WinVST/Console5Channel/Console5Channel.h
index 59e7950..bbc58b3 100755
--- a/plugins/WinVST/Console5Channel/Console5Channel.h
+++ b/plugins/WinVST/Console5Channel/Console5Channel.h
@@ -61,11 +61,8 @@ private:
double gainchase;
double settingchase;
double chasespeed;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Console5Channel/Console5ChannelProc.cpp b/plugins/WinVST/Console5Channel/Console5ChannelProc.cpp
index 428e5e4..a010170 100755
--- a/plugins/WinVST/Console5Channel/Console5ChannelProc.cpp
+++ b/plugins/WinVST/Console5Channel/Console5ChannelProc.cpp
@@ -17,9 +17,6 @@ void Console5Channel::processReplacing(float **inputs, float **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -152,25 +149,14 @@ void Console5Channel::processReplacing(float **inputs, float **outputs, VstInt32
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -192,9 +178,6 @@ void Console5Channel::processDoubleReplacing(double **inputs, double **outputs,
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -327,25 +310,16 @@ void Console5Channel::processDoubleReplacing(double **inputs, double **outputs,
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Console5DarkCh/.vs/VSTProject/v14/.suo b/plugins/WinVST/Console5DarkCh/.vs/VSTProject/v14/.suo
index 1473e4d..4564e3b 100755
--- a/plugins/WinVST/Console5DarkCh/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Console5DarkCh/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Console5DarkCh/Console5DarkCh.cpp b/plugins/WinVST/Console5DarkCh/Console5DarkCh.cpp
index 0d613a9..350a6b3 100755
--- a/plugins/WinVST/Console5DarkCh/Console5DarkCh.cpp
+++ b/plugins/WinVST/Console5DarkCh/Console5DarkCh.cpp
@@ -22,11 +22,8 @@ Console5DarkCh::Console5DarkCh(audioMasterCallback audioMaster) :
gainchase = -90.0;
settingchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Console5DarkCh/Console5DarkCh.h b/plugins/WinVST/Console5DarkCh/Console5DarkCh.h
index 558e4f7..3265f5c 100755
--- a/plugins/WinVST/Console5DarkCh/Console5DarkCh.h
+++ b/plugins/WinVST/Console5DarkCh/Console5DarkCh.h
@@ -61,11 +61,8 @@ private:
double gainchase;
double settingchase;
double chasespeed;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Console5DarkCh/Console5DarkChProc.cpp b/plugins/WinVST/Console5DarkCh/Console5DarkChProc.cpp
index e17ff88c..ba3a842 100755
--- a/plugins/WinVST/Console5DarkCh/Console5DarkChProc.cpp
+++ b/plugins/WinVST/Console5DarkCh/Console5DarkChProc.cpp
@@ -17,9 +17,6 @@ void Console5DarkCh::processReplacing(float **inputs, float **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -152,25 +149,14 @@ void Console5DarkCh::processReplacing(float **inputs, float **outputs, VstInt32
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -192,9 +178,6 @@ void Console5DarkCh::processDoubleReplacing(double **inputs, double **outputs, V
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double differenceL;
@@ -327,25 +310,16 @@ void Console5DarkCh::processDoubleReplacing(double **inputs, double **outputs, V
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/CrunchyGrooveWear/.vs/VSTProject/v14/.suo b/plugins/WinVST/CrunchyGrooveWear/.vs/VSTProject/v14/.suo
index df12eeb..8e47c8f 100755
--- a/plugins/WinVST/CrunchyGrooveWear/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/CrunchyGrooveWear/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.cpp b/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.cpp
index 68a7fd9..6653b91 100755
--- a/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.cpp
+++ b/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.cpp
@@ -36,11 +36,8 @@ CrunchyGrooveWear::CrunchyGrooveWear(audioMasterCallback audioMaster) :
cMidPrevR = 0.0;
dMidPrevR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.h b/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.h
index ed304c5..3489e5b 100755
--- a/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.h
+++ b/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWear.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double aMidL[21];
diff --git a/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp b/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp
index 4eec93e..3c9762e 100755
--- a/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp
+++ b/plugins/WinVST/CrunchyGrooveWear/CrunchyGrooveWearProc.cpp
@@ -14,9 +14,6 @@ void CrunchyGrooveWear::processReplacing(float **inputs, float **outputs, VstInt
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = (pow(A,2)*19.0)+1.0;
double gain = overallscale;
@@ -434,25 +431,14 @@ void CrunchyGrooveWear::processReplacing(float **inputs, float **outputs, VstInt
drySampleR = inputSampleR;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -471,9 +457,6 @@ void CrunchyGrooveWear::processDoubleReplacing(double **inputs, double **outputs
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = (pow(A,2)*19.0)+1.0;
double gain = overallscale;
@@ -891,25 +874,16 @@ void CrunchyGrooveWear::processDoubleReplacing(double **inputs, double **outputs
drySampleR = inputSampleR;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Crystal/.vs/VSTProject/v14/.suo b/plugins/WinVST/Crystal/.vs/VSTProject/v14/.suo
index 3842fd5..5f8b648 100755
--- a/plugins/WinVST/Crystal/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Crystal/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Crystal/CrystalProc.cpp b/plugins/WinVST/Crystal/CrystalProc.cpp
index 9c62355..7e696a7 100755
--- a/plugins/WinVST/Crystal/CrystalProc.cpp
+++ b/plugins/WinVST/Crystal/CrystalProc.cpp
@@ -191,18 +191,14 @@ void Crystal::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
//when current and old samples are different from each other, otherwise you can't tell it's there.
//This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently.
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -212,12 +208,6 @@ void Crystal::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -404,18 +394,16 @@ void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//when current and old samples are different from each other, otherwise you can't tell it's there.
//This is not only during silence but the tops of low frequency waves: it scales down to affect lows more gently.
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -425,10 +413,4 @@ void Crystal::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/DeEss/.vs/VSTProject/v14/.suo b/plugins/WinVST/DeEss/.vs/VSTProject/v14/.suo
index bf3a84e..1c15f88 100755
--- a/plugins/WinVST/DeEss/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/DeEss/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/DeEss/DeEssProc.cpp b/plugins/WinVST/DeEss/DeEssProc.cpp
index 9a8e14b..9b030a4 100755
--- a/plugins/WinVST/DeEss/DeEssProc.cpp
+++ b/plugins/WinVST/DeEss/DeEssProc.cpp
@@ -148,18 +148,14 @@ void DeEss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
flip = !flip;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -169,12 +165,6 @@ void DeEss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -318,18 +308,16 @@ void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
flip = !flip;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -339,10 +327,4 @@ void DeEss::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/DeRez/.vs/VSTProject/v14/.suo b/plugins/WinVST/DeRez/.vs/VSTProject/v14/.suo
index 681434c..e083369 100755
--- a/plugins/WinVST/DeRez/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/DeRez/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/DeRez/DeRez.cpp b/plugins/WinVST/DeRez/DeRez.cpp
index 404127a..cb9b514 100755
--- a/plugins/WinVST/DeRez/DeRez.cpp
+++ b/plugins/WinVST/DeRez/DeRez.cpp
@@ -23,11 +23,8 @@ DeRez::DeRez(audioMasterCallback audioMaster) :
incrementA = 0.0;
incrementB = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/DeRez/DeRez.h b/plugins/WinVST/DeRez/DeRez.h
index 89338e8..8ebdcd9 100755
--- a/plugins/WinVST/DeRez/DeRez.h
+++ b/plugins/WinVST/DeRez/DeRez.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/WinVST/DeRez/DeRezProc.cpp b/plugins/WinVST/DeRez/DeRezProc.cpp
index 247a364..cbe42d5 100755
--- a/plugins/WinVST/DeRez/DeRezProc.cpp
+++ b/plugins/WinVST/DeRez/DeRezProc.cpp
@@ -17,8 +17,6 @@ void DeRez::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double targetA = pow(A,3)+0.0005;
if (targetA > 1.0) targetA = 1.0;
@@ -132,26 +130,14 @@ void DeRez::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
lastSampleL = drySampleL;
lastSampleR = drySampleR;
- //noise shaping to 32-bit floating point
- float fpTemp;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -173,8 +159,6 @@ void DeRez::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double targetA = pow(A,3)+0.0005;
if (targetA > 1.0) targetA = 1.0;
@@ -288,26 +272,16 @@ void DeRez::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
lastSampleL = drySampleL;
lastSampleR = drySampleR;
- //noise shaping to 64-bit floating point
- double fpTemp;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Density/.vs/VSTProject/v14/.suo b/plugins/WinVST/Density/.vs/VSTProject/v14/.suo
index ac31fc9..2a612b7 100755
--- a/plugins/WinVST/Density/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Density/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Density/Density.cpp b/plugins/WinVST/Density/Density.cpp
index 1ecafde..bac4fb2 100755
--- a/plugins/WinVST/Density/Density.cpp
+++ b/plugins/WinVST/Density/Density.cpp
@@ -20,12 +20,9 @@ Density::Density(audioMasterCallback audioMaster) :
iirSampleBL = 0.0;
iirSampleAR = 0.0;
iirSampleBR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Density/Density.h b/plugins/WinVST/Density/Density.h
index 377d25d..b634c44 100755
--- a/plugins/WinVST/Density/Density.h
+++ b/plugins/WinVST/Density/Density.h
@@ -55,17 +55,14 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double iirSampleAL;
double iirSampleBL;
double iirSampleAR;
double iirSampleBR;
-
+ bool fpFlip;
float A;
float B;
float C;
diff --git a/plugins/WinVST/Density/DensityProc.cpp b/plugins/WinVST/Density/DensityProc.cpp
index 1e968c7..f229a9d 100755
--- a/plugins/WinVST/Density/DensityProc.cpp
+++ b/plugins/WinVST/Density/DensityProc.cpp
@@ -26,9 +26,6 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double out = fabs(density);
density = density * fabs(density);
double count;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -95,6 +92,7 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
inputSampleR -= iirSampleBR;
}
//highpass section
+ fpFlip = !fpFlip;
count = density;
while (count > 1.0)
@@ -150,25 +148,14 @@ void Density::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -199,9 +186,6 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double out = fabs(density);
density = density * fabs(density);
double count;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -268,6 +252,7 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR -= iirSampleBR;
}
//highpass section
+ fpFlip = !fpFlip;
count = density;
while (count > 1.0)
@@ -323,25 +308,16 @@ void Density::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Desk/.vs/VSTProject/v14/.suo b/plugins/WinVST/Desk/.vs/VSTProject/v14/.suo
index 9006873..8229c47 100755
--- a/plugins/WinVST/Desk/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Desk/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Desk/Desk.cpp b/plugins/WinVST/Desk/Desk.cpp
index 7a30943..9582f04 100755
--- a/plugins/WinVST/Desk/Desk.cpp
+++ b/plugins/WinVST/Desk/Desk.cpp
@@ -18,11 +18,8 @@ Desk::Desk(audioMasterCallback audioMaster) :
lastSampleR = 0.0;
lastOutSampleR = 0.0;
lastSlewR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Desk/Desk.h b/plugins/WinVST/Desk/Desk.h
index 8c5c398..f7f933d 100755
--- a/plugins/WinVST/Desk/Desk.h
+++ b/plugins/WinVST/Desk/Desk.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
long double lastSampleL;
diff --git a/plugins/WinVST/Desk/DeskProc.cpp b/plugins/WinVST/Desk/DeskProc.cpp
index a2bc92c..d53894b 100755
--- a/plugins/WinVST/Desk/DeskProc.cpp
+++ b/plugins/WinVST/Desk/DeskProc.cpp
@@ -29,9 +29,6 @@ void Desk::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
double bridgerectifier;
double combsample;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -151,25 +148,14 @@ void Desk::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
inputSampleR /= gain;
//end R
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -203,9 +189,6 @@ void Desk::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
double bridgerectifier;
double combsample;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -325,25 +308,16 @@ void Desk::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
inputSampleR /= gain;
//end R
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Desk4/.vs/VSTProject/v14/.suo b/plugins/WinVST/Desk4/.vs/VSTProject/v14/.suo
index a020b8d..9fc65de 100755
--- a/plugins/WinVST/Desk4/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Desk4/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Desk4/Desk4.cpp b/plugins/WinVST/Desk4/Desk4.cpp
index a8e20a7..0a05d87 100755
--- a/plugins/WinVST/Desk4/Desk4.cpp
+++ b/plugins/WinVST/Desk4/Desk4.cpp
@@ -30,11 +30,8 @@ Desk4::Desk4(audioMasterCallback audioMaster) :
lastSlewR = 0.0;
gcount = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Desk4/Desk4.h b/plugins/WinVST/Desk4/Desk4.h
index fa09cd0..802ee47 100755
--- a/plugins/WinVST/Desk4/Desk4.h
+++ b/plugins/WinVST/Desk4/Desk4.h
@@ -70,11 +70,8 @@ private:
double lastSlewR;
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Desk4/Desk4Proc.cpp b/plugins/WinVST/Desk4/Desk4Proc.cpp
index 515436c..fd165b6 100755
--- a/plugins/WinVST/Desk4/Desk4Proc.cpp
+++ b/plugins/WinVST/Desk4/Desk4Proc.cpp
@@ -17,9 +17,6 @@ void Desk4::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double gain = (pow(A,2)*10)+0.0001;
double gaintrim = (pow(A,2)*2)+1.0;
@@ -229,25 +226,14 @@ void Desk4::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -269,9 +255,6 @@ void Desk4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double gain = (pow(A,2)*10)+0.0001;
double gaintrim = (pow(A,2)*2)+1.0;
@@ -481,25 +464,16 @@ void Desk4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Distance/.vs/VSTProject/v14/.suo b/plugins/WinVST/Distance/.vs/VSTProject/v14/.suo
index 4359323..8d82790 100755
--- a/plugins/WinVST/Distance/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Distance/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Distance/Distance.cpp b/plugins/WinVST/Distance/Distance.cpp
index bae55c1..7ccd8fb 100755
--- a/plugins/WinVST/Distance/Distance.cpp
+++ b/plugins/WinVST/Distance/Distance.cpp
@@ -16,11 +16,8 @@ Distance::Distance(audioMasterCallback audioMaster) :
B = 1.0;
thirdresultL = prevresultL = lastclampL = clampL = changeL = lastL = 0.0;
thirdresultR = prevresultR = lastclampR = clampR = changeR = lastR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Distance/Distance.h b/plugins/WinVST/Distance/Distance.h
index 52ecc14..5566f84 100755
--- a/plugins/WinVST/Distance/Distance.h
+++ b/plugins/WinVST/Distance/Distance.h
@@ -67,11 +67,8 @@ private:
double prevresultR;
double lastR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Distance/DistanceProc.cpp b/plugins/WinVST/Distance/DistanceProc.cpp
index bdf3c13..32eb3fa 100755
--- a/plugins/WinVST/Distance/DistanceProc.cpp
+++ b/plugins/WinVST/Distance/DistanceProc.cpp
@@ -28,9 +28,6 @@ void Distance::processReplacing(float **inputs, float **outputs, VstInt32 sample
double dry = 1.0-wet;
double bridgerectifier;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double drySampleL;
@@ -126,25 +123,14 @@ void Distance::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (drySampleR * dry)+(inputSampleR*wet);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -177,9 +163,6 @@ void Distance::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double dry = 1.0-wet;
double bridgerectifier;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double drySampleL;
@@ -275,25 +258,16 @@ void Distance::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (drySampleR * dry)+(inputSampleR*wet);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Distance2/.vs/VSTProject/v14/.suo b/plugins/WinVST/Distance2/.vs/VSTProject/v14/.suo
index a329e77..aee132b 100755
--- a/plugins/WinVST/Distance2/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Distance2/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Distance2/Distance2Proc.cpp b/plugins/WinVST/Distance2/Distance2Proc.cpp
index ef5bf5b..473f3c8 100755
--- a/plugins/WinVST/Distance2/Distance2Proc.cpp
+++ b/plugins/WinVST/Distance2/Distance2Proc.cpp
@@ -266,18 +266,14 @@ void Distance2::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -287,12 +283,6 @@ void Distance2::processReplacing(float **inputs, float **outputs, VstInt32 sampl
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -554,18 +544,16 @@ void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -575,10 +563,4 @@ void Distance2::processDoubleReplacing(double **inputs, double **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/DitherFloat/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/DitherFloat/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/WinVST/DitherFloat/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/DitherFloat/.vs/VSTProject/v14/.suo b/plugins/WinVST/DitherFloat/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..7cd8028
--- /dev/null
+++ b/plugins/WinVST/DitherFloat/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/DitherFloat/DitherFloat.cpp b/plugins/WinVST/DitherFloat/DitherFloat.cpp
new file mode 100755
index 0000000..ffd9e94
--- /dev/null
+++ b/plugins/WinVST/DitherFloat/DitherFloat.cpp
@@ -0,0 +1,127 @@
+/* ========================================
+ * DitherFloat - DitherFloat.h
+ * Copyright (c) 2016 airwindows, All rights reserved
+ * ======================================== */
+
+#ifndef __DitherFloat_H
+#include "DitherFloat.h"
+#endif
+
+AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new DitherFloat(audioMaster);}
+
+DitherFloat::DitherFloat(audioMasterCallback audioMaster) :
+ AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
+{
+ A = 0.0;
+ B = 1.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+ _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
+ _canDo.insert("plugAsSend"); // plug-in can be used as a send effect.
+ _canDo.insert("x2in2out");
+ setNumInputs(kNumInputs);
+ setNumOutputs(kNumOutputs);
+ setUniqueID(kUniqueId);
+ canProcessReplacing(); // supports output replacing
+ canDoubleReplacing(); // supports double precision processing
+ programsAreChunks(true);
+ vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name
+}
+
+DitherFloat::~DitherFloat() {}
+VstInt32 DitherFloat::getVendorVersion () {return 1000;}
+void DitherFloat::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
+void DitherFloat::getProgramName(char *name) {vst_strncpy (name, _programName, kVstMaxProgNameLen);}
+//airwindows likes to ignore this stuff. Make your own programs, and make a different plugin rather than
+//trying to do versioning and preventing people from using older versions. Maybe they like the old one!
+
+static float pinParameter(float data)
+{
+ if (data < 0.0f) return 0.0f;
+ if (data > 1.0f) return 1.0f;
+ return data;
+}
+
+VstInt32 DitherFloat::getChunk (void** data, bool isPreset)
+{
+ float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
+ chunkData[0] = A;
+ chunkData[1] = B;
+ /* Note: The way this is set up, it will break if you manage to save settings on an Intel
+ machine and load them on a PPC Mac. However, it's fine if you stick to the machine you
+ started with. */
+
+ *data = chunkData;
+ return kNumParameters * sizeof(float);
+}
+
+VstInt32 DitherFloat::setChunk (void* data, VstInt32 byteSize, bool isPreset)
+{
+ float *chunkData = (float *)data;
+ A = pinParameter(chunkData[0]);
+ B = pinParameter(chunkData[1]);
+ /* We're ignoring byteSize as we found it to be a filthy liar */
+
+ /* calculate any other fields you need here - you could copy in
+ code from setParameter() here. */
+ return 0;
+}
+
+void DitherFloat::setParameter(VstInt32 index, float value) {
+ switch (index) {
+ case kParamA: A = value; break;
+ case kParamB: B = value; break;
+ default: throw; // unknown parameter, shouldn't happen!
+ }
+}
+
+float DitherFloat::getParameter(VstInt32 index) {
+ switch (index) {
+ case kParamA: return A; break;
+ case kParamB: return B; break;
+ default: break; // unknown parameter, shouldn't happen!
+ } return 0.0; //we only need to update the relevant name, this is simple to manage
+}
+
+void DitherFloat::getParameterName(VstInt32 index, char *text) {
+ switch (index) {
+ case kParamA: vst_strncpy (text, "Offset", kVstMaxParamStrLen); break;
+ case kParamB: vst_strncpy (text, "Dither", kVstMaxParamStrLen); break;
+ default: break; // unknown parameter, shouldn't happen!
+ } //this is our labels for displaying in the VST host
+}
+
+void DitherFloat::getParameterDisplay(VstInt32 index, char *text) {
+ switch (index) {
+ case kParamA: int2string ((VstInt32)(A * 32), text, kVstMaxParamStrLen); break;
+ case kParamB: float2string (B, text, kVstMaxParamStrLen); break;
+ default: break; // unknown parameter, shouldn't happen!
+ } //this displays the values and handles 'popups' where it's discrete choices
+}
+
+void DitherFloat::getParameterLabel(VstInt32 index, char *text) {
+ switch (index) {
+ case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
+ case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
+ default: break; // unknown parameter, shouldn't happen!
+ }
+}
+
+VstInt32 DitherFloat::canDo(char *text)
+{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
+
+bool DitherFloat::getEffectName(char* name) {
+ vst_strncpy(name, "DitherFloat", kVstMaxProductStrLen); return true;
+}
+
+VstPlugCategory DitherFloat::getPlugCategory() {return kPlugCategEffect;}
+
+bool DitherFloat::getProductString(char* text) {
+ vst_strncpy (text, "airwindows DitherFloat", kVstMaxProductStrLen); return true;
+}
+
+bool DitherFloat::getVendorString(char* text) {
+ vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
+}
diff --git a/plugins/WinVST/DitherFloat/DitherFloat.h b/plugins/WinVST/DitherFloat/DitherFloat.h
new file mode 100755
index 0000000..b8ddf51
--- /dev/null
+++ b/plugins/WinVST/DitherFloat/DitherFloat.h
@@ -0,0 +1,64 @@
+/* ========================================
+ * DitherFloat - DitherFloat.h
+ * Created 8/12/11 by SPIAdmin
+ * Copyright (c) 2011 __MyCompanyName__, All rights reserved
+ * ======================================== */
+
+#ifndef __DitherFloat_H
+#define __DitherFloat_H
+
+#ifndef __audioeffect__
+#include "audioeffectx.h"
+#endif
+
+#include <set>
+#include <string>
+#include <math.h>
+
+enum {
+ kParamA = 0,
+ kParamB = 1,
+ kNumParameters = 2
+}; //
+
+const int kNumPrograms = 0;
+const int kNumInputs = 2;
+const int kNumOutputs = 2;
+const unsigned long kUniqueId = 'dthf'; //Change this to what the AU identity is!
+
+class DitherFloat :
+ public AudioEffectX
+{
+public:
+ DitherFloat(audioMasterCallback audioMaster);
+ ~DitherFloat();
+ virtual bool getEffectName(char* name); // The plug-in name
+ virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in
+ virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg
+ virtual bool getVendorString(char* text); // Vendor info
+ virtual VstInt32 getVendorVersion(); // Version number
+ virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);
+ virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames);
+ virtual void getProgramName(char *name); // read the name from the host
+ virtual void setProgramName(char *name); // changes the name of the preset displayed in the host
+ virtual VstInt32 getChunk (void** data, bool isPreset);
+ virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset);
+ virtual float getParameter(VstInt32 index); // get the parameter value at the specified index
+ virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value
+ virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB)
+ virtual void getParameterName(VstInt32 index, char *text); // name of the parameter
+ virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value
+ virtual VstInt32 canDo(char *text);
+private:
+ char _programName[kVstMaxProgNameLen + 1];
+ std::set< std::string > _canDo;
+
+ long double fpNShapeL;
+ long double fpNShapeR;
+ //default stuff
+
+ float A;
+ float B;
+};
+
+#endif
diff --git a/plugins/WinVST/DitherFloat/DitherFloatProc.cpp b/plugins/WinVST/DitherFloat/DitherFloatProc.cpp
new file mode 100755
index 0000000..3c76a1a
--- /dev/null
+++ b/plugins/WinVST/DitherFloat/DitherFloatProc.cpp
@@ -0,0 +1,184 @@
+/* ========================================
+ * DitherFloat - DitherFloat.h
+ * Copyright (c) 2016 airwindows, All rights reserved
+ * ======================================== */
+
+#ifndef __DitherFloat_H
+#include "DitherFloat.h"
+#endif
+
+void DitherFloat::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
+{
+ float* in1 = inputs[0];
+ float* in2 = inputs[1];
+ float* out1 = outputs[0];
+ float* out2 = outputs[1];
+
+ double overallscale = 1.0;
+ overallscale /= 44100.0;
+ overallscale *= getSampleRate();
+
+ int floatOffset = (A * 32);
+ long double blend = B;
+
+ long double gain = 0;
+
+ switch (floatOffset)
+ {
+ case 0: gain = 1.0; break;
+ case 1: gain = 2.0; break;
+ case 2: gain = 4.0; break;
+ case 3: gain = 8.0; break;
+ case 4: gain = 16.0; break;
+ case 5: gain = 32.0; break;
+ case 6: gain = 64.0; break;
+ case 7: gain = 128.0; break;
+ case 8: gain = 256.0; break;
+ case 9: gain = 512.0; break;
+ case 10: gain = 1024.0; break;
+ case 11: gain = 2048.0; break;
+ case 12: gain = 4096.0; break;
+ case 13: gain = 8192.0; break;
+ case 14: gain = 16384.0; break;
+ case 15: gain = 32768.0; break;
+ case 16: gain = 65536.0; break;
+ case 17: gain = 131072.0; break;
+ case 18: gain = 262144.0; break;
+ case 19: gain = 524288.0; break;
+ case 20: gain = 1048576.0; break;
+ case 21: gain = 2097152.0; break;
+ case 22: gain = 4194304.0; break;
+ case 23: gain = 8388608.0; break;
+ case 24: gain = 16777216.0; break;
+ case 25: gain = 33554432.0; break;
+ case 26: gain = 67108864.0; break;
+ case 27: gain = 134217728.0; break;
+ case 28: gain = 268435456.0; break;
+ case 29: gain = 536870912.0; break;
+ case 30: gain = 1073741824.0; break;
+ case 31: gain = 2147483648.0; break;
+ case 32: gain = 4294967296.0; break;
+ }
+ //we are directly punching in the gain values rather than calculating them
+
+ while (--sampleFrames >= 0)
+ {
+ long double inputSampleL = *in1 + (gain-1);
+ long double inputSampleR = *in2 + (gain-1);
+
+
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo;
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo;
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+
+
+
+ inputSampleL = (float)inputSampleL; //equivalent of 'floor' for 32 bit floating point
+ inputSampleR = (float)inputSampleR; //equivalent of 'floor' for 32 bit floating point
+ //We do that separately, we're truncating to floating point WHILE heavily offset.
+
+ *out1 = inputSampleL - (gain-1);
+ *out2 = inputSampleR - (gain-1);
+
+ *in1++;
+ *in2++;
+ *out1++;
+ *out2++;
+ }
+}
+
+void DitherFloat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
+{
+ double* in1 = inputs[0];
+ double* in2 = inputs[1];
+ double* out1 = outputs[0];
+ double* out2 = outputs[1];
+
+ double overallscale = 1.0;
+ overallscale /= 44100.0;
+ overallscale *= getSampleRate();
+
+ int floatOffset = (A * 32);
+ long double blend = B;
+
+ long double gain = 0;
+
+ switch (floatOffset)
+ {
+ case 0: gain = 1.0; break;
+ case 1: gain = 2.0; break;
+ case 2: gain = 4.0; break;
+ case 3: gain = 8.0; break;
+ case 4: gain = 16.0; break;
+ case 5: gain = 32.0; break;
+ case 6: gain = 64.0; break;
+ case 7: gain = 128.0; break;
+ case 8: gain = 256.0; break;
+ case 9: gain = 512.0; break;
+ case 10: gain = 1024.0; break;
+ case 11: gain = 2048.0; break;
+ case 12: gain = 4096.0; break;
+ case 13: gain = 8192.0; break;
+ case 14: gain = 16384.0; break;
+ case 15: gain = 32768.0; break;
+ case 16: gain = 65536.0; break;
+ case 17: gain = 131072.0; break;
+ case 18: gain = 262144.0; break;
+ case 19: gain = 524288.0; break;
+ case 20: gain = 1048576.0; break;
+ case 21: gain = 2097152.0; break;
+ case 22: gain = 4194304.0; break;
+ case 23: gain = 8388608.0; break;
+ case 24: gain = 16777216.0; break;
+ case 25: gain = 33554432.0; break;
+ case 26: gain = 67108864.0; break;
+ case 27: gain = 134217728.0; break;
+ case 28: gain = 268435456.0; break;
+ case 29: gain = 536870912.0; break;
+ case 30: gain = 1073741824.0; break;
+ case 31: gain = 2147483648.0; break;
+ case 32: gain = 4294967296.0; break;
+ }
+ //we are directly punching in the gain values rather than calculating them
+
+ while (--sampleFrames >= 0)
+ {
+ long double inputSampleL = *in1 + (gain-1);
+ long double inputSampleR = *in2 + (gain-1);
+
+
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo;
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62) * blend; //remove 'blend' for real use, it's for the demo;
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+
+
+
+ inputSampleL = (float)inputSampleL; //equivalent of 'floor' for 32 bit floating point
+ inputSampleR = (float)inputSampleR; //equivalent of 'floor' for 32 bit floating point
+ //We do that separately, we're truncating to floating point WHILE heavily offset.
+
+ //note for 64 bit version: this is not for actually dithering 64 bit floats!
+ //This is specifically for demonstrating the sound of 32 bit floating point dither
+ //even over a 64 bit buss. Therefore it should be using float, above!
+
+ *out1 = inputSampleL - (gain-1);
+ *out2 = inputSampleR - (gain-1);
+
+ *in1++;
+ *in2++;
+ *out1++;
+ *out2++;
+ }
+}
diff --git a/plugins/WinVST/GrooveWear/VSTProject.sln b/plugins/WinVST/DitherFloat/VSTProject.sln
index 694b424..694b424 100644..100755
--- a/plugins/WinVST/GrooveWear/VSTProject.sln
+++ b/plugins/WinVST/DitherFloat/VSTProject.sln
diff --git a/plugins/WinVST/DitherFloat/VSTProject.vcxproj b/plugins/WinVST/DitherFloat/VSTProject.vcxproj
new file mode 100755
index 0000000..388624d
--- /dev/null
+++ b/plugins/WinVST/DitherFloat/VSTProject.vcxproj
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.cpp" />
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.cpp" />
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\vstplugmain.cpp" />
+ <ClCompile Include="DitherFloat.cpp" />
+ <ClCompile Include="DitherFloatProc.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\aeffeditor.h" />
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.h" />
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h" />
+ <ClInclude Include="DitherFloat.h" />
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}</ProjectGuid>
+ <RootNamespace>VSTProject</RootNamespace>
+ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ <ProjectName>DitherFloat64</ProjectName>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="Shared">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <TargetExt>.dll</TargetExt>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
+ <IntDir>$(Configuration)\</IntDir>
+ <ExecutablePath>$(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH)</ExecutablePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
+ <IntDir>$(Configuration)\</IntDir>
+ <ExecutablePath>$(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH)</ExecutablePath>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <IntrinsicFunctions>false</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ <Link>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <AdditionalDependencies>libcmt.lib;uuid.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <IntrinsicFunctions>false</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <AdditionalDependencies>libcmt.lib;uuid.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/WinVST/DitherFloat/VSTProject.vcxproj.filters b/plugins/WinVST/DitherFloat/VSTProject.vcxproj.filters
new file mode 100755
index 0000000..fb1260a
--- /dev/null
+++ b/plugins/WinVST/DitherFloat/VSTProject.vcxproj.filters
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\vstplugmain.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="DitherFloat.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="DitherFloatProc.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\aeffeditor.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="DitherFloat.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/WinVST/DitherFloat/VSTProject.vcxproj.user b/plugins/WinVST/DitherFloat/VSTProject.vcxproj.user
new file mode 100755
index 0000000..2216267
--- /dev/null
+++ b/plugins/WinVST/DitherFloat/VSTProject.vcxproj.user
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/WinVST/DitherFloat/vstplug.def b/plugins/WinVST/DitherFloat/vstplug.def
new file mode 100755
index 0000000..5bf499a
--- /dev/null
+++ b/plugins/WinVST/DitherFloat/vstplug.def
@@ -0,0 +1,3 @@
+EXPORTS
+ VSTPluginMain
+ main=VSTPluginMain \ No newline at end of file
diff --git a/plugins/WinVST/Drive/.vs/VSTProject/v14/.suo b/plugins/WinVST/Drive/.vs/VSTProject/v14/.suo
index da1c31d..7c0342c 100755
--- a/plugins/WinVST/Drive/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Drive/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Drive/Drive.cpp b/plugins/WinVST/Drive/Drive.cpp
index 35d0594..ac5f228 100755
--- a/plugins/WinVST/Drive/Drive.cpp
+++ b/plugins/WinVST/Drive/Drive.cpp
@@ -20,12 +20,9 @@ Drive::Drive(audioMasterCallback audioMaster) :
iirSampleBL = 0.0;
iirSampleAR = 0.0;
iirSampleBR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Drive/Drive.h b/plugins/WinVST/Drive/Drive.h
index c7039c5..525a09e 100755
--- a/plugins/WinVST/Drive/Drive.h
+++ b/plugins/WinVST/Drive/Drive.h
@@ -55,17 +55,14 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double iirSampleAL;
double iirSampleBL;
double iirSampleAR;
double iirSampleBR;
-
+ bool fpFlip;
float A;
float B;
float C;
diff --git a/plugins/WinVST/Drive/DriveProc.cpp b/plugins/WinVST/Drive/DriveProc.cpp
index 3670e85..074ccfd 100755
--- a/plugins/WinVST/Drive/DriveProc.cpp
+++ b/plugins/WinVST/Drive/DriveProc.cpp
@@ -26,9 +26,6 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double glitch = 0.60;
double out;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -95,6 +92,7 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR -= iirSampleBR;
}
//highpass section
+ fpFlip = !fpFlip;
if (inputSampleL > 1.0) inputSampleL = 1.0;
@@ -129,25 +127,14 @@ void Drive::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -178,9 +165,6 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double glitch = 0.60;
double out;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -247,6 +231,7 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR -= iirSampleBR;
}
//highpass section
+ fpFlip = !fpFlip;
if (inputSampleL > 1.0) inputSampleL = 1.0;
@@ -281,25 +266,16 @@ void Drive::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/DrumSlam/.vs/VSTProject/v14/.suo b/plugins/WinVST/DrumSlam/.vs/VSTProject/v14/.suo
index a2b66ba..b712621 100755
--- a/plugins/WinVST/DrumSlam/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/DrumSlam/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/DrumSlam/DrumSlam.cpp b/plugins/WinVST/DrumSlam/DrumSlam.cpp
index 8a6ae7b..5b88619 100755
--- a/plugins/WinVST/DrumSlam/DrumSlam.cpp
+++ b/plugins/WinVST/DrumSlam/DrumSlam.cpp
@@ -35,12 +35,9 @@ DrumSlam::DrumSlam(audioMasterCallback audioMaster) :
iirSampleGR = 0.0;
iirSampleHR = 0.0;
lastSampleR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/DrumSlam/DrumSlam.h b/plugins/WinVST/DrumSlam/DrumSlam.h
index 5ec2fda..418282d 100755
--- a/plugins/WinVST/DrumSlam/DrumSlam.h
+++ b/plugins/WinVST/DrumSlam/DrumSlam.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double iirSampleAL;
@@ -80,7 +77,7 @@ private:
double iirSampleGR;
double iirSampleHR;
double lastSampleR;
-
+ bool fpFlip;
float A;
float B;
float C;
diff --git a/plugins/WinVST/DrumSlam/DrumSlamProc.cpp b/plugins/WinVST/DrumSlam/DrumSlamProc.cpp
index 171b353..2e86142 100755
--- a/plugins/WinVST/DrumSlam/DrumSlamProc.cpp
+++ b/plugins/WinVST/DrumSlam/DrumSlamProc.cpp
@@ -25,8 +25,6 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample
double out = B;
double wet = C;
double dry = 1.0 - wet;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -125,6 +123,8 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample
highSampleL = inputSampleL - iirSampleHL;
highSampleR = inputSampleR - iirSampleHR;
}
+ fpFlip = !fpFlip;
+
//generate the tone bands we're using
if (lowSampleL > 1.0) {lowSampleL = 1.0;}
if (lowSampleL < -1.0) {lowSampleL = -1.0;}
@@ -219,26 +219,14 @@ void DrumSlam::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -268,8 +256,6 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double out = B;
double wet = C;
double dry = 1.0 - wet;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -368,6 +354,8 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3
highSampleL = inputSampleL - iirSampleHL;
highSampleR = inputSampleR - iirSampleHR;
}
+ fpFlip = !fpFlip;
+
//generate the tone bands we're using
if (lowSampleL > 1.0) {lowSampleL = 1.0;}
if (lowSampleL < -1.0) {lowSampleL = -1.0;}
@@ -462,26 +450,16 @@ void DrumSlam::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/DubCenter/.vs/VSTProject/v14/.suo b/plugins/WinVST/DubCenter/.vs/VSTProject/v14/.suo
index 2d55292..78d0cd5 100755
--- a/plugins/WinVST/DubCenter/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/DubCenter/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/DubCenter/DubCenterProc.cpp b/plugins/WinVST/DubCenter/DubCenterProc.cpp
index 75c162b..b0c49a3 100755
--- a/plugins/WinVST/DubCenter/DubCenterProc.cpp
+++ b/plugins/WinVST/DubCenter/DubCenterProc.cpp
@@ -306,18 +306,14 @@ void DubCenter::processReplacing(float **inputs, float **outputs, VstInt32 sampl
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -327,12 +323,6 @@ void DubCenter::processReplacing(float **inputs, float **outputs, VstInt32 sampl
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -633,18 +623,16 @@ void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -654,10 +642,4 @@ void DubCenter::processDoubleReplacing(double **inputs, double **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/DubSub/.vs/VSTProject/v14/.suo b/plugins/WinVST/DubSub/.vs/VSTProject/v14/.suo
index 0e2fce9..f7f4fd6 100755
--- a/plugins/WinVST/DubSub/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/DubSub/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/DubSub/DubSubProc.cpp b/plugins/WinVST/DubSub/DubSubProc.cpp
index 037480c..7a0349d 100755
--- a/plugins/WinVST/DubSub/DubSubProc.cpp
+++ b/plugins/WinVST/DubSub/DubSubProc.cpp
@@ -392,18 +392,14 @@ void DubSub::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -413,12 +409,6 @@ void DubSub::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -805,18 +795,16 @@ void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32
bflip++;
if (bflip < 1 || bflip > 3) bflip = 1;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -826,10 +814,4 @@ void DubSub::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/DustBunny/.vs/VSTProject/v14/.suo b/plugins/WinVST/DustBunny/.vs/VSTProject/v14/.suo
index 03ccec9..020c7ad 100755
--- a/plugins/WinVST/DustBunny/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/DustBunny/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/EQ/.vs/VSTProject/v14/.suo b/plugins/WinVST/EQ/.vs/VSTProject/v14/.suo
index faccb3d..fec6949 100755
--- a/plugins/WinVST/EQ/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/EQ/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/EQ/EQ.cpp b/plugins/WinVST/EQ/EQ.cpp
index ebdadaa..f2e4e01 100755
--- a/plugins/WinVST/EQ/EQ.cpp
+++ b/plugins/WinVST/EQ/EQ.cpp
@@ -111,11 +111,8 @@ EQ::EQ(audioMasterCallback audioMaster) :
flip = false;
flipthree = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/EQ/EQ.h b/plugins/WinVST/EQ/EQ.h
index 4317a2d..26fade4 100755
--- a/plugins/WinVST/EQ/EQ.h
+++ b/plugins/WinVST/EQ/EQ.h
@@ -59,11 +59,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/WinVST/EQ/EQProc.cpp b/plugins/WinVST/EQ/EQProc.cpp
index 6d994a9..917dc7e 100755
--- a/plugins/WinVST/EQ/EQProc.cpp
+++ b/plugins/WinVST/EQ/EQProc.cpp
@@ -20,9 +20,6 @@ void EQ::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames
overallscale = getSampleRate();
compscale = compscale * overallscale;
//compscale is the one that's 1 or something like 2.2 for 96K rates
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -434,25 +431,14 @@ void EQ::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames
inputSampleR *= outputgain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -477,9 +463,6 @@ void EQ::processDoubleReplacing(double **inputs, double **outputs, VstInt32 samp
overallscale = getSampleRate();
compscale = compscale * overallscale;
//compscale is the one that's 1 or something like 2.2 for 96K rates
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -891,25 +874,16 @@ void EQ::processDoubleReplacing(double **inputs, double **outputs, VstInt32 samp
inputSampleR *= outputgain;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/EdIsDim/.vs/VSTProject/v14/.suo b/plugins/WinVST/EdIsDim/.vs/VSTProject/v14/.suo
index d170019..bcd75a3 100755
--- a/plugins/WinVST/EdIsDim/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/EdIsDim/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/EdIsDim/EdIsDim.cpp b/plugins/WinVST/EdIsDim/EdIsDim.cpp
index 6af5dd4..eb6abd3 100755
--- a/plugins/WinVST/EdIsDim/EdIsDim.cpp
+++ b/plugins/WinVST/EdIsDim/EdIsDim.cpp
@@ -13,11 +13,8 @@ EdIsDim::EdIsDim(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/EdIsDim/EdIsDim.h b/plugins/WinVST/EdIsDim/EdIsDim.h
index 8c51883..4f62705 100755
--- a/plugins/WinVST/EdIsDim/EdIsDim.h
+++ b/plugins/WinVST/EdIsDim/EdIsDim.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/EdIsDim/EdIsDimProc.cpp b/plugins/WinVST/EdIsDim/EdIsDimProc.cpp
index 8ee927d..0d033eb 100755
--- a/plugins/WinVST/EdIsDim/EdIsDimProc.cpp
+++ b/plugins/WinVST/EdIsDim/EdIsDimProc.cpp
@@ -14,9 +14,6 @@ void EdIsDim::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -75,25 +72,14 @@ void EdIsDim::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
mid = (inputSampleL+inputSampleR)/2.0;
side = (inputSampleL-inputSampleR)/2.0;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = mid;
*out2 = side;
@@ -112,9 +98,6 @@ void EdIsDim::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -174,25 +157,16 @@ void EdIsDim::processDoubleReplacing(double **inputs, double **outputs, VstInt32
mid = (inputSampleL+inputSampleR)/2.0;
side = (inputSampleL-inputSampleR)/2.0;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = mid;
*out2 = side;
diff --git a/plugins/WinVST/ElectroHat/.vs/VSTProject/v14/.suo b/plugins/WinVST/ElectroHat/.vs/VSTProject/v14/.suo
index 8d8d5e2..8b7bf64 100755
--- a/plugins/WinVST/ElectroHat/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/ElectroHat/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/ElectroHat/ElectroHat.cpp b/plugins/WinVST/ElectroHat/ElectroHat.cpp
index 33d1058..6be41e4 100755
--- a/plugins/WinVST/ElectroHat/ElectroHat.cpp
+++ b/plugins/WinVST/ElectroHat/ElectroHat.cpp
@@ -25,11 +25,8 @@ ElectroHat::ElectroHat(audioMasterCallback audioMaster) :
lok = 0;
flip = true;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/ElectroHat/ElectroHat.h b/plugins/WinVST/ElectroHat/ElectroHat.h
index e8aa325..85315cd 100755
--- a/plugins/WinVST/ElectroHat/ElectroHat.h
+++ b/plugins/WinVST/ElectroHat/ElectroHat.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double storedSampleL;
diff --git a/plugins/WinVST/ElectroHat/ElectroHatProc.cpp b/plugins/WinVST/ElectroHat/ElectroHatProc.cpp
index 69b1a00..ee5a307 100755
--- a/plugins/WinVST/ElectroHat/ElectroHatProc.cpp
+++ b/plugins/WinVST/ElectroHat/ElectroHatProc.cpp
@@ -20,9 +20,6 @@ void ElectroHat::processReplacing(float **inputs, float **outputs, VstInt32 samp
bool highSample = false;
if (getSampleRate() > 64000) highSample = true;
//we will go to another dither for 88 and 96K
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -126,25 +123,14 @@ void ElectroHat::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -169,9 +155,6 @@ void ElectroHat::processDoubleReplacing(double **inputs, double **outputs, VstIn
bool highSample = false;
if (getSampleRate() > 64000) highSample = true;
//we will go to another dither for 88 and 96K
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -275,25 +258,16 @@ void ElectroHat::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Energy/.vs/VSTProject/v14/.suo b/plugins/WinVST/Energy/.vs/VSTProject/v14/.suo
index e7b1929..3b56035 100755
--- a/plugins/WinVST/Energy/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Energy/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Energy/EnergyProc.cpp b/plugins/WinVST/Energy/EnergyProc.cpp
index a72b868..a0a86f8 100755
--- a/plugins/WinVST/Energy/EnergyProc.cpp
+++ b/plugins/WinVST/Energy/EnergyProc.cpp
@@ -742,18 +742,14 @@ void Energy::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
//we don't need a drySample because we never touched inputSample
//so, this provides the inv/dry/wet control all by itself
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -763,12 +759,6 @@ void Energy::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -1506,18 +1496,16 @@ void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//we don't need a drySample because we never touched inputSample
//so, this provides the inv/dry/wet control all by itself
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -1527,10 +1515,4 @@ void Energy::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/Ensemble/.vs/VSTProject/v14/.suo b/plugins/WinVST/Ensemble/.vs/VSTProject/v14/.suo
index 6022e68..5f6df86 100755
--- a/plugins/WinVST/Ensemble/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Ensemble/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Ensemble/Ensemble.cpp b/plugins/WinVST/Ensemble/Ensemble.cpp
index be624b2..b90bf6e 100755
--- a/plugins/WinVST/Ensemble/Ensemble.cpp
+++ b/plugins/WinVST/Ensemble/Ensemble.cpp
@@ -28,12 +28,9 @@ Ensemble::Ensemble(audioMasterCallback audioMaster) :
airEvenR = 0.0;
airOddR = 0.0;
airFactorR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Ensemble/Ensemble.h b/plugins/WinVST/Ensemble/Ensemble.h
index 32ba8c0..7697d93 100755
--- a/plugins/WinVST/Ensemble/Ensemble.h
+++ b/plugins/WinVST/Ensemble/Ensemble.h
@@ -55,11 +55,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
const static int totalsamples = 65540;
float dL[totalsamples];
@@ -74,7 +71,7 @@ private:
double airEvenR;
double airOddR;
double airFactorR;
-
+ bool fpFlip;
float A;
float B;
float C;
diff --git a/plugins/WinVST/Ensemble/EnsembleProc.cpp b/plugins/WinVST/Ensemble/EnsembleProc.cpp
index 679e868..e9a3a43 100755
--- a/plugins/WinVST/Ensemble/EnsembleProc.cpp
+++ b/plugins/WinVST/Ensemble/EnsembleProc.cpp
@@ -37,9 +37,6 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample
double tempL;
double tempR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -117,7 +114,8 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample
airPrevR = inputSampleR;
inputSampleR += (airFactorR*brighten);
//air, compensates for loss of highs in flanger's interpolation
-
+ fpFlip = !fpFlip;
+
if (gcount < 1 || gcount > 32767) {gcount = 32767;}
count = gcount;
dL[count+32767] = dL[count] = tempL = inputSampleL;
@@ -155,25 +153,14 @@ void Ensemble::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -215,9 +202,6 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double tempL;
double tempR;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -295,6 +279,7 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3
airPrevR = inputSampleR;
inputSampleR += (airFactorR*brighten);
//air, compensates for loss of highs in flanger's interpolation
+ fpFlip = !fpFlip;
if (gcount < 1 || gcount > 32767) {gcount = 32767;}
count = gcount;
@@ -333,25 +318,16 @@ void Ensemble::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/EveryTrim/.vs/VSTProject/v14/.suo b/plugins/WinVST/EveryTrim/.vs/VSTProject/v14/.suo
index 649aa5c..29d586f 100755
--- a/plugins/WinVST/EveryTrim/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/EveryTrim/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/EveryTrim/EveryTrim.cpp b/plugins/WinVST/EveryTrim/EveryTrim.cpp
index 1e81d35..b0a98d4 100755
--- a/plugins/WinVST/EveryTrim/EveryTrim.cpp
+++ b/plugins/WinVST/EveryTrim/EveryTrim.cpp
@@ -17,11 +17,8 @@ EveryTrim::EveryTrim(audioMasterCallback audioMaster) :
C = 0.5;
D = 0.5;
E = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/EveryTrim/EveryTrim.h b/plugins/WinVST/EveryTrim/EveryTrim.h
index 28d9c27..4efc3cd 100755
--- a/plugins/WinVST/EveryTrim/EveryTrim.h
+++ b/plugins/WinVST/EveryTrim/EveryTrim.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/EveryTrim/EveryTrimProc.cpp b/plugins/WinVST/EveryTrim/EveryTrimProc.cpp
index 30d764f..3c30eda 100755
--- a/plugins/WinVST/EveryTrim/EveryTrimProc.cpp
+++ b/plugins/WinVST/EveryTrim/EveryTrimProc.cpp
@@ -14,9 +14,6 @@ void EveryTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double leftgain = pow(10.0,((A*24.0)-12.0)/20.0);
double rightgain = pow(10.0,((B*24.0)-12.0)/20.0);
@@ -83,25 +80,14 @@ void EveryTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -120,9 +106,6 @@ void EveryTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double leftgain = pow(10.0,((A*24.0)-12.0)/20.0);
double rightgain = pow(10.0,((B*24.0)-12.0)/20.0);
@@ -189,25 +172,16 @@ void EveryTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/FathomFive/.vs/VSTProject/v14/.suo b/plugins/WinVST/FathomFive/.vs/VSTProject/v14/.suo
index 42015e9..9a9ba63 100755
--- a/plugins/WinVST/FathomFive/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/FathomFive/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/FathomFive/FathomFive.cpp b/plugins/WinVST/FathomFive/FathomFive.cpp
index 8cd3f52..fd04b6d 100755
--- a/plugins/WinVST/FathomFive/FathomFive.cpp
+++ b/plugins/WinVST/FathomFive/FathomFive.cpp
@@ -100,16 +100,6 @@ void FathomFive::setParameter(VstInt32 index, float value) {
//variables can also be set in the processreplacing loop, and there they'll be set every buffersize
//here they're set when a parameter's actually changed, which should be less frequent, but
//you must use global variables in the FathomFive.h file to do it.
-// switch((VstInt32)( D * 3.999 ))
-// {
-// case 0: fpFlip = true; break; //choice A
-// case 1: fpFlip = false; break; //choice B
-// case 2: break; //choice C
-// case 3: break; //choice D
-// default: break; //should not happen
-// }
- //this relates to using D as a 'popup' and changing things based on that switch.
- //we are using fpFlip just because it's already there globally, as an example.
}
float FathomFive::getParameter(VstInt32 index) {
diff --git a/plugins/WinVST/Floor/.vs/VSTProject/v14/.suo b/plugins/WinVST/Floor/.vs/VSTProject/v14/.suo
index 9ba9265..65d9c96 100755
--- a/plugins/WinVST/Floor/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Floor/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Floor/FloorProc.cpp b/plugins/WinVST/Floor/FloorProc.cpp
index 69a2ccb..865446b 100755
--- a/plugins/WinVST/Floor/FloorProc.cpp
+++ b/plugins/WinVST/Floor/FloorProc.cpp
@@ -247,18 +247,14 @@ void Floor::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -268,12 +264,6 @@ void Floor::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -516,18 +506,16 @@ void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -537,10 +525,4 @@ void Floor::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/Fracture/.vs/VSTProject/v14/.suo b/plugins/WinVST/Fracture/.vs/VSTProject/v14/.suo
index f5e4242..95ce6ca 100755
--- a/plugins/WinVST/Fracture/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Fracture/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Fracture/Fracture.cpp b/plugins/WinVST/Fracture/Fracture.cpp
index 255475a..03f3b19 100755
--- a/plugins/WinVST/Fracture/Fracture.cpp
+++ b/plugins/WinVST/Fracture/Fracture.cpp
@@ -16,11 +16,8 @@ Fracture::Fracture(audioMasterCallback audioMaster) :
B = 0.5; //2 from 1 to 3: (B*2.999)+1
C = 1.0;
D = 1.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Fracture/Fracture.h b/plugins/WinVST/Fracture/Fracture.h
index 659f94b..49d2718 100755
--- a/plugins/WinVST/Fracture/Fracture.h
+++ b/plugins/WinVST/Fracture/Fracture.h
@@ -55,11 +55,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Fracture/FractureProc.cpp b/plugins/WinVST/Fracture/FractureProc.cpp
index 8e217d8..5c1aaa9 100755
--- a/plugins/WinVST/Fracture/FractureProc.cpp
+++ b/plugins/WinVST/Fracture/FractureProc.cpp
@@ -14,9 +14,6 @@ void Fracture::processReplacing(float **inputs, float **outputs, VstInt32 sample
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double density = A*4;
double fracture = (((B*2.999)+1)*3.14159265358979);
@@ -101,25 +98,14 @@ void Fracture::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (drySampleL * dry)+(inputSampleL * wet);
inputSampleR = (drySampleR * dry)+(inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -141,9 +127,6 @@ void Fracture::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double density = A*4;
double fracture = (((B*2.999)+1)*3.14159265358979);
@@ -228,25 +211,16 @@ void Fracture::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (drySampleL * dry)+(inputSampleL * wet);
inputSampleR = (drySampleR * dry)+(inputSampleR * wet);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/FromTape/.vs/VSTProject/v14/.suo b/plugins/WinVST/FromTape/.vs/VSTProject/v14/.suo
index f635737..cdcd603 100755
--- a/plugins/WinVST/FromTape/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/FromTape/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/FromTape/FromTape.cpp b/plugins/WinVST/FromTape/FromTape.cpp
index 55c5ced..40b7876 100755
--- a/plugins/WinVST/FromTape/FromTape.cpp
+++ b/plugins/WinVST/FromTape/FromTape.cpp
@@ -82,11 +82,8 @@ FromTape::FromTape(audioMasterCallback audioMaster) :
flip = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/FromTape/FromTape.h b/plugins/WinVST/FromTape/FromTape.h
index 376b767..40efabc 100755
--- a/plugins/WinVST/FromTape/FromTape.h
+++ b/plugins/WinVST/FromTape/FromTape.h
@@ -120,11 +120,8 @@ private:
double iirSampleYR;
double iirSampleZR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/FromTape/FromTapeProc.cpp b/plugins/WinVST/FromTape/FromTapeProc.cpp
index 42753e5..2d268ef 100755
--- a/plugins/WinVST/FromTape/FromTapeProc.cpp
+++ b/plugins/WinVST/FromTape/FromTapeProc.cpp
@@ -37,9 +37,6 @@ void FromTape::processReplacing(float **inputs, float **outputs, VstInt32 sample
double drySampleR;
double randy;
double invrandy;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -224,25 +221,14 @@ void FromTape::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -284,9 +270,6 @@ void FromTape::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double drySampleR;
double randy;
double invrandy;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -471,25 +454,16 @@ void FromTape::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Gatelope/.vs/VSTProject/v14/.suo b/plugins/WinVST/Gatelope/.vs/VSTProject/v14/.suo
index e445e51..3cb4e6c 100755
--- a/plugins/WinVST/Gatelope/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Gatelope/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Gatelope/GatelopeProc.cpp b/plugins/WinVST/Gatelope/GatelopeProc.cpp
index b32bddb..f429042 100755
--- a/plugins/WinVST/Gatelope/GatelopeProc.cpp
+++ b/plugins/WinVST/Gatelope/GatelopeProc.cpp
@@ -196,18 +196,14 @@ void Gatelope::processReplacing(float **inputs, float **outputs, VstInt32 sample
flip = !flip;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -217,12 +213,6 @@ void Gatelope::processReplacing(float **inputs, float **outputs, VstInt32 sample
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -414,18 +404,16 @@ void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt3
flip = !flip;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -435,10 +423,4 @@ void Gatelope::processDoubleReplacing(double **inputs, double **outputs, VstInt3
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/Golem/.vs/VSTProject/v14/.suo b/plugins/WinVST/Golem/.vs/VSTProject/v14/.suo
index d595650..9e8f1c5 100755
--- a/plugins/WinVST/Golem/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Golem/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Golem/Golem.cpp b/plugins/WinVST/Golem/Golem.cpp
index 8f63b48..c99c5cd 100755
--- a/plugins/WinVST/Golem/Golem.cpp
+++ b/plugins/WinVST/Golem/Golem.cpp
@@ -17,10 +17,8 @@ Golem::Golem(audioMasterCallback audioMaster) :
C = 0.0;
for(count = 0; count < 4098; count++) {p[count] = 0.0;}
count = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
flip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/WinVST/Golem/Golem.h b/plugins/WinVST/Golem/Golem.h
index 8bb81d8..e02ab78 100755
--- a/plugins/WinVST/Golem/Golem.h
+++ b/plugins/WinVST/Golem/Golem.h
@@ -54,10 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
//default stuff
double p[4099];
diff --git a/plugins/WinVST/Golem/GolemProc.cpp b/plugins/WinVST/Golem/GolemProc.cpp
index 9235869..1d7e9f5 100755
--- a/plugins/WinVST/Golem/GolemProc.cpp
+++ b/plugins/WinVST/Golem/GolemProc.cpp
@@ -14,9 +14,6 @@ void Golem::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int phase = (int)((C * 5.999)+1);
double balance = ((A*2.0)-1.0) / 2.0;
double gainL = 0.5 - balance;
@@ -115,25 +112,14 @@ void Golem::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR = inputSampleL;
//the output is totally mono
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -152,9 +138,6 @@ void Golem::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int phase = (int)((C * 5.999)+1);
double balance = ((A*2.0)-1.0) / 2.0;
double gainL = 0.5 - balance;
@@ -253,25 +236,16 @@ void Golem::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR = inputSampleL;
//the output is totally mono
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/GrooveWear/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/GrooveWear/.vs/Console4Channel64/v14/.suo
index 777b846..777b846 100644..100755
--- a/plugins/WinVST/GrooveWear/.vs/Console4Channel64/v14/.suo
+++ b/plugins/WinVST/GrooveWear/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo b/plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo
index 76a8251..526a0d5 100644..100755
--- a/plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/GrooveWear/GrooveWear.cpp b/plugins/WinVST/GrooveWear/GrooveWear.cpp
index e553daa..cbe1fc5 100644..100755
--- a/plugins/WinVST/GrooveWear/GrooveWear.cpp
+++ b/plugins/WinVST/GrooveWear/GrooveWear.cpp
@@ -36,11 +36,8 @@ GrooveWear::GrooveWear(audioMasterCallback audioMaster) :
cMidPrevR = 0.0;
dMidPrevR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/GrooveWear/GrooveWear.h b/plugins/WinVST/GrooveWear/GrooveWear.h
index 7b933c2..4bf9745 100644..100755
--- a/plugins/WinVST/GrooveWear/GrooveWear.h
+++ b/plugins/WinVST/GrooveWear/GrooveWear.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double aMidL[21];
diff --git a/plugins/WinVST/GrooveWear/GrooveWearProc.cpp b/plugins/WinVST/GrooveWear/GrooveWearProc.cpp
index a22f6df..e663203 100644..100755
--- a/plugins/WinVST/GrooveWear/GrooveWearProc.cpp
+++ b/plugins/WinVST/GrooveWear/GrooveWearProc.cpp
@@ -14,9 +14,6 @@ void GrooveWear::processReplacing(float **inputs, float **outputs, VstInt32 samp
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = (pow(A,2)*19.0)+1.0;
double gain = overallscale;
@@ -433,25 +430,14 @@ void GrooveWear::processReplacing(float **inputs, float **outputs, VstInt32 samp
drySampleR = inputSampleR;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -470,9 +456,6 @@ void GrooveWear::processDoubleReplacing(double **inputs, double **outputs, VstIn
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = (pow(A,2)*19.0)+1.0;
double gain = overallscale;
@@ -889,25 +872,16 @@ void GrooveWear::processDoubleReplacing(double **inputs, double **outputs, VstIn
drySampleR = inputSampleR;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/GrooveWear/VSTProject.VC.db b/plugins/WinVST/GrooveWear/VSTProject.VC.db
new file mode 100755
index 0000000..677f802
--- /dev/null
+++ b/plugins/WinVST/GrooveWear/VSTProject.VC.db
Binary files differ
diff --git a/plugins/WinVST/GrooveWear/VSTProject.vcxproj b/plugins/WinVST/GrooveWear/VSTProject.vcxproj
index 88eb5f5..88eb5f5 100644..100755
--- a/plugins/WinVST/GrooveWear/VSTProject.vcxproj
+++ b/plugins/WinVST/GrooveWear/VSTProject.vcxproj
diff --git a/plugins/WinVST/GrooveWear/VSTProject.vcxproj.filters b/plugins/WinVST/GrooveWear/VSTProject.vcxproj.filters
index 7946bd2..7946bd2 100644..100755
--- a/plugins/WinVST/GrooveWear/VSTProject.vcxproj.filters
+++ b/plugins/WinVST/GrooveWear/VSTProject.vcxproj.filters
diff --git a/plugins/WinVST/GrooveWear/VSTProject.vcxproj.user b/plugins/WinVST/GrooveWear/VSTProject.vcxproj.user
index 2216267..2216267 100644..100755
--- a/plugins/WinVST/GrooveWear/VSTProject.vcxproj.user
+++ b/plugins/WinVST/GrooveWear/VSTProject.vcxproj.user
diff --git a/plugins/WinVST/GrooveWear/vstplug.def b/plugins/WinVST/GrooveWear/vstplug.def
index 5bf499a..5bf499a 100644..100755
--- a/plugins/WinVST/GrooveWear/vstplug.def
+++ b/plugins/WinVST/GrooveWear/vstplug.def
diff --git a/plugins/WinVST/GuitarConditioner/.vs/VSTProject/v14/.suo b/plugins/WinVST/GuitarConditioner/.vs/VSTProject/v14/.suo
index 9e37109..82c0a67 100755
--- a/plugins/WinVST/GuitarConditioner/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/GuitarConditioner/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/GuitarConditioner/GuitarConditioner.cpp b/plugins/WinVST/GuitarConditioner/GuitarConditioner.cpp
index 8f3ccfc..b0388ab 100755
--- a/plugins/WinVST/GuitarConditioner/GuitarConditioner.cpp
+++ b/plugins/WinVST/GuitarConditioner/GuitarConditioner.cpp
@@ -12,12 +12,9 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new G
GuitarConditioner::GuitarConditioner(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
-
lastSampleTL = 0.0;
lastSampleBL = 0.0; //for Slews. T for treble, B for bass
iirSampleTAL = 0.0;
diff --git a/plugins/WinVST/GuitarConditioner/GuitarConditioner.h b/plugins/WinVST/GuitarConditioner/GuitarConditioner.h
index 7bd73ab..3be09e1 100755
--- a/plugins/WinVST/GuitarConditioner/GuitarConditioner.h
+++ b/plugins/WinVST/GuitarConditioner/GuitarConditioner.h
@@ -49,13 +49,10 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
-
+ bool fpFlip;
double lastSampleTL;
double lastSampleBL; //for Slews
double iirSampleTAL;
diff --git a/plugins/WinVST/GuitarConditioner/GuitarConditionerProc.cpp b/plugins/WinVST/GuitarConditioner/GuitarConditionerProc.cpp
index 83970f2..b25d600 100755
--- a/plugins/WinVST/GuitarConditioner/GuitarConditionerProc.cpp
+++ b/plugins/WinVST/GuitarConditioner/GuitarConditionerProc.cpp
@@ -17,9 +17,6 @@ void GuitarConditioner::processReplacing(float **inputs, float **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -164,26 +161,18 @@ void GuitarConditioner::processReplacing(float **inputs, float **outputs, VstInt
lastSampleBR = bassR; //bassR slew
inputSampleL = trebleL + bassL; //final merge
- inputSampleR = trebleR + bassR; //final merge
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
+ inputSampleR = trebleR + bassR; //final merge
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -205,9 +194,6 @@ void GuitarConditioner::processDoubleReplacing(double **inputs, double **outputs
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -353,26 +339,19 @@ void GuitarConditioner::processDoubleReplacing(double **inputs, double **outputs
lastSampleBR = bassR; //bassR slew
inputSampleL = trebleL + bassL; //final merge
- inputSampleR = trebleR + bassR; //final merge
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
+ inputSampleR = trebleR + bassR; //final merge
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/HardVacuum/.vs/VSTProject/v14/.suo b/plugins/WinVST/HardVacuum/.vs/VSTProject/v14/.suo
index c83c797..33c256b 100755
--- a/plugins/WinVST/HardVacuum/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/HardVacuum/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/HardVacuum/HardVacuum.cpp b/plugins/WinVST/HardVacuum/HardVacuum.cpp
index 2ad1a4a..9c14f89 100755
--- a/plugins/WinVST/HardVacuum/HardVacuum.cpp
+++ b/plugins/WinVST/HardVacuum/HardVacuum.cpp
@@ -19,11 +19,8 @@ HardVacuum::HardVacuum(audioMasterCallback audioMaster) :
E = 1.0;
lastSampleL = 0.0;
lastSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/HardVacuum/HardVacuum.h b/plugins/WinVST/HardVacuum/HardVacuum.h
index 6321df6..7f4c098 100755
--- a/plugins/WinVST/HardVacuum/HardVacuum.h
+++ b/plugins/WinVST/HardVacuum/HardVacuum.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/WinVST/HardVacuum/HardVacuumProc.cpp b/plugins/WinVST/HardVacuum/HardVacuumProc.cpp
index f8fe4fd..e0e07e2 100755
--- a/plugins/WinVST/HardVacuum/HardVacuumProc.cpp
+++ b/plugins/WinVST/HardVacuum/HardVacuumProc.cpp
@@ -33,9 +33,6 @@ void HardVacuum::processReplacing(float **inputs, float **outputs, VstInt32 samp
double skewL;
double skewR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -176,25 +173,14 @@ void HardVacuum::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -232,9 +218,6 @@ void HardVacuum::processDoubleReplacing(double **inputs, double **outputs, VstIn
double skewL;
double skewR;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -376,25 +359,16 @@ void HardVacuum::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/HermeTrim/.vs/VSTProject/v14/.suo b/plugins/WinVST/HermeTrim/.vs/VSTProject/v14/.suo
index d06b803..7bf1a45 100755
--- a/plugins/WinVST/HermeTrim/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/HermeTrim/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/HermeTrim/HermeTrim.cpp b/plugins/WinVST/HermeTrim/HermeTrim.cpp
index 562df2c..117cc45 100755
--- a/plugins/WinVST/HermeTrim/HermeTrim.cpp
+++ b/plugins/WinVST/HermeTrim/HermeTrim.cpp
@@ -17,11 +17,8 @@ HermeTrim::HermeTrim(audioMasterCallback audioMaster) :
C = 0.5;
D = 0.5;
E = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/HermeTrim/HermeTrim.h b/plugins/WinVST/HermeTrim/HermeTrim.h
index b8503ca..f0bc8ed 100755
--- a/plugins/WinVST/HermeTrim/HermeTrim.h
+++ b/plugins/WinVST/HermeTrim/HermeTrim.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/HermeTrim/HermeTrimProc.cpp b/plugins/WinVST/HermeTrim/HermeTrimProc.cpp
index d920843..66d3144 100755
--- a/plugins/WinVST/HermeTrim/HermeTrimProc.cpp
+++ b/plugins/WinVST/HermeTrim/HermeTrimProc.cpp
@@ -14,9 +14,6 @@ void HermeTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double leftgain = pow(10.0,((A*3.0)-1.5)/20.0);
double rightgain = pow(10.0,((B*3.0)-1.5)/20.0);
@@ -83,25 +80,14 @@ void HermeTrim::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -120,9 +106,6 @@ void HermeTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double leftgain = pow(10.0,((A*3.0)-1.5)/20.0);
double rightgain = pow(10.0,((B*3.0)-1.5)/20.0);
@@ -189,25 +172,16 @@ void HermeTrim::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR = (mid-side) * rightgain;
//contains mastergain and the gain trim fixing the mid/side
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Hermepass/.vs/VSTProject/v14/.suo b/plugins/WinVST/Hermepass/.vs/VSTProject/v14/.suo
index 2a195c6..3564c29 100755
--- a/plugins/WinVST/Hermepass/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Hermepass/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Hermepass/Hermepass.cpp b/plugins/WinVST/Hermepass/Hermepass.cpp
index 3bfb1aa..4e4a532 100755
--- a/plugins/WinVST/Hermepass/Hermepass.cpp
+++ b/plugins/WinVST/Hermepass/Hermepass.cpp
@@ -32,12 +32,9 @@ Hermepass::Hermepass(audioMasterCallback audioMaster) :
iirFR = 0.0;
iirGR = 0.0;
iirHR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Hermepass/Hermepass.h b/plugins/WinVST/Hermepass/Hermepass.h
index 4f29497..1000bb9 100755
--- a/plugins/WinVST/Hermepass/Hermepass.h
+++ b/plugins/WinVST/Hermepass/Hermepass.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double iirAL;
double iirBL; //first stage is the flipping one, for lowest slope. It is always engaged, and is the highest one
@@ -76,7 +73,7 @@ private:
double iirFR; //our slope control will have a pow() on it so that the high orders are way to the right side
double iirGR;
double iirHR; //seven poles max, and the final pole is always at 20hz directly.
-
+ bool fpFlip;
float A;
diff --git a/plugins/WinVST/Hermepass/HermepassProc.cpp b/plugins/WinVST/Hermepass/HermepassProc.cpp
index 01b35aa..fddffe3 100755
--- a/plugins/WinVST/Hermepass/HermepassProc.cpp
+++ b/plugins/WinVST/Hermepass/HermepassProc.cpp
@@ -17,10 +17,8 @@ void Hermepass::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
-
+ long double fpNew = 1.0 - fpOld;
double rangescale = 0.1 / overallscale;
double cutoff = pow(A,3);
@@ -175,26 +173,17 @@ void Hermepass::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR -= correction;
//end R channel
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -216,10 +205,8 @@ void Hermepass::processDoubleReplacing(double **inputs, double **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
long double fpOld = 0.618033988749894848204586; //golden ratio!
long double fpNew = 1.0 - fpOld;
-
double rangescale = 0.1 / overallscale;
double cutoff = pow(A,3);
@@ -374,26 +361,19 @@ void Hermepass::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR -= correction;
//end R channel
-
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/HighImpact/.vs/VSTProject/v14/.suo b/plugins/WinVST/HighImpact/.vs/VSTProject/v14/.suo
index 56b69ec..fadcdca 100755
--- a/plugins/WinVST/HighImpact/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/HighImpact/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/HighImpact/HighImpact.cpp b/plugins/WinVST/HighImpact/HighImpact.cpp
index 0944b18..960d80c 100755
--- a/plugins/WinVST/HighImpact/HighImpact.cpp
+++ b/plugins/WinVST/HighImpact/HighImpact.cpp
@@ -17,11 +17,8 @@ HighImpact::HighImpact(audioMasterCallback audioMaster) :
C = 0.0;
lastSampleL = 0.0;
lastSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/HighImpact/HighImpact.h b/plugins/WinVST/HighImpact/HighImpact.h
index 9c7a4a0..a57230b 100755
--- a/plugins/WinVST/HighImpact/HighImpact.h
+++ b/plugins/WinVST/HighImpact/HighImpact.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/WinVST/HighImpact/HighImpactProc.cpp b/plugins/WinVST/HighImpact/HighImpactProc.cpp
index 037bbe9..f24804a 100755
--- a/plugins/WinVST/HighImpact/HighImpactProc.cpp
+++ b/plugins/WinVST/HighImpact/HighImpactProc.cpp
@@ -14,9 +14,6 @@ void HighImpact::processReplacing(float **inputs, float **outputs, VstInt32 samp
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -161,25 +158,14 @@ void HighImpact::processReplacing(float **inputs, float **outputs, VstInt32 samp
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -201,9 +187,6 @@ void HighImpact::processDoubleReplacing(double **inputs, double **outputs, VstIn
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -348,25 +331,16 @@ void HighImpact::processDoubleReplacing(double **inputs, double **outputs, VstIn
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Highpass/.vs/VSTProject/v14/.suo b/plugins/WinVST/Highpass/.vs/VSTProject/v14/.suo
index 9f7300c..3a225dd 100755
--- a/plugins/WinVST/Highpass/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Highpass/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Highpass/Highpass.cpp b/plugins/WinVST/Highpass/Highpass.cpp
index ed43f9d..86ebe24 100755
--- a/plugins/WinVST/Highpass/Highpass.cpp
+++ b/plugins/WinVST/Highpass/Highpass.cpp
@@ -19,10 +19,8 @@ Highpass::Highpass(audioMasterCallback audioMaster) :
iirSampleBL = 0.0;
iirSampleAR = 0.0;
iirSampleBR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/WinVST/Highpass/Highpass.h b/plugins/WinVST/Highpass/Highpass.h
index 03d8609..673f951 100755
--- a/plugins/WinVST/Highpass/Highpass.h
+++ b/plugins/WinVST/Highpass/Highpass.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
@@ -68,7 +65,7 @@ private:
double iirSampleBL;
double iirSampleAR;
double iirSampleBR;
-
+ bool fpFlip;
};
#endif
diff --git a/plugins/WinVST/Highpass/HighpassProc.cpp b/plugins/WinVST/Highpass/HighpassProc.cpp
index b1e7de9..371ed57 100755
--- a/plugins/WinVST/Highpass/HighpassProc.cpp
+++ b/plugins/WinVST/Highpass/HighpassProc.cpp
@@ -26,9 +26,6 @@ void Highpass::processReplacing(float **inputs, float **outputs, VstInt32 sample
double inputSampleR;
double outputSampleL;
double outputSampleR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -114,33 +111,21 @@ void Highpass::processReplacing(float **inputs, float **outputs, VstInt32 sample
iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount));
outputSampleR = outputSampleR - iirSampleBR;
}
+ fpFlip = !fpFlip;
if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry);
if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = outputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLA;
-
- fpTemp = outputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = outputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLB;
-
- fpTemp = outputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
@@ -171,9 +156,6 @@ void Highpass::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double inputSampleR;
double outputSampleL;
double outputSampleR;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -259,33 +241,23 @@ void Highpass::processDoubleReplacing(double **inputs, double **outputs, VstInt3
iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount));
outputSampleR = outputSampleR - iirSampleBR;
}
+ fpFlip = !fpFlip;
if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry);
if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = outputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLA;
-
- fpTemp = outputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = outputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLB;
-
- fpTemp = outputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
diff --git a/plugins/WinVST/Hombre/.vs/VSTProject/v14/.suo b/plugins/WinVST/Hombre/.vs/VSTProject/v14/.suo
index 1c81394..2fce309 100755
--- a/plugins/WinVST/Hombre/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Hombre/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Hombre/Hombre.cpp b/plugins/WinVST/Hombre/Hombre.cpp
index 9ef8844..8b03ed1 100755
--- a/plugins/WinVST/Hombre/Hombre.cpp
+++ b/plugins/WinVST/Hombre/Hombre.cpp
@@ -17,11 +17,8 @@ Hombre::Hombre(audioMasterCallback audioMaster) :
for(int count = 0; count < 4000; count++) {pL[count] = 0.0; pR[count] = 0.0;}
gcount = 0;
slide = 0.421;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Hombre/Hombre.h b/plugins/WinVST/Hombre/Hombre.h
index 94e29b1..e23f6f3 100755
--- a/plugins/WinVST/Hombre/Hombre.h
+++ b/plugins/WinVST/Hombre/Hombre.h
@@ -58,11 +58,8 @@ private:
double slide;
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Hombre/HombreProc.cpp b/plugins/WinVST/Hombre/HombreProc.cpp
index 01e08bd..16bf513 100755
--- a/plugins/WinVST/Hombre/HombreProc.cpp
+++ b/plugins/WinVST/Hombre/HombreProc.cpp
@@ -17,9 +17,6 @@ void Hombre::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double target = A;
double offsetA;
@@ -134,25 +131,14 @@ void Hombre::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -174,9 +160,6 @@ void Hombre::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double target = A;
double offsetA;
@@ -291,25 +274,16 @@ void Hombre::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/IronOxide5/.vs/VSTProject/v14/.suo b/plugins/WinVST/IronOxide5/.vs/VSTProject/v14/.suo
index 171a825..e1e2f87 100755
--- a/plugins/WinVST/IronOxide5/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/IronOxide5/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/IronOxide5/IronOxide5.cpp b/plugins/WinVST/IronOxide5/IronOxide5.cpp
index 2d7c84f..914f53b 100755
--- a/plugins/WinVST/IronOxide5/IronOxide5.cpp
+++ b/plugins/WinVST/IronOxide5/IronOxide5.cpp
@@ -45,11 +45,8 @@ IronOxide5::IronOxide5(audioMasterCallback audioMaster) :
rateof = 0.5;
nextmax = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/IronOxide5/IronOxide5.h b/plugins/WinVST/IronOxide5/IronOxide5.h
index a7cad5d..82d4c9a 100755
--- a/plugins/WinVST/IronOxide5/IronOxide5.h
+++ b/plugins/WinVST/IronOxide5/IronOxide5.h
@@ -101,11 +101,8 @@ private:
double nextmax;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/IronOxide5/IronOxide5Proc.cpp b/plugins/WinVST/IronOxide5/IronOxide5Proc.cpp
index c0fbb35..e42d69f 100755
--- a/plugins/WinVST/IronOxide5/IronOxide5Proc.cpp
+++ b/plugins/WinVST/IronOxide5/IronOxide5Proc.cpp
@@ -17,9 +17,6 @@ void IronOxide5::processReplacing(float **inputs, float **outputs, VstInt32 samp
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = pow(10.0,((A*36.0)-18.0)/20.0);
double outputgain = pow(10.0,((F*36.0)-18.0)/20.0);
@@ -422,25 +419,14 @@ void IronOxide5::processReplacing(float **inputs, float **outputs, VstInt32 samp
}
//end invdrywet block with outputgain
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -462,9 +448,6 @@ void IronOxide5::processDoubleReplacing(double **inputs, double **outputs, VstIn
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = pow(10.0,((A*36.0)-18.0)/20.0);
double outputgain = pow(10.0,((F*36.0)-18.0)/20.0);
@@ -867,25 +850,16 @@ void IronOxide5::processDoubleReplacing(double **inputs, double **outputs, VstIn
}
//end invdrywet block with outputgain
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/IronOxideClassic/.vs/VSTProject/v14/.suo b/plugins/WinVST/IronOxideClassic/.vs/VSTProject/v14/.suo
index b85b7c1..5e0f1e3 100755
--- a/plugins/WinVST/IronOxideClassic/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/IronOxideClassic/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/IronOxideClassic/IronOxideClassic.cpp b/plugins/WinVST/IronOxideClassic/IronOxideClassic.cpp
index 012d8a3..8ce7103 100755
--- a/plugins/WinVST/IronOxideClassic/IronOxideClassic.cpp
+++ b/plugins/WinVST/IronOxideClassic/IronOxideClassic.cpp
@@ -22,12 +22,9 @@ IronOxideClassic::IronOxideClassic(audioMasterCallback audioMaster) :
iirSampleAL = iirSampleBL = 0.0;
fastIIRAR = fastIIRBR = slowIIRAR = slowIIRBR = 0.0;
iirSampleAR = iirSampleBR = 0.0;
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/IronOxideClassic/IronOxideClassic.h b/plugins/WinVST/IronOxideClassic/IronOxideClassic.h
index b7f8bfa..bafb457 100755
--- a/plugins/WinVST/IronOxideClassic/IronOxideClassic.h
+++ b/plugins/WinVST/IronOxideClassic/IronOxideClassic.h
@@ -71,12 +71,9 @@ private:
double slowIIRBR;
int gcount;
-
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/IronOxideClassic/IronOxideClassicProc.cpp b/plugins/WinVST/IronOxideClassic/IronOxideClassicProc.cpp
index c245166..97bbaca 100755
--- a/plugins/WinVST/IronOxideClassic/IronOxideClassicProc.cpp
+++ b/plugins/WinVST/IronOxideClassic/IronOxideClassicProc.cpp
@@ -17,9 +17,6 @@ void IronOxideClassic::processReplacing(float **inputs, float **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = pow(10.0,((A*36.0)-18.0)/20.0);
double outputgain = pow(10.0,((C*36.0)-18.0)/20.0);
@@ -343,26 +340,16 @@ void IronOxideClassic::processReplacing(float **inputs, float **outputs, VstInt3
inputSampleL *= outputgain;
inputSampleR *= outputgain;
}
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -384,9 +371,6 @@ void IronOxideClassic::processDoubleReplacing(double **inputs, double **outputs,
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = pow(10.0,((A*36.0)-18.0)/20.0);
double outputgain = pow(10.0,((C*36.0)-18.0)/20.0);
@@ -710,26 +694,18 @@ void IronOxideClassic::processDoubleReplacing(double **inputs, double **outputs,
inputSampleL *= outputgain;
inputSampleR *= outputgain;
}
-
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Logical4/.vs/VSTProject/v14/.suo b/plugins/WinVST/Logical4/.vs/VSTProject/v14/.suo
index 0a67ad3..34fa65c 100755
--- a/plugins/WinVST/Logical4/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Logical4/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Logical4/Logical4.cpp b/plugins/WinVST/Logical4/Logical4.cpp
index b17cc55..15d185b 100755
--- a/plugins/WinVST/Logical4/Logical4.cpp
+++ b/plugins/WinVST/Logical4/Logical4.cpp
@@ -77,12 +77,9 @@ Logical4::Logical4(audioMasterCallback audioMaster) :
gcount = 0;
//end Power Sags
-
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Logical4/Logical4.h b/plugins/WinVST/Logical4/Logical4.h
index 71e118e..fd802c8 100755
--- a/plugins/WinVST/Logical4/Logical4.h
+++ b/plugins/WinVST/Logical4/Logical4.h
@@ -143,10 +143,8 @@ private:
int gcount;
- double fpNShapeLA;
- double fpNShapeLB;
- double fpNShapeRA;
- double fpNShapeRB;
+ double fpNShapeL;
+ double fpNShapeR;
bool fpFlip;
//default stuff
diff --git a/plugins/WinVST/Logical4/Logical4Proc.cpp b/plugins/WinVST/Logical4/Logical4Proc.cpp
index 0d09fcf..5d079f3 100755
--- a/plugins/WinVST/Logical4/Logical4Proc.cpp
+++ b/plugins/WinVST/Logical4/Logical4Proc.cpp
@@ -17,9 +17,8 @@ void Logical4::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
+ long double fpNew = 1.0 - fpOld;
float drySampleL;
float drySampleR;
@@ -869,27 +868,17 @@ void Logical4::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
+ fpFlip = !fpFlip;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -911,9 +900,8 @@ void Logical4::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
+ long double fpNew = 1.0 - fpOld;
float drySampleL;
float drySampleR;
@@ -1762,26 +1750,18 @@ void Logical4::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (inputSampleL * wet) + (drySampleL * dry);
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
-
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Loud/.vs/VSTProject/v14/.suo b/plugins/WinVST/Loud/.vs/VSTProject/v14/.suo
index abcac37..ae71242 100755
--- a/plugins/WinVST/Loud/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Loud/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Loud/Loud.cpp b/plugins/WinVST/Loud/Loud.cpp
index 43f7ffc..009124d 100755
--- a/plugins/WinVST/Loud/Loud.cpp
+++ b/plugins/WinVST/Loud/Loud.cpp
@@ -15,11 +15,8 @@ Loud::Loud(audioMasterCallback audioMaster) :
A = 0.0;
B = 1.0;
C = 1.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Loud/Loud.h b/plugins/WinVST/Loud/Loud.h
index 85b66a2..17537c2 100755
--- a/plugins/WinVST/Loud/Loud.h
+++ b/plugins/WinVST/Loud/Loud.h
@@ -56,11 +56,8 @@ private:
double lastSampleL;
double lastSampleR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Loud/LoudProc.cpp b/plugins/WinVST/Loud/LoudProc.cpp
index 8aedede..35ee29b 100755
--- a/plugins/WinVST/Loud/LoudProc.cpp
+++ b/plugins/WinVST/Loud/LoudProc.cpp
@@ -18,9 +18,6 @@ void Loud::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
overallscale /= 44100.0;
overallscale *= getSampleRate();
double boost = pow(A+1.0,5);
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double output = B;
double wet = C;
double dry = 1.0-wet;
@@ -143,25 +140,14 @@ void Loud::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -184,9 +170,6 @@ void Loud::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
overallscale /= 44100.0;
overallscale *= getSampleRate();
double boost = pow(A+1.0,5);
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double output = B;
double wet = C;
double dry = 1.0-wet;
@@ -308,25 +291,16 @@ void Loud::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Lowpass/.vs/VSTProject/v14/.suo b/plugins/WinVST/Lowpass/.vs/VSTProject/v14/.suo
index f5cbb3f..cf0ac15 100755
--- a/plugins/WinVST/Lowpass/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Lowpass/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Lowpass/Lowpass.cpp b/plugins/WinVST/Lowpass/Lowpass.cpp
index 8178799..18064fc 100755
--- a/plugins/WinVST/Lowpass/Lowpass.cpp
+++ b/plugins/WinVST/Lowpass/Lowpass.cpp
@@ -19,10 +19,8 @@ Lowpass::Lowpass(audioMasterCallback audioMaster) :
iirSampleBL = 0.0;
iirSampleAR = 0.0;
iirSampleBR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/WinVST/Lowpass/Lowpass.h b/plugins/WinVST/Lowpass/Lowpass.h
index 1b99c55..40ac456 100755
--- a/plugins/WinVST/Lowpass/Lowpass.h
+++ b/plugins/WinVST/Lowpass/Lowpass.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
@@ -68,7 +65,7 @@ private:
double iirSampleBL;
double iirSampleAR;
double iirSampleBR;
-
+ bool fpFlip;
};
#endif
diff --git a/plugins/WinVST/Lowpass/LowpassProc.cpp b/plugins/WinVST/Lowpass/LowpassProc.cpp
index bcce714..bcc3690 100755
--- a/plugins/WinVST/Lowpass/LowpassProc.cpp
+++ b/plugins/WinVST/Lowpass/LowpassProc.cpp
@@ -27,9 +27,6 @@ void Lowpass::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double inputSampleR;
double outputSampleL;
double outputSampleR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -116,33 +113,21 @@ void Lowpass::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount));
outputSampleR = iirSampleBR;
}
+ fpFlip = !fpFlip;
if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry);
if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = outputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLA;
-
- fpTemp = outputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = outputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLB;
-
- fpTemp = outputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
@@ -174,9 +159,6 @@ void Lowpass::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double inputSampleR;
double outputSampleL;
double outputSampleR;
- double fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
iirAmount += (iirAmount * tight * tight);
if (tight > 0) tight /= 1.5;
@@ -263,33 +245,23 @@ void Lowpass::processDoubleReplacing(double **inputs, double **outputs, VstInt32
iirSampleBR = (iirSampleBR * (1 - (offset * iirAmount))) + (inputSampleR * (offset * iirAmount));
outputSampleR = iirSampleBR;
}
+ fpFlip = !fpFlip;
if (wet < 1.0) outputSampleL = (outputSampleL * wet) + (inputSampleL * dry);
if (wet < 1.0) outputSampleR = (outputSampleR * wet) + (inputSampleR * dry);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = outputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLA;
-
- fpTemp = outputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = outputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((outputSampleL-fpTemp)*fpNew);
- outputSampleL += fpNShapeLB;
-
- fpTemp = outputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((outputSampleR-fpTemp)*fpNew);
- outputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = outputSampleL;
*out2 = outputSampleR;
diff --git a/plugins/WinVST/Melt/.vs/VSTProject/v14/.suo b/plugins/WinVST/Melt/.vs/VSTProject/v14/.suo
index ee90f48..e2993f2 100755
--- a/plugins/WinVST/Melt/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Melt/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Melt/Melt.cpp b/plugins/WinVST/Melt/Melt.cpp
index 9722e1f..35ede1e 100755
--- a/plugins/WinVST/Melt/Melt.cpp
+++ b/plugins/WinVST/Melt/Melt.cpp
@@ -26,11 +26,8 @@ Melt::Melt(audioMasterCallback audioMaster) :
slowCount = 0;
gcount = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Melt/Melt.h b/plugins/WinVST/Melt/Melt.h
index a8e0f38..af11f0f 100755
--- a/plugins/WinVST/Melt/Melt.h
+++ b/plugins/WinVST/Melt/Melt.h
@@ -70,11 +70,8 @@ private:
int slowCount;
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Melt/MeltProc.cpp b/plugins/WinVST/Melt/MeltProc.cpp
index 48a1c11..8a55732 100755
--- a/plugins/WinVST/Melt/MeltProc.cpp
+++ b/plugins/WinVST/Melt/MeltProc.cpp
@@ -21,9 +21,6 @@ void Melt::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
double wet = D;
double dry = 1.0-wet;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -271,25 +268,14 @@ void Melt::processReplacing(float **inputs, float **outputs, VstInt32 sampleFram
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -315,9 +301,6 @@ void Melt::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
double wet = D;
double dry = 1.0-wet;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -565,25 +548,16 @@ void Melt::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/MidSide/.vs/VSTProject/v14/.suo b/plugins/WinVST/MidSide/.vs/VSTProject/v14/.suo
index 652923f..9fdd1e3 100755
--- a/plugins/WinVST/MidSide/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/MidSide/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/MidSide/MidSide.cpp b/plugins/WinVST/MidSide/MidSide.cpp
index bc37393..8f61cff 100755
--- a/plugins/WinVST/MidSide/MidSide.cpp
+++ b/plugins/WinVST/MidSide/MidSide.cpp
@@ -13,11 +13,8 @@ MidSide::MidSide(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.5;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/MidSide/MidSide.h b/plugins/WinVST/MidSide/MidSide.h
index 28b2ae7..4d139c8 100755
--- a/plugins/WinVST/MidSide/MidSide.h
+++ b/plugins/WinVST/MidSide/MidSide.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/MidSide/MidSideProc.cpp b/plugins/WinVST/MidSide/MidSideProc.cpp
index 2df14f4..cca7a5c 100755
--- a/plugins/WinVST/MidSide/MidSideProc.cpp
+++ b/plugins/WinVST/MidSide/MidSideProc.cpp
@@ -14,9 +14,6 @@ void MidSide::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -76,25 +73,14 @@ void MidSide::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
mid *= midgain;
side *= sidegain;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = mid;
*out2 = side;
@@ -113,9 +99,6 @@ void MidSide::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -175,25 +158,16 @@ void MidSide::processDoubleReplacing(double **inputs, double **outputs, VstInt32
mid *= midgain;
side *= sidegain;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = mid;
- fpNShapeLA = (fpNShapeLA*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLA;
- fpTemp = side;
- fpNShapeRA = (fpNShapeRA*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRA;
- }
- else {
- fpTemp = mid;
- fpNShapeLB = (fpNShapeLB*fpOld)+((mid-fpTemp)*fpNew);
- mid += fpNShapeLB;
- fpTemp = side;
- fpNShapeRB = (fpNShapeRB*fpOld)+((side-fpTemp)*fpNew);
- side += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)mid, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ mid += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)side, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ side += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = mid;
*out2 = side;
diff --git a/plugins/WinVST/NC-17/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/NC-17/.vs/Console4Channel64/v14/.suo
new file mode 100755
index 0000000..777b846
--- /dev/null
+++ b/plugins/WinVST/NC-17/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/NC-17/.vs/VSTProject/v14/.suo b/plugins/WinVST/NC-17/.vs/VSTProject/v14/.suo
new file mode 100755
index 0000000..eca2385
--- /dev/null
+++ b/plugins/WinVST/NC-17/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/NC-17/NCSeventeen.cpp b/plugins/WinVST/NC-17/NCSeventeen.cpp
new file mode 100755
index 0000000..409f983
--- /dev/null
+++ b/plugins/WinVST/NC-17/NCSeventeen.cpp
@@ -0,0 +1,144 @@
+/* ========================================
+ * NCSeventeen - NCSeventeen.h
+ * Copyright (c) 2016 airwindows, All rights reserved
+ * ======================================== */
+
+#ifndef __NCSeventeen_H
+#include "NCSeventeen.h"
+#endif
+
+AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new NCSeventeen(audioMaster);}
+
+NCSeventeen::NCSeventeen(audioMasterCallback audioMaster) :
+ AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
+{
+ A = 0.0;
+ B = 1.0;
+
+ lastSampleL = 0.0;
+ iirSampleAL = 0.0;
+ iirSampleBL = 0.0;
+ basslevL = 0.0;
+ treblevL = 0.0;
+ cheblevL = 0.0;
+
+ lastSampleR = 0.0;
+ iirSampleAR = 0.0;
+ iirSampleBR = 0.0;
+ basslevR = 0.0;
+ treblevR = 0.0;
+ cheblevR = 0.0;
+
+ flip = false;
+
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
+ //this is reset: values being initialized only once. Startup values, whatever they are.
+
+ _canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
+ _canDo.insert("plugAsSend"); // plug-in can be used as a send effect.
+ _canDo.insert("x2in2out");
+ setNumInputs(kNumInputs);
+ setNumOutputs(kNumOutputs);
+ setUniqueID(kUniqueId);
+ canProcessReplacing(); // supports output replacing
+ canDoubleReplacing(); // supports double precision processing
+ programsAreChunks(true);
+ vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name
+}
+
+NCSeventeen::~NCSeventeen() {}
+VstInt32 NCSeventeen::getVendorVersion () {return 1000;}
+void NCSeventeen::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
+void NCSeventeen::getProgramName(char *name) {vst_strncpy (name, _programName, kVstMaxProgNameLen);}
+//airwindows likes to ignore this stuff. Make your own programs, and make a different plugin rather than
+//trying to do versioning and preventing people from using older versions. Maybe they like the old one!
+
+static float pinParameter(float data)
+{
+ if (data < 0.0f) return 0.0f;
+ if (data > 1.0f) return 1.0f;
+ return data;
+}
+
+VstInt32 NCSeventeen::getChunk (void** data, bool isPreset)
+{
+ float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
+ chunkData[0] = A;
+ chunkData[1] = B;
+ /* Note: The way this is set up, it will break if you manage to save settings on an Intel
+ machine and load them on a PPC Mac. However, it's fine if you stick to the machine you
+ started with. */
+
+ *data = chunkData;
+ return kNumParameters * sizeof(float);
+}
+
+VstInt32 NCSeventeen::setChunk (void* data, VstInt32 byteSize, bool isPreset)
+{
+ float *chunkData = (float *)data;
+ A = pinParameter(chunkData[0]);
+ B = pinParameter(chunkData[1]);
+ /* We're ignoring byteSize as we found it to be a filthy liar */
+
+ /* calculate any other fields you need here - you could copy in
+ code from setParameter() here. */
+ return 0;
+}
+
+void NCSeventeen::setParameter(VstInt32 index, float value) {
+ switch (index) {
+ case kParamA: A = value; break;
+ case kParamB: B = value; break;
+ default: throw; // unknown parameter, shouldn't happen!
+ }
+}
+
+float NCSeventeen::getParameter(VstInt32 index) {
+ switch (index) {
+ case kParamA: return A; break;
+ case kParamB: return B; break;
+ default: break; // unknown parameter, shouldn't happen!
+ } return 0.0; //we only need to update the relevant name, this is simple to manage
+}
+
+void NCSeventeen::getParameterName(VstInt32 index, char *text) {
+ switch (index) {
+ case kParamA: vst_strncpy (text, "LOUDER", kVstMaxParamStrLen); break;
+ case kParamB: vst_strncpy (text, "Output", kVstMaxParamStrLen); break;
+ default: break; // unknown parameter, shouldn't happen!
+ } //this is our labels for displaying in the VST host
+}
+
+void NCSeventeen::getParameterDisplay(VstInt32 index, char *text) {
+ switch (index) {
+ case kParamA: float2string (A*24.0, text, kVstMaxParamStrLen); break;
+ case kParamB: float2string (B, text, kVstMaxParamStrLen); break;
+ default: break; // unknown parameter, shouldn't happen!
+ } //this displays the values and handles 'popups' where it's discrete choices
+}
+
+void NCSeventeen::getParameterLabel(VstInt32 index, char *text) {
+ switch (index) {
+ case kParamA: vst_strncpy (text, "dB", kVstMaxParamStrLen); break;
+ case kParamB: vst_strncpy (text, " ", kVstMaxParamStrLen); break;
+ default: break; // unknown parameter, shouldn't happen!
+ }
+}
+
+VstInt32 NCSeventeen::canDo(char *text)
+{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
+
+bool NCSeventeen::getEffectName(char* name) {
+ vst_strncpy(name, "NC-17", kVstMaxProductStrLen); return true;
+}
+
+VstPlugCategory NCSeventeen::getPlugCategory() {return kPlugCategEffect;}
+
+bool NCSeventeen::getProductString(char* text) {
+ vst_strncpy (text, "airwindows NC-17", kVstMaxProductStrLen); return true;
+}
+
+bool NCSeventeen::getVendorString(char* text) {
+ vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
+}
diff --git a/plugins/WinVST/NC-17/NCSeventeen.h b/plugins/WinVST/NC-17/NCSeventeen.h
new file mode 100755
index 0000000..b3ecd94
--- /dev/null
+++ b/plugins/WinVST/NC-17/NCSeventeen.h
@@ -0,0 +1,81 @@
+/* ========================================
+ * NCSeventeen - NCSeventeen.h
+ * Created 8/12/11 by SPIAdmin
+ * Copyright (c) 2011 __MyCompanyName__, All rights reserved
+ * ======================================== */
+
+#ifndef __NCSeventeen_H
+#define __NCSeventeen_H
+
+#ifndef __audioeffect__
+#include "audioeffectx.h"
+#endif
+
+#include <set>
+#include <string>
+#include <math.h>
+
+enum {
+ kParamA = 0,
+ kParamB = 1,
+ kNumParameters = 2
+}; //
+
+const int kNumPrograms = 0;
+const int kNumInputs = 2;
+const int kNumOutputs = 2;
+const unsigned long kUniqueId = 'ncse'; //Change this to what the AU identity is!
+
+class NCSeventeen :
+ public AudioEffectX
+{
+public:
+ NCSeventeen(audioMasterCallback audioMaster);
+ ~NCSeventeen();
+ virtual bool getEffectName(char* name); // The plug-in name
+ virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in
+ virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg
+ virtual bool getVendorString(char* text); // Vendor info
+ virtual VstInt32 getVendorVersion(); // Version number
+ virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);
+ virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames);
+ virtual void getProgramName(char *name); // read the name from the host
+ virtual void setProgramName(char *name); // changes the name of the preset displayed in the host
+ virtual VstInt32 getChunk (void** data, bool isPreset);
+ virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset);
+ virtual float getParameter(VstInt32 index); // get the parameter value at the specified index
+ virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value
+ virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB)
+ virtual void getParameterName(VstInt32 index, char *text); // name of the parameter
+ virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value
+ virtual VstInt32 canDo(char *text);
+private:
+ char _programName[kVstMaxProgNameLen + 1];
+ std::set< std::string > _canDo;
+
+private:
+ double lastSampleL;
+ double iirSampleAL;
+ double iirSampleBL;
+ double basslevL;
+ double treblevL;
+ double cheblevL;
+
+ double lastSampleR;
+ double iirSampleAR;
+ double iirSampleBR;
+ double basslevR;
+ double treblevR;
+ double cheblevR;
+
+ bool flip;
+
+ long double fpNShapeL;
+ long double fpNShapeR;
+ //default stuff
+
+ float A;
+ float B;
+};
+
+#endif
diff --git a/plugins/WinVST/NC-17/NCSeventeenProc.cpp b/plugins/WinVST/NC-17/NCSeventeenProc.cpp
new file mode 100755
index 0000000..e124cb5
--- /dev/null
+++ b/plugins/WinVST/NC-17/NCSeventeenProc.cpp
@@ -0,0 +1,721 @@
+/* ========================================
+ * NCSeventeen - NCSeventeen.h
+ * Copyright (c) 2016 airwindows, All rights reserved
+ * ======================================== */
+
+#ifndef __NCSeventeen_H
+#include "NCSeventeen.h"
+#endif
+
+void NCSeventeen::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
+{
+ float* in1 = inputs[0];
+ float* in2 = inputs[1];
+ float* out1 = outputs[0];
+ float* out2 = outputs[1];
+
+ double inP2;
+ double chebyshev;
+ double overallscale = 1.0;
+ overallscale /= 44100.0;
+ overallscale *= getSampleRate();
+
+ double IIRscaleback = 0.0004716;
+ double bassScaleback = 0.0002364;
+ double trebleScaleback = 0.0005484;
+ double addBassBuss = 0.000243;
+ double addTrebBuss = 0.000407;
+ double addShortBuss = 0.000326;
+ IIRscaleback /= overallscale;
+ bassScaleback /= overallscale;
+ trebleScaleback /= overallscale;
+ addBassBuss /= overallscale;
+ addTrebBuss /= overallscale;
+ addShortBuss /= overallscale;
+ double limitingBass = 0.39;
+ double limitingTreb = 0.6;
+ double limiting = 0.36;
+ double maxfeedBass = 0.972;
+ double maxfeedTreb = 0.972;
+ double maxfeed = 0.975;
+ double bridgerectifier;
+ long double inputSampleL;
+ double lowSampleL = 0.0;
+ double highSampleL;
+ double distSampleL;
+ double minusSampleL;
+ double plusSampleL;
+ long double inputSampleR;
+ double lowSampleR = 0.0;
+ double highSampleR;
+ double distSampleR;
+ double minusSampleR;
+ double plusSampleR;
+ double gain = pow(10.0,(A*24.0)/20);
+ double outlevel = B;
+
+
+ while (--sampleFrames >= 0)
+ {
+ inputSampleL = *in1;
+ inputSampleR = *in2;
+ if (inputSampleL<1.2e-38 && -inputSampleL<1.2e-38) {
+ static int noisesource = 0;
+ //this declares a variable before anything else is compiled. It won't keep assigning
+ //it to 0 for every sample, it's as if the declaration doesn't exist in this context,
+ //but it lets me add this denormalization fix in a single place rather than updating
+ //it in three different locations. The variable isn't thread-safe but this is only
+ //a random seed and we can share it with whatever.
+ noisesource = noisesource % 1700021; noisesource++;
+ int residue = noisesource * noisesource;
+ residue = residue % 170003; residue *= residue;
+ residue = residue % 17011; residue *= residue;
+ residue = residue % 1709; residue *= residue;
+ residue = residue % 173; residue *= residue;
+ residue = residue % 17;
+ double applyresidue = residue;
+ applyresidue *= 0.00000001;
+ applyresidue *= 0.00000001;
+ inputSampleL = applyresidue;
+ }
+ if (inputSampleR<1.2e-38 && -inputSampleR<1.2e-38) {
+ static int noisesource = 0;
+ noisesource = noisesource % 1700021; noisesource++;
+ int residue = noisesource * noisesource;
+ residue = residue % 170003; residue *= residue;
+ residue = residue % 17011; residue *= residue;
+ residue = residue % 1709; residue *= residue;
+ residue = residue % 173; residue *= residue;
+ residue = residue % 17;
+ double applyresidue = residue;
+ applyresidue *= 0.00000001;
+ applyresidue *= 0.00000001;
+ inputSampleR = applyresidue;
+ //this denormalization routine produces a white noise at -300 dB which the noise
+ //shaping will interact with to produce a bipolar output, but the noise is actually
+ //all positive. That should stop any variables from going denormal, and the routine
+ //only kicks in if digital black is input. As a final touch, if you save to 24-bit
+ //the silence will return to being digital black again.
+ }
+
+ inputSampleL *= gain;
+ inputSampleR *= gain;
+
+ if (flip)
+ {
+ iirSampleAL = (iirSampleAL * 0.9) + (inputSampleL * 0.1);
+ lowSampleL = iirSampleAL;
+ iirSampleAR = (iirSampleAR * 0.9) + (inputSampleR * 0.1);
+ lowSampleR = iirSampleAR;
+ }
+ else
+ {
+ iirSampleBL = (iirSampleBL * 0.9) + (inputSampleL * 0.1);
+ lowSampleL = iirSampleBL;
+ iirSampleBR = (iirSampleBR * 0.9) + (inputSampleR * 0.1);
+ lowSampleR = iirSampleBR;
+ }
+ highSampleL = inputSampleL - lowSampleL;
+ highSampleR = inputSampleR - lowSampleR;
+ flip = !flip;
+ //we now have two bands and the original source
+
+ inP2 = lowSampleL * lowSampleL;
+ if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0;
+ chebyshev = (2 * inP2);
+ chebyshev *= basslevL;
+ //second harmonic max +1
+ if (basslevL > 0) basslevL -= bassScaleback;
+ if (basslevL < 0) basslevL += bassScaleback;
+ //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on
+ bridgerectifier = fabs(lowSampleL);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (lowSampleL > 0.0) distSampleL = bridgerectifier;
+ else distSampleL = -bridgerectifier;
+ minusSampleL = lowSampleL - distSampleL;
+ plusSampleL = lowSampleL + distSampleL;
+ if (minusSampleL > maxfeedBass) minusSampleL = maxfeedBass;
+ if (plusSampleL > maxfeedBass) plusSampleL = maxfeedBass;
+ if (plusSampleL < -maxfeedBass) plusSampleL = -maxfeedBass;
+ if (minusSampleL < -maxfeedBass) minusSampleL = -maxfeedBass;
+ if (lowSampleL > distSampleL) basslevL += (minusSampleL*addBassBuss);
+ if (lowSampleL < -distSampleL) basslevL -= (plusSampleL*addBassBuss);
+ if (basslevL > 1.0) basslevL = 1.0;
+ if (basslevL < -1.0) basslevL = -1.0;
+ bridgerectifier = fabs(lowSampleL);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (lowSampleL > 0.0) lowSampleL = bridgerectifier;
+ else lowSampleL = -bridgerectifier;
+ //apply the distortion transform for reals
+ lowSampleL /= (1.0+fabs(basslevL*limitingBass));
+ lowSampleL += chebyshev;
+ //apply the correction measuresL
+
+ inP2 = lowSampleR * lowSampleR;
+ if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0;
+ chebyshev = (2 * inP2);
+ chebyshev *= basslevR;
+ //second harmonic max +1
+ if (basslevR > 0) basslevR -= bassScaleback;
+ if (basslevR < 0) basslevR += bassScaleback;
+ //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on
+ bridgerectifier = fabs(lowSampleR);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (lowSampleR > 0.0) distSampleR = bridgerectifier;
+ else distSampleR = -bridgerectifier;
+ minusSampleR = lowSampleR - distSampleR;
+ plusSampleR = lowSampleR + distSampleR;
+ if (minusSampleR > maxfeedBass) minusSampleR = maxfeedBass;
+ if (plusSampleR > maxfeedBass) plusSampleR = maxfeedBass;
+ if (plusSampleR < -maxfeedBass) plusSampleR = -maxfeedBass;
+ if (minusSampleR < -maxfeedBass) minusSampleR = -maxfeedBass;
+ if (lowSampleR > distSampleR) basslevR += (minusSampleR*addBassBuss);
+ if (lowSampleR < -distSampleR) basslevR -= (plusSampleR*addBassBuss);
+ if (basslevR > 1.0) basslevR = 1.0;
+ if (basslevR < -1.0) basslevR = -1.0;
+ bridgerectifier = fabs(lowSampleR);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (lowSampleR > 0.0) lowSampleR = bridgerectifier;
+ else lowSampleR = -bridgerectifier;
+ //apply the distortion transform for reals
+ lowSampleR /= (1.0+fabs(basslevR*limitingBass));
+ lowSampleR += chebyshev;
+ //apply the correction measuresR
+
+ inP2 = highSampleL * highSampleL;
+ if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0;
+ chebyshev = (2 * inP2);
+ chebyshev *= treblevL;
+ //second harmonic max +1
+ if (treblevL > 0) treblevL -= trebleScaleback;
+ if (treblevL < 0) treblevL += trebleScaleback;
+ //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on
+ bridgerectifier = fabs(highSampleL);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (highSampleL > 0.0) distSampleL = bridgerectifier;
+ else distSampleL = -bridgerectifier;
+ minusSampleL = highSampleL - distSampleL;
+ plusSampleL = highSampleL + distSampleL;
+ if (minusSampleL > maxfeedTreb) minusSampleL = maxfeedTreb;
+ if (plusSampleL > maxfeedTreb) plusSampleL = maxfeedTreb;
+ if (plusSampleL < -maxfeedTreb) plusSampleL = -maxfeedTreb;
+ if (minusSampleL < -maxfeedTreb) minusSampleL = -maxfeedTreb;
+ if (highSampleL > distSampleL) treblevL += (minusSampleL*addTrebBuss);
+ if (highSampleL < -distSampleL) treblevL -= (plusSampleL*addTrebBuss);
+ if (treblevL > 1.0) treblevL = 1.0;
+ if (treblevL < -1.0) treblevL = -1.0;
+ bridgerectifier = fabs(highSampleL);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (highSampleL > 0.0) highSampleL = bridgerectifier;
+ else highSampleL = -bridgerectifier;
+ //apply the distortion transform for reals
+ highSampleL /= (1.0+fabs(treblevL*limitingTreb));
+ highSampleL += chebyshev;
+ //apply the correction measuresL
+
+ inP2 = highSampleR * highSampleR;
+ if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0;
+ chebyshev = (2 * inP2);
+ chebyshev *= treblevR;
+ //second harmonic max +1
+ if (treblevR > 0) treblevR -= trebleScaleback;
+ if (treblevR < 0) treblevR += trebleScaleback;
+ //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on
+ bridgerectifier = fabs(highSampleR);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (highSampleR > 0.0) distSampleR = bridgerectifier;
+ else distSampleR = -bridgerectifier;
+ minusSampleR = highSampleR - distSampleR;
+ plusSampleR = highSampleR + distSampleR;
+ if (minusSampleR > maxfeedTreb) minusSampleR = maxfeedTreb;
+ if (plusSampleR > maxfeedTreb) plusSampleR = maxfeedTreb;
+ if (plusSampleR < -maxfeedTreb) plusSampleR = -maxfeedTreb;
+ if (minusSampleR < -maxfeedTreb) minusSampleR = -maxfeedTreb;
+ if (highSampleR > distSampleR) treblevR += (minusSampleR*addTrebBuss);
+ if (highSampleR < -distSampleR) treblevR -= (plusSampleR*addTrebBuss);
+ if (treblevR > 1.0) treblevR = 1.0;
+ if (treblevR < -1.0) treblevR = -1.0;
+ bridgerectifier = fabs(highSampleR);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (highSampleR > 0.0) highSampleR = bridgerectifier;
+ else highSampleR = -bridgerectifier;
+ //apply the distortion transform for reals
+ highSampleR /= (1.0+fabs(treblevR*limitingTreb));
+ highSampleR += chebyshev;
+ //apply the correction measuresR
+
+ inputSampleL = lowSampleL + highSampleL;
+ inputSampleR = lowSampleR + highSampleR;
+
+ inP2 = inputSampleL * inputSampleL;
+ if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0;
+ chebyshev = (2 * inP2);
+ chebyshev *= cheblevL;
+ //third harmonic max -1
+ if (cheblevL > 0) cheblevL -= (IIRscaleback);
+ if (cheblevL < 0) cheblevL += (IIRscaleback);
+ //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on
+ bridgerectifier = fabs(inputSampleL);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (inputSampleL > 0.0) distSampleL = bridgerectifier;
+ else distSampleL = -bridgerectifier;
+ minusSampleL = inputSampleL - distSampleL;
+ plusSampleL = inputSampleL + distSampleL;
+ if (minusSampleL > maxfeed) minusSampleL = maxfeed;
+ if (plusSampleL > maxfeed) plusSampleL = maxfeed;
+ if (plusSampleL < -maxfeed) plusSampleL = -maxfeed;
+ if (minusSampleL < -maxfeed) minusSampleL = -maxfeed;
+ if (inputSampleL > distSampleL) cheblevL += (minusSampleL*addShortBuss);
+ if (inputSampleL < -distSampleL) cheblevL -= (plusSampleL*addShortBuss);
+ if (cheblevL > 1.0) cheblevL = 1.0;
+ if (cheblevL < -1.0) cheblevL = -1.0;
+ bridgerectifier = fabs(inputSampleL);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (inputSampleL > 0.0) inputSampleL = bridgerectifier;
+ else inputSampleL = -bridgerectifier;
+ //apply the distortion transform for reals
+ inputSampleL /= (1.0+fabs(cheblevL*limiting));
+ inputSampleL += chebyshev;
+ //apply the correction measuresL
+
+ inP2 = inputSampleR * inputSampleR;
+ if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0;
+ chebyshev = (2 * inP2);
+ chebyshev *= cheblevR;
+ //third harmonic max -1
+ if (cheblevR > 0) cheblevR -= IIRscaleback;
+ if (cheblevR < 0) cheblevR += IIRscaleback;
+ //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on
+ bridgerectifier = fabs(inputSampleR);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (inputSampleR > 0.0) distSampleR = bridgerectifier;
+ else distSampleR = -bridgerectifier;
+ minusSampleR = inputSampleR - distSampleR;
+ plusSampleR = inputSampleR + distSampleR;
+ if (minusSampleR > maxfeed) minusSampleR = maxfeed;
+ if (plusSampleR > maxfeed) plusSampleR = maxfeed;
+ if (plusSampleR < -maxfeed) plusSampleR = -maxfeed;
+ if (minusSampleR < -maxfeed) minusSampleR = -maxfeed;
+ if (inputSampleR > distSampleR) cheblevR += (minusSampleR*addShortBuss);
+ if (inputSampleR < -distSampleR) cheblevR -= (plusSampleR*addShortBuss);
+ if (cheblevR > 1.0) cheblevR = 1.0;
+ if (cheblevR < -1.0) cheblevR = -1.0;
+ bridgerectifier = fabs(inputSampleR);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (inputSampleR > 0.0) inputSampleR = bridgerectifier;
+ else inputSampleR = -bridgerectifier;
+ //apply the distortion transform for reals
+ inputSampleR /= (1.0+fabs(cheblevR*limiting));
+ inputSampleR += chebyshev;
+ //apply the correction measuresR
+
+ if (outlevel < 1.0) {
+ inputSampleL *= outlevel;
+ inputSampleR *= outlevel;
+ }
+
+ if (inputSampleL > 0.95) inputSampleL = 0.95;
+ if (inputSampleL < -0.95) inputSampleL = -0.95;
+ if (inputSampleR > 0.95) inputSampleR = 0.95;
+ if (inputSampleR < -0.95) inputSampleR = -0.95;
+ //iron bar
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+
+ *out1 = inputSampleL;
+ *out2 = inputSampleR;
+
+ *in1++;
+ *in2++;
+ *out1++;
+ *out2++;
+ }
+}
+
+void NCSeventeen::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
+{
+ double* in1 = inputs[0];
+ double* in2 = inputs[1];
+ double* out1 = outputs[0];
+ double* out2 = outputs[1];
+
+ double inP2;
+ double chebyshev;
+ double overallscale = 1.0;
+ overallscale /= 44100.0;
+ overallscale *= getSampleRate();
+
+ double IIRscaleback = 0.0004716;
+ double bassScaleback = 0.0002364;
+ double trebleScaleback = 0.0005484;
+ double addBassBuss = 0.000243;
+ double addTrebBuss = 0.000407;
+ double addShortBuss = 0.000326;
+ IIRscaleback /= overallscale;
+ bassScaleback /= overallscale;
+ trebleScaleback /= overallscale;
+ addBassBuss /= overallscale;
+ addTrebBuss /= overallscale;
+ addShortBuss /= overallscale;
+ double limitingBass = 0.39;
+ double limitingTreb = 0.6;
+ double limiting = 0.36;
+ double maxfeedBass = 0.972;
+ double maxfeedTreb = 0.972;
+ double maxfeed = 0.975;
+ double bridgerectifier;
+ long double inputSampleL;
+ double lowSampleL = 0.0;
+ double highSampleL;
+ double distSampleL;
+ double minusSampleL;
+ double plusSampleL;
+ long double inputSampleR;
+ double lowSampleR = 0.0;
+ double highSampleR;
+ double distSampleR;
+ double minusSampleR;
+ double plusSampleR;
+ double gain = pow(10.0,(A*24.0)/20);
+ double outlevel = B;
+
+ while (--sampleFrames >= 0)
+ {
+ inputSampleL = *in1;
+ inputSampleR = *in2;
+ if (inputSampleL<1.2e-38 && -inputSampleL<1.2e-38) {
+ static int noisesource = 0;
+ //this declares a variable before anything else is compiled. It won't keep assigning
+ //it to 0 for every sample, it's as if the declaration doesn't exist in this context,
+ //but it lets me add this denormalization fix in a single place rather than updating
+ //it in three different locations. The variable isn't thread-safe but this is only
+ //a random seed and we can share it with whatever.
+ noisesource = noisesource % 1700021; noisesource++;
+ int residue = noisesource * noisesource;
+ residue = residue % 170003; residue *= residue;
+ residue = residue % 17011; residue *= residue;
+ residue = residue % 1709; residue *= residue;
+ residue = residue % 173; residue *= residue;
+ residue = residue % 17;
+ double applyresidue = residue;
+ applyresidue *= 0.00000001;
+ applyresidue *= 0.00000001;
+ inputSampleL = applyresidue;
+ }
+ if (inputSampleR<1.2e-38 && -inputSampleR<1.2e-38) {
+ static int noisesource = 0;
+ noisesource = noisesource % 1700021; noisesource++;
+ int residue = noisesource * noisesource;
+ residue = residue % 170003; residue *= residue;
+ residue = residue % 17011; residue *= residue;
+ residue = residue % 1709; residue *= residue;
+ residue = residue % 173; residue *= residue;
+ residue = residue % 17;
+ double applyresidue = residue;
+ applyresidue *= 0.00000001;
+ applyresidue *= 0.00000001;
+ inputSampleR = applyresidue;
+ //this denormalization routine produces a white noise at -300 dB which the noise
+ //shaping will interact with to produce a bipolar output, but the noise is actually
+ //all positive. That should stop any variables from going denormal, and the routine
+ //only kicks in if digital black is input. As a final touch, if you save to 24-bit
+ //the silence will return to being digital black again.
+ }
+
+ inputSampleL *= gain;
+ inputSampleR *= gain;
+
+ if (flip)
+ {
+ iirSampleAL = (iirSampleAL * 0.9) + (inputSampleL * 0.1);
+ lowSampleL = iirSampleAL;
+ iirSampleAR = (iirSampleAR * 0.9) + (inputSampleR * 0.1);
+ lowSampleR = iirSampleAR;
+ }
+ else
+ {
+ iirSampleBL = (iirSampleBL * 0.9) + (inputSampleL * 0.1);
+ lowSampleL = iirSampleBL;
+ iirSampleBR = (iirSampleBR * 0.9) + (inputSampleR * 0.1);
+ lowSampleR = iirSampleBR;
+ }
+ highSampleL = inputSampleL - lowSampleL;
+ highSampleR = inputSampleR - lowSampleR;
+ flip = !flip;
+ //we now have two bands and the original source
+
+ inP2 = lowSampleL * lowSampleL;
+ if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0;
+ chebyshev = (2 * inP2);
+ chebyshev *= basslevL;
+ //second harmonic max +1
+ if (basslevL > 0) basslevL -= bassScaleback;
+ if (basslevL < 0) basslevL += bassScaleback;
+ //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on
+ bridgerectifier = fabs(lowSampleL);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (lowSampleL > 0.0) distSampleL = bridgerectifier;
+ else distSampleL = -bridgerectifier;
+ minusSampleL = lowSampleL - distSampleL;
+ plusSampleL = lowSampleL + distSampleL;
+ if (minusSampleL > maxfeedBass) minusSampleL = maxfeedBass;
+ if (plusSampleL > maxfeedBass) plusSampleL = maxfeedBass;
+ if (plusSampleL < -maxfeedBass) plusSampleL = -maxfeedBass;
+ if (minusSampleL < -maxfeedBass) minusSampleL = -maxfeedBass;
+ if (lowSampleL > distSampleL) basslevL += (minusSampleL*addBassBuss);
+ if (lowSampleL < -distSampleL) basslevL -= (plusSampleL*addBassBuss);
+ if (basslevL > 1.0) basslevL = 1.0;
+ if (basslevL < -1.0) basslevL = -1.0;
+ bridgerectifier = fabs(lowSampleL);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (lowSampleL > 0.0) lowSampleL = bridgerectifier;
+ else lowSampleL = -bridgerectifier;
+ //apply the distortion transform for reals
+ lowSampleL /= (1.0+fabs(basslevL*limitingBass));
+ lowSampleL += chebyshev;
+ //apply the correction measuresL
+
+ inP2 = lowSampleR * lowSampleR;
+ if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0;
+ chebyshev = (2 * inP2);
+ chebyshev *= basslevR;
+ //second harmonic max +1
+ if (basslevR > 0) basslevR -= bassScaleback;
+ if (basslevR < 0) basslevR += bassScaleback;
+ //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on
+ bridgerectifier = fabs(lowSampleR);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (lowSampleR > 0.0) distSampleR = bridgerectifier;
+ else distSampleR = -bridgerectifier;
+ minusSampleR = lowSampleR - distSampleR;
+ plusSampleR = lowSampleR + distSampleR;
+ if (minusSampleR > maxfeedBass) minusSampleR = maxfeedBass;
+ if (plusSampleR > maxfeedBass) plusSampleR = maxfeedBass;
+ if (plusSampleR < -maxfeedBass) plusSampleR = -maxfeedBass;
+ if (minusSampleR < -maxfeedBass) minusSampleR = -maxfeedBass;
+ if (lowSampleR > distSampleR) basslevR += (minusSampleR*addBassBuss);
+ if (lowSampleR < -distSampleR) basslevR -= (plusSampleR*addBassBuss);
+ if (basslevR > 1.0) basslevR = 1.0;
+ if (basslevR < -1.0) basslevR = -1.0;
+ bridgerectifier = fabs(lowSampleR);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (lowSampleR > 0.0) lowSampleR = bridgerectifier;
+ else lowSampleR = -bridgerectifier;
+ //apply the distortion transform for reals
+ lowSampleR /= (1.0+fabs(basslevR*limitingBass));
+ lowSampleR += chebyshev;
+ //apply the correction measuresR
+
+ inP2 = highSampleL * highSampleL;
+ if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0;
+ chebyshev = (2 * inP2);
+ chebyshev *= treblevL;
+ //second harmonic max +1
+ if (treblevL > 0) treblevL -= trebleScaleback;
+ if (treblevL < 0) treblevL += trebleScaleback;
+ //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on
+ bridgerectifier = fabs(highSampleL);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (highSampleL > 0.0) distSampleL = bridgerectifier;
+ else distSampleL = -bridgerectifier;
+ minusSampleL = highSampleL - distSampleL;
+ plusSampleL = highSampleL + distSampleL;
+ if (minusSampleL > maxfeedTreb) minusSampleL = maxfeedTreb;
+ if (plusSampleL > maxfeedTreb) plusSampleL = maxfeedTreb;
+ if (plusSampleL < -maxfeedTreb) plusSampleL = -maxfeedTreb;
+ if (minusSampleL < -maxfeedTreb) minusSampleL = -maxfeedTreb;
+ if (highSampleL > distSampleL) treblevL += (minusSampleL*addTrebBuss);
+ if (highSampleL < -distSampleL) treblevL -= (plusSampleL*addTrebBuss);
+ if (treblevL > 1.0) treblevL = 1.0;
+ if (treblevL < -1.0) treblevL = -1.0;
+ bridgerectifier = fabs(highSampleL);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (highSampleL > 0.0) highSampleL = bridgerectifier;
+ else highSampleL = -bridgerectifier;
+ //apply the distortion transform for reals
+ highSampleL /= (1.0+fabs(treblevL*limitingTreb));
+ highSampleL += chebyshev;
+ //apply the correction measuresL
+
+ inP2 = highSampleR * highSampleR;
+ if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0;
+ chebyshev = (2 * inP2);
+ chebyshev *= treblevR;
+ //second harmonic max +1
+ if (treblevR > 0) treblevR -= trebleScaleback;
+ if (treblevR < 0) treblevR += trebleScaleback;
+ //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on
+ bridgerectifier = fabs(highSampleR);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (highSampleR > 0.0) distSampleR = bridgerectifier;
+ else distSampleR = -bridgerectifier;
+ minusSampleR = highSampleR - distSampleR;
+ plusSampleR = highSampleR + distSampleR;
+ if (minusSampleR > maxfeedTreb) minusSampleR = maxfeedTreb;
+ if (plusSampleR > maxfeedTreb) plusSampleR = maxfeedTreb;
+ if (plusSampleR < -maxfeedTreb) plusSampleR = -maxfeedTreb;
+ if (minusSampleR < -maxfeedTreb) minusSampleR = -maxfeedTreb;
+ if (highSampleR > distSampleR) treblevR += (minusSampleR*addTrebBuss);
+ if (highSampleR < -distSampleR) treblevR -= (plusSampleR*addTrebBuss);
+ if (treblevR > 1.0) treblevR = 1.0;
+ if (treblevR < -1.0) treblevR = -1.0;
+ bridgerectifier = fabs(highSampleR);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (highSampleR > 0.0) highSampleR = bridgerectifier;
+ else highSampleR = -bridgerectifier;
+ //apply the distortion transform for reals
+ highSampleR /= (1.0+fabs(treblevR*limitingTreb));
+ highSampleR += chebyshev;
+ //apply the correction measuresR
+
+ inputSampleL = lowSampleL + highSampleL;
+ inputSampleR = lowSampleR + highSampleR;
+
+ inP2 = inputSampleL * inputSampleL;
+ if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0;
+ chebyshev = (2 * inP2);
+ chebyshev *= cheblevL;
+ //third harmonic max -1
+ if (cheblevL > 0) cheblevL -= (IIRscaleback);
+ if (cheblevL < 0) cheblevL += (IIRscaleback);
+ //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on
+ bridgerectifier = fabs(inputSampleL);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (inputSampleL > 0.0) distSampleL = bridgerectifier;
+ else distSampleL = -bridgerectifier;
+ minusSampleL = inputSampleL - distSampleL;
+ plusSampleL = inputSampleL + distSampleL;
+ if (minusSampleL > maxfeed) minusSampleL = maxfeed;
+ if (plusSampleL > maxfeed) plusSampleL = maxfeed;
+ if (plusSampleL < -maxfeed) plusSampleL = -maxfeed;
+ if (minusSampleL < -maxfeed) minusSampleL = -maxfeed;
+ if (inputSampleL > distSampleL) cheblevL += (minusSampleL*addShortBuss);
+ if (inputSampleL < -distSampleL) cheblevL -= (plusSampleL*addShortBuss);
+ if (cheblevL > 1.0) cheblevL = 1.0;
+ if (cheblevL < -1.0) cheblevL = -1.0;
+ bridgerectifier = fabs(inputSampleL);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (inputSampleL > 0.0) inputSampleL = bridgerectifier;
+ else inputSampleL = -bridgerectifier;
+ //apply the distortion transform for reals
+ inputSampleL /= (1.0+fabs(cheblevL*limiting));
+ inputSampleL += chebyshev;
+ //apply the correction measuresL
+
+ inP2 = inputSampleR * inputSampleR;
+ if (inP2 > 1.0) inP2 = 1.0; if (inP2 < -1.0) inP2 = -1.0;
+ chebyshev = (2 * inP2);
+ chebyshev *= cheblevR;
+ //third harmonic max -1
+ if (cheblevR > 0) cheblevR -= IIRscaleback;
+ if (cheblevR < 0) cheblevR += IIRscaleback;
+ //this is ShortBuss, IIRscaleback is the decay speed. *2 for second harmonic, and so on
+ bridgerectifier = fabs(inputSampleR);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (inputSampleR > 0.0) distSampleR = bridgerectifier;
+ else distSampleR = -bridgerectifier;
+ minusSampleR = inputSampleR - distSampleR;
+ plusSampleR = inputSampleR + distSampleR;
+ if (minusSampleR > maxfeed) minusSampleR = maxfeed;
+ if (plusSampleR > maxfeed) plusSampleR = maxfeed;
+ if (plusSampleR < -maxfeed) plusSampleR = -maxfeed;
+ if (minusSampleR < -maxfeed) minusSampleR = -maxfeed;
+ if (inputSampleR > distSampleR) cheblevR += (minusSampleR*addShortBuss);
+ if (inputSampleR < -distSampleR) cheblevR -= (plusSampleR*addShortBuss);
+ if (cheblevR > 1.0) cheblevR = 1.0;
+ if (cheblevR < -1.0) cheblevR = -1.0;
+ bridgerectifier = fabs(inputSampleR);
+ if (bridgerectifier > 1.57079633) bridgerectifier = 1.57079633;
+ //max value for sine function
+ bridgerectifier = sin(bridgerectifier);
+ if (inputSampleR > 0.0) inputSampleR = bridgerectifier;
+ else inputSampleR = -bridgerectifier;
+ //apply the distortion transform for reals
+ inputSampleR /= (1.0+fabs(cheblevR*limiting));
+ inputSampleR += chebyshev;
+ //apply the correction measuresR
+
+ if (outlevel < 1.0) {
+ inputSampleL *= outlevel;
+ inputSampleR *= outlevel;
+ }
+
+ if (inputSampleL > 0.95) inputSampleL = 0.95;
+ if (inputSampleL < -0.95) inputSampleL = -0.95;
+ if (inputSampleR > 0.95) inputSampleR = 0.95;
+ if (inputSampleR < -0.95) inputSampleR = -0.95;
+ //iron bar
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
+
+ *out1 = inputSampleL;
+ *out2 = inputSampleR;
+
+ *in1++;
+ *in2++;
+ *out1++;
+ *out2++;
+ }
+} \ No newline at end of file
diff --git a/plugins/WinVST/NC-17/VSTProject.sln b/plugins/WinVST/NC-17/VSTProject.sln
new file mode 100755
index 0000000..694b424
--- /dev/null
+++ b/plugins/WinVST/NC-17/VSTProject.sln
@@ -0,0 +1,28 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VSTProject", "VSTProject.vcxproj", "{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x64.ActiveCfg = Debug|x64
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x64.Build.0 = Debug|x64
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x86.ActiveCfg = Debug|Win32
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x86.Build.0 = Debug|Win32
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x64.ActiveCfg = Release|x64
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x64.Build.0 = Release|x64
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x86.ActiveCfg = Release|Win32
+ {16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/plugins/WinVST/NC-17/VSTProject.vcxproj b/plugins/WinVST/NC-17/VSTProject.vcxproj
new file mode 100755
index 0000000..06ea4cd
--- /dev/null
+++ b/plugins/WinVST/NC-17/VSTProject.vcxproj
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.cpp" />
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.cpp" />
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\vstplugmain.cpp" />
+ <ClCompile Include="NCSeventeen.cpp" />
+ <ClCompile Include="NCSeventeenProc.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\aeffeditor.h" />
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.h" />
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h" />
+ <ClInclude Include="NCSeventeen.h" />
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}</ProjectGuid>
+ <RootNamespace>VSTProject</RootNamespace>
+ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ <ProjectName>NC-1764</ProjectName>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <CharacterSet>NotSet</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="Shared">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <TargetExt>.dll</TargetExt>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
+ <IntDir>$(Configuration)\</IntDir>
+ <ExecutablePath>$(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH)</ExecutablePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
+ <IntDir>$(Configuration)\</IntDir>
+ <ExecutablePath>$(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH)</ExecutablePath>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <IntrinsicFunctions>false</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ <Link>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <AdditionalDependencies>libcmt.lib;uuid.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>false</FunctionLevelLinking>
+ <IntrinsicFunctions>false</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+ <AdditionalDependencies>libcmt.lib;uuid.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
+ </Link>
+ </ItemDefinitionGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/WinVST/NC-17/VSTProject.vcxproj.filters b/plugins/WinVST/NC-17/VSTProject.vcxproj.filters
new file mode 100755
index 0000000..266110e
--- /dev/null
+++ b/plugins/WinVST/NC-17/VSTProject.vcxproj.filters
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\vstplugmain.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="NCSeventeen.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="NCSeventeenProc.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\aeffeditor.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="NCSeventeen.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/WinVST/NC-17/VSTProject.vcxproj.user b/plugins/WinVST/NC-17/VSTProject.vcxproj.user
new file mode 100755
index 0000000..2216267
--- /dev/null
+++ b/plugins/WinVST/NC-17/VSTProject.vcxproj.user
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/WinVST/NC-17/vstplug.def b/plugins/WinVST/NC-17/vstplug.def
new file mode 100755
index 0000000..5bf499a
--- /dev/null
+++ b/plugins/WinVST/NC-17/vstplug.def
@@ -0,0 +1,3 @@
+EXPORTS
+ VSTPluginMain
+ main=VSTPluginMain \ No newline at end of file
diff --git a/plugins/WinVST/Noise/.vs/VSTProject/v14/.suo b/plugins/WinVST/Noise/.vs/VSTProject/v14/.suo
index 78a0fe9..082f829 100755
--- a/plugins/WinVST/Noise/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Noise/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Noise/Noise.cpp b/plugins/WinVST/Noise/Noise.cpp
index 76d00c8..d955a29 100755
--- a/plugins/WinVST/Noise/Noise.cpp
+++ b/plugins/WinVST/Noise/Noise.cpp
@@ -36,11 +36,8 @@ Noise::Noise(audioMasterCallback audioMaster) :
flipR = false;
filterflip = false;
for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;}
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Noise/Noise.h b/plugins/WinVST/Noise/Noise.h
index 0ee4d76..67c32bc 100755
--- a/plugins/WinVST/Noise/Noise.h
+++ b/plugins/WinVST/Noise/Noise.h
@@ -81,11 +81,8 @@ private:
double f[11];
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Noise/NoiseProc.cpp b/plugins/WinVST/Noise/NoiseProc.cpp
index e185120..31cba20 100755
--- a/plugins/WinVST/Noise/NoiseProc.cpp
+++ b/plugins/WinVST/Noise/NoiseProc.cpp
@@ -104,9 +104,6 @@ void Noise::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
f[9] /= overallscale;
//and now it's neatly scaled, too
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
@@ -299,25 +296,14 @@ void Noise::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
//sometimes I'm really tired and can't do stuff, and I remember trying to simplify this
//and breaking it somehow. So, there ya go, strange obtuse code.
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -426,9 +412,6 @@ void Noise::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
f[9] /= overallscale;
//and now it's neatly scaled, too
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -619,25 +602,16 @@ void Noise::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
//sometimes I'm really tired and can't do stuff, and I remember trying to simplify this
//and breaking it somehow. So, there ya go, strange obtuse code.
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/NonlinearSpace/.vs/VSTProject/v14/.suo b/plugins/WinVST/NonlinearSpace/.vs/VSTProject/v14/.suo
index 7a7784d..975efbe 100755
--- a/plugins/WinVST/NonlinearSpace/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/NonlinearSpace/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/NonlinearSpace/NonlinearSpace.cpp b/plugins/WinVST/NonlinearSpace/NonlinearSpace.cpp
index 6941556..eb05bc3 100755
--- a/plugins/WinVST/NonlinearSpace/NonlinearSpace.cpp
+++ b/plugins/WinVST/NonlinearSpace/NonlinearSpace.cpp
@@ -195,11 +195,8 @@ NonlinearSpace::NonlinearSpace(audioMasterCallback audioMaster) :
countdown = -1;
flip = true;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/NonlinearSpace/NonlinearSpace.h b/plugins/WinVST/NonlinearSpace/NonlinearSpace.h
index e915b21..dbaa0b3 100755
--- a/plugins/WinVST/NonlinearSpace/NonlinearSpace.h
+++ b/plugins/WinVST/NonlinearSpace/NonlinearSpace.h
@@ -208,11 +208,8 @@ private:
double nonlin;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/NonlinearSpace/NonlinearSpaceProc.cpp b/plugins/WinVST/NonlinearSpace/NonlinearSpaceProc.cpp
index 597e184..f9df9fc 100755
--- a/plugins/WinVST/NonlinearSpace/NonlinearSpaceProc.cpp
+++ b/plugins/WinVST/NonlinearSpace/NonlinearSpaceProc.cpp
@@ -14,9 +14,6 @@ void NonlinearSpace::processReplacing(float **inputs, float **outputs, VstInt32
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -746,25 +743,14 @@ void NonlinearSpace::processReplacing(float **inputs, float **outputs, VstInt32
inputSampleR += drySampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
flip = !flip;
*out1 = inputSampleL;
@@ -784,9 +770,6 @@ void NonlinearSpace::processDoubleReplacing(double **inputs, double **outputs, V
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -1516,25 +1499,16 @@ void NonlinearSpace::processDoubleReplacing(double **inputs, double **outputs, V
inputSampleR += drySampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
flip = !flip;
*out1 = inputSampleL;
diff --git a/plugins/WinVST/OneCornerClip/.vs/VSTProject/v14/.suo b/plugins/WinVST/OneCornerClip/.vs/VSTProject/v14/.suo
index 18173df..f5ef448 100755
--- a/plugins/WinVST/OneCornerClip/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/OneCornerClip/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/OneCornerClip/OneCornerClip.cpp b/plugins/WinVST/OneCornerClip/OneCornerClip.cpp
index bf8828e..59e2824 100755
--- a/plugins/WinVST/OneCornerClip/OneCornerClip.cpp
+++ b/plugins/WinVST/OneCornerClip/OneCornerClip.cpp
@@ -25,11 +25,8 @@ OneCornerClip::OneCornerClip(audioMasterCallback audioMaster) :
limitPosR = 0.0;
limitNegR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/OneCornerClip/OneCornerClip.h b/plugins/WinVST/OneCornerClip/OneCornerClip.h
index 07f480a..4f039fa 100755
--- a/plugins/WinVST/OneCornerClip/OneCornerClip.h
+++ b/plugins/WinVST/OneCornerClip/OneCornerClip.h
@@ -56,11 +56,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double lastSampleL;
diff --git a/plugins/WinVST/OneCornerClip/OneCornerClipProc.cpp b/plugins/WinVST/OneCornerClip/OneCornerClipProc.cpp
index 0398b60..c45c69b 100755
--- a/plugins/WinVST/OneCornerClip/OneCornerClipProc.cpp
+++ b/plugins/WinVST/OneCornerClip/OneCornerClipProc.cpp
@@ -17,9 +17,6 @@ void OneCornerClip::processReplacing(float **inputs, float **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputGain = pow(10.0,(((A*36.0)-12.0)/20.0));
double posThreshold = B;
@@ -157,25 +154,14 @@ void OneCornerClip::processReplacing(float **inputs, float **outputs, VstInt32 s
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
if (clipEngage == false)
{
@@ -204,9 +190,6 @@ void OneCornerClip::processDoubleReplacing(double **inputs, double **outputs, Vs
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputGain = pow(10.0,(((A*36.0)-12.0)/20.0));
double posThreshold = B;
@@ -345,25 +328,16 @@ void OneCornerClip::processDoubleReplacing(double **inputs, double **outputs, Vs
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
if (clipEngage == false)
{
diff --git a/plugins/WinVST/PDBuss/.vs/VSTProject/v14/.suo b/plugins/WinVST/PDBuss/.vs/VSTProject/v14/.suo
index ac1db30..dc3eb7b 100755
--- a/plugins/WinVST/PDBuss/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/PDBuss/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PDBuss/PDBuss.cpp b/plugins/WinVST/PDBuss/PDBuss.cpp
index 323d8cf..8b31d8b 100755
--- a/plugins/WinVST/PDBuss/PDBuss.cpp
+++ b/plugins/WinVST/PDBuss/PDBuss.cpp
@@ -21,11 +21,8 @@ PDBuss::PDBuss(audioMasterCallback audioMaster) :
previousSampleL = 0.0;
previousSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/PDBuss/PDBuss.h b/plugins/WinVST/PDBuss/PDBuss.h
index 5c7a504..3e6d9b8 100755
--- a/plugins/WinVST/PDBuss/PDBuss.h
+++ b/plugins/WinVST/PDBuss/PDBuss.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double gainchase;
double settingchase;
diff --git a/plugins/WinVST/PDBuss/PDBussProc.cpp b/plugins/WinVST/PDBuss/PDBussProc.cpp
index c099057..6da8fa0 100755
--- a/plugins/WinVST/PDBuss/PDBussProc.cpp
+++ b/plugins/WinVST/PDBuss/PDBussProc.cpp
@@ -13,9 +13,6 @@ void PDBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double intensity = B;
@@ -122,25 +119,14 @@ void PDBuss::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -158,9 +144,6 @@ void PDBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double intensity = B;
@@ -267,25 +250,16 @@ void PDBuss::processDoubleReplacing(double **inputs, double **outputs, VstInt32
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/PDChannel/.vs/VSTProject/v14/.suo b/plugins/WinVST/PDChannel/.vs/VSTProject/v14/.suo
index 5debbed..3c18924 100755
--- a/plugins/WinVST/PDChannel/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/PDChannel/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PDChannel/PDChannel.cpp b/plugins/WinVST/PDChannel/PDChannel.cpp
index d300fc8..aef639d 100755
--- a/plugins/WinVST/PDChannel/PDChannel.cpp
+++ b/plugins/WinVST/PDChannel/PDChannel.cpp
@@ -21,11 +21,8 @@ PDChannel::PDChannel(audioMasterCallback audioMaster) :
previousSampleL = 0.0;
previousSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/PDChannel/PDChannel.h b/plugins/WinVST/PDChannel/PDChannel.h
index e92117c..ea233e2 100755
--- a/plugins/WinVST/PDChannel/PDChannel.h
+++ b/plugins/WinVST/PDChannel/PDChannel.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double gainchase;
double settingchase;
diff --git a/plugins/WinVST/PDChannel/PDChannelProc.cpp b/plugins/WinVST/PDChannel/PDChannelProc.cpp
index d8f79df..fb5932d 100755
--- a/plugins/WinVST/PDChannel/PDChannelProc.cpp
+++ b/plugins/WinVST/PDChannel/PDChannelProc.cpp
@@ -13,9 +13,6 @@ void PDChannel::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double intensity = B;
@@ -115,25 +112,14 @@ void PDChannel::processReplacing(float **inputs, float **outputs, VstInt32 sampl
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -151,9 +137,6 @@ void PDChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputgain = A;
double intensity = B;
@@ -253,25 +236,16 @@ void PDChannel::processDoubleReplacing(double **inputs, double **outputs, VstInt
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/PhaseNudge/.vs/VSTProject/v14/.suo b/plugins/WinVST/PhaseNudge/.vs/VSTProject/v14/.suo
index 11ae01b..f0b5d94 100755
--- a/plugins/WinVST/PhaseNudge/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/PhaseNudge/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PhaseNudge/PhaseNudge.cpp b/plugins/WinVST/PhaseNudge/PhaseNudge.cpp
index 8a77175..e9e5c8d 100755
--- a/plugins/WinVST/PhaseNudge/PhaseNudge.cpp
+++ b/plugins/WinVST/PhaseNudge/PhaseNudge.cpp
@@ -16,11 +16,8 @@ PhaseNudge::PhaseNudge(audioMasterCallback audioMaster) :
B = 1.0;
for(int count = 0; count < 1502; count++) {dL[count] = 0.0; dR[count] = 0.0;}
one = 1; maxdelay = 9001;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/PhaseNudge/PhaseNudge.h b/plugins/WinVST/PhaseNudge/PhaseNudge.h
index cba0ac8..2926ccb 100755
--- a/plugins/WinVST/PhaseNudge/PhaseNudge.h
+++ b/plugins/WinVST/PhaseNudge/PhaseNudge.h
@@ -57,11 +57,8 @@ private:
double dR[1503];
int one, maxdelay;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/PhaseNudge/PhaseNudgeProc.cpp b/plugins/WinVST/PhaseNudge/PhaseNudgeProc.cpp
index 494c841..150ecd5 100755
--- a/plugins/WinVST/PhaseNudge/PhaseNudgeProc.cpp
+++ b/plugins/WinVST/PhaseNudge/PhaseNudgeProc.cpp
@@ -14,9 +14,6 @@ void PhaseNudge::processReplacing(float **inputs, float **outputs, VstInt32 samp
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int allpasstemp;
double outallpass = 0.618033988749894848204586; //golden ratio!
@@ -136,25 +133,14 @@ void PhaseNudge::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (drySampleR * dry)+(inputSampleR * wet);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -173,9 +159,6 @@ void PhaseNudge::processDoubleReplacing(double **inputs, double **outputs, VstIn
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int allpasstemp;
double outallpass = 0.618033988749894848204586; //golden ratio!
@@ -294,25 +277,16 @@ void PhaseNudge::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (drySampleR * dry)+(inputSampleR * wet);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Point/.vs/VSTProject/v14/.suo b/plugins/WinVST/Point/.vs/VSTProject/v14/.suo
index 8ad608b..b4a9ec3 100755
--- a/plugins/WinVST/Point/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Point/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Point/Point.cpp b/plugins/WinVST/Point/Point.cpp
index 22885b5..f795470 100755
--- a/plugins/WinVST/Point/Point.cpp
+++ b/plugins/WinVST/Point/Point.cpp
@@ -24,10 +24,8 @@ Point::Point(audioMasterCallback audioMaster) :
nibBR = 0.0;
nobBR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/WinVST/Point/Point.h b/plugins/WinVST/Point/Point.h
index 12c8001..ff898cb 100755
--- a/plugins/WinVST/Point/Point.h
+++ b/plugins/WinVST/Point/Point.h
@@ -54,10 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool fpFlip;
//default stuff
double nibAL;
diff --git a/plugins/WinVST/Point/PointProc.cpp b/plugins/WinVST/Point/PointProc.cpp
index a00263d..a3bbe3c 100755
--- a/plugins/WinVST/Point/PointProc.cpp
+++ b/plugins/WinVST/Point/PointProc.cpp
@@ -27,9 +27,6 @@ void Point::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double nibnobFactor = 0.0; //start with the fallthrough value, why not
double absolute;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -128,26 +125,16 @@ void Point::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
}
}
inputSampleR *= nibnobFactor;
-
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -179,9 +166,6 @@ void Point::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double nibnobFactor = 0.0; //start with the fallthrough value, why not
double absolute;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -280,26 +264,18 @@ void Point::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
}
}
inputSampleR *= nibnobFactor;
-
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Pop/.vs/VSTProject/v14/.suo b/plugins/WinVST/Pop/.vs/VSTProject/v14/.suo
index 3af8535..4126984 100755
--- a/plugins/WinVST/Pop/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Pop/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Pop/PopProc.cpp b/plugins/WinVST/Pop/PopProc.cpp
index ae7dd4d..baa9420 100755
--- a/plugins/WinVST/Pop/PopProc.cpp
+++ b/plugins/WinVST/Pop/PopProc.cpp
@@ -268,18 +268,14 @@ void Pop::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
inputSampleR = (drySampleR*(1.0-wet))+(inputSampleR*wet);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -289,12 +285,6 @@ void Pop::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrame
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -558,18 +548,16 @@ void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
inputSampleR = (drySampleR*(1.0-wet))+(inputSampleR*wet);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -579,10 +567,4 @@ void Pop::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sam
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/PowerSag/.vs/VSTProject/v14/.suo b/plugins/WinVST/PowerSag/.vs/VSTProject/v14/.suo
index b1569f1..b258318 100755
--- a/plugins/WinVST/PowerSag/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/PowerSag/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PowerSag/PowerSag.cpp b/plugins/WinVST/PowerSag/PowerSag.cpp
index 0218186..d1d0745 100755
--- a/plugins/WinVST/PowerSag/PowerSag.cpp
+++ b/plugins/WinVST/PowerSag/PowerSag.cpp
@@ -18,11 +18,8 @@ PowerSag::PowerSag(audioMasterCallback audioMaster) :
gcount = 0;
A = 0.0;
B = 0.3;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/PowerSag/PowerSag.h b/plugins/WinVST/PowerSag/PowerSag.h
index 930f05b..38839b6 100755
--- a/plugins/WinVST/PowerSag/PowerSag.h
+++ b/plugins/WinVST/PowerSag/PowerSag.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double dL[9000];
double dR[9000];
diff --git a/plugins/WinVST/PowerSag/PowerSagProc.cpp b/plugins/WinVST/PowerSag/PowerSagProc.cpp
index d1afa31..de43be6 100755
--- a/plugins/WinVST/PowerSag/PowerSagProc.cpp
+++ b/plugins/WinVST/PowerSag/PowerSagProc.cpp
@@ -22,9 +22,6 @@ void PowerSag::processReplacing(float **inputs, float **outputs, VstInt32 sample
double out;
double bridgerectifier;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -123,25 +120,14 @@ void PowerSag::processReplacing(float **inputs, float **outputs, VstInt32 sample
gcount--;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -168,9 +154,6 @@ void PowerSag::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double out;
double bridgerectifier;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -269,25 +252,16 @@ void PowerSag::processDoubleReplacing(double **inputs, double **outputs, VstInt3
gcount--;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Pressure4/.vs/VSTProject/v14/.suo b/plugins/WinVST/Pressure4/.vs/VSTProject/v14/.suo
index a911044..b3e9f08 100755
--- a/plugins/WinVST/Pressure4/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Pressure4/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Pressure4/Pressure4.cpp b/plugins/WinVST/Pressure4/Pressure4.cpp
index 8ae2adc..10ed5fa 100755
--- a/plugins/WinVST/Pressure4/Pressure4.cpp
+++ b/plugins/WinVST/Pressure4/Pressure4.cpp
@@ -16,10 +16,8 @@ Pressure4::Pressure4(audioMasterCallback audioMaster) :
B = 0.2;
C = 1.0;
D = 1.0;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
muSpeedA = 10000;
muSpeedB = 10000;
muCoefficientA = 1;
diff --git a/plugins/WinVST/Pressure4/Pressure4.h b/plugins/WinVST/Pressure4/Pressure4.h
index 29d20eb..6cf3448 100755
--- a/plugins/WinVST/Pressure4/Pressure4.h
+++ b/plugins/WinVST/Pressure4/Pressure4.h
@@ -62,10 +62,8 @@ private:
double muSpeedB;
double muCoefficientA;
double muCoefficientB;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
float A;
diff --git a/plugins/WinVST/Pressure4/Pressure4Proc.cpp b/plugins/WinVST/Pressure4/Pressure4Proc.cpp
index 02b8a78..7e285df 100755
--- a/plugins/WinVST/Pressure4/Pressure4Proc.cpp
+++ b/plugins/WinVST/Pressure4/Pressure4Proc.cpp
@@ -43,9 +43,6 @@ void Pressure4::processReplacing(float **inputs, float **outputs, VstInt32 sampl
unmewiness = 1.0-mewiness;
}
// µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -195,27 +192,14 @@ void Pressure4::processReplacing(float **inputs, float **outputs, VstInt32 sampl
else {inputSampleR = -bridgerectifier;}
//second stage of overdrive to prevent overs and allow bloody loud extremeness
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
@@ -263,9 +247,6 @@ void Pressure4::processDoubleReplacing(double **inputs, double **outputs, VstInt
unmewiness = 1.0-mewiness;
}
// µ µ µ µ µ µ µ µ µ µ µ µ is the kitten song o/~
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -416,27 +397,16 @@ void Pressure4::processDoubleReplacing(double **inputs, double **outputs, VstInt
else {inputSampleR = -bridgerectifier;}
//second stage of overdrive to prevent overs and allow bloody loud extremeness
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*outputL = inputSampleL;
*outputR = inputSampleR;
diff --git a/plugins/WinVST/PurestConsoleBuss/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/PurestConsoleBuss/.vs/Console4Channel64/v14/.suo
index 777b846..777b846 100644..100755
--- a/plugins/WinVST/PurestConsoleBuss/.vs/Console4Channel64/v14/.suo
+++ b/plugins/WinVST/PurestConsoleBuss/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suo
index be45c22..892a377 100644..100755
--- a/plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.cpp b/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.cpp
index ed0b223..2d8e619 100644..100755
--- a/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.cpp
+++ b/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.cpp
@@ -12,11 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new P
PurestConsoleBuss::PurestConsoleBuss(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.h b/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.h
index 0d237ec..51495fc 100644..100755
--- a/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.h
+++ b/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
};
diff --git a/plugins/WinVST/PurestConsoleBuss/PurestConsoleBussProc.cpp b/plugins/WinVST/PurestConsoleBuss/PurestConsoleBussProc.cpp
index c06258a..6211eeb 100644..100755
--- a/plugins/WinVST/PurestConsoleBuss/PurestConsoleBussProc.cpp
+++ b/plugins/WinVST/PurestConsoleBuss/PurestConsoleBussProc.cpp
@@ -14,9 +14,6 @@ void PurestConsoleBuss::processReplacing(float **inputs, float **outputs, VstInt
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -74,25 +71,14 @@ void PurestConsoleBuss::processReplacing(float **inputs, float **outputs, VstInt
inputSampleR = asin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -111,9 +97,6 @@ void PurestConsoleBuss::processDoubleReplacing(double **inputs, double **outputs
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -171,25 +154,16 @@ void PurestConsoleBuss::processDoubleReplacing(double **inputs, double **outputs
inputSampleR = asin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/PurestConsoleBuss/VSTProject.sln b/plugins/WinVST/PurestConsoleBuss/VSTProject.sln
index 694b424..694b424 100644..100755
--- a/plugins/WinVST/PurestConsoleBuss/VSTProject.sln
+++ b/plugins/WinVST/PurestConsoleBuss/VSTProject.sln
diff --git a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj
index c4c86ff..c4c86ff 100644..100755
--- a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj
+++ b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj
diff --git a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.filters b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.filters
index 9a9d0ad..9a9d0ad 100644..100755
--- a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.filters
+++ b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.filters
diff --git a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.user b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.user
index 2216267..2216267 100644..100755
--- a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.user
+++ b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.user
diff --git a/plugins/WinVST/PurestConsoleBuss/vstplug.def b/plugins/WinVST/PurestConsoleBuss/vstplug.def
index 5bf499a..5bf499a 100644..100755
--- a/plugins/WinVST/PurestConsoleBuss/vstplug.def
+++ b/plugins/WinVST/PurestConsoleBuss/vstplug.def
diff --git a/plugins/WinVST/PurestConsoleChannel/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/PurestConsoleChannel/.vs/Console4Channel64/v14/.suo
index 777b846..777b846 100644..100755
--- a/plugins/WinVST/PurestConsoleChannel/.vs/Console4Channel64/v14/.suo
+++ b/plugins/WinVST/PurestConsoleChannel/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suo
index 506b762..1bcc2a5 100644..100755
--- a/plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.cpp b/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.cpp
index b9f3e04..35649a6 100644..100755
--- a/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.cpp
+++ b/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.cpp
@@ -12,11 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new P
PurestConsoleChannel::PurestConsoleChannel(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.h b/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.h
index c0a1648..51e728f 100644..100755
--- a/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.h
+++ b/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
};
diff --git a/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannelProc.cpp b/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannelProc.cpp
index 630cba7..2fc513a 100644..100755
--- a/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannelProc.cpp
+++ b/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannelProc.cpp
@@ -14,9 +14,6 @@ void PurestConsoleChannel::processReplacing(float **inputs, float **outputs, Vst
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -68,25 +65,14 @@ void PurestConsoleChannel::processReplacing(float **inputs, float **outputs, Vst
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -105,9 +91,6 @@ void PurestConsoleChannel::processDoubleReplacing(double **inputs, double **outp
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -159,25 +142,16 @@ void PurestConsoleChannel::processDoubleReplacing(double **inputs, double **outp
inputSampleR = sin(inputSampleR);
//amplitude aspect
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/PurestConsoleChannel/VSTProject.sln b/plugins/WinVST/PurestConsoleChannel/VSTProject.sln
index 694b424..694b424 100644..100755
--- a/plugins/WinVST/PurestConsoleChannel/VSTProject.sln
+++ b/plugins/WinVST/PurestConsoleChannel/VSTProject.sln
diff --git a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj
index 8ed20f5..8ed20f5 100644..100755
--- a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj
+++ b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj
diff --git a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.filters b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.filters
index 2e64344..2e64344 100644..100755
--- a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.filters
+++ b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.filters
diff --git a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.user b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.user
index 2216267..2216267 100644..100755
--- a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.user
+++ b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.user
diff --git a/plugins/WinVST/PurestConsoleChannel/vstplug.def b/plugins/WinVST/PurestConsoleChannel/vstplug.def
index 5bf499a..5bf499a 100644..100755
--- a/plugins/WinVST/PurestConsoleChannel/vstplug.def
+++ b/plugins/WinVST/PurestConsoleChannel/vstplug.def
diff --git a/plugins/WinVST/PurestDrive/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/PurestDrive/.vs/Console4Channel64/v14/.suo
index 777b846..777b846 100644..100755
--- a/plugins/WinVST/PurestDrive/.vs/Console4Channel64/v14/.suo
+++ b/plugins/WinVST/PurestDrive/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo
index 2c7648b..b079ddd 100644..100755
--- a/plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PurestDrive/PurestDrive.cpp b/plugins/WinVST/PurestDrive/PurestDrive.cpp
index e2451fe..a1d9264 100644..100755
--- a/plugins/WinVST/PurestDrive/PurestDrive.cpp
+++ b/plugins/WinVST/PurestDrive/PurestDrive.cpp
@@ -17,11 +17,8 @@ PurestDrive::PurestDrive(audioMasterCallback audioMaster) :
previousSampleL = 0.0;
previousSampleR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/PurestDrive/PurestDrive.h b/plugins/WinVST/PurestDrive/PurestDrive.h
index 1f5b349..abcd65b 100644..100755
--- a/plugins/WinVST/PurestDrive/PurestDrive.h
+++ b/plugins/WinVST/PurestDrive/PurestDrive.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double previousSampleL;
diff --git a/plugins/WinVST/PurestDrive/PurestDriveProc.cpp b/plugins/WinVST/PurestDrive/PurestDriveProc.cpp
index e453883..f5cc804 100644..100755
--- a/plugins/WinVST/PurestDrive/PurestDriveProc.cpp
+++ b/plugins/WinVST/PurestDrive/PurestDriveProc.cpp
@@ -14,9 +14,6 @@ void PurestDrive::processReplacing(float **inputs, float **outputs, VstInt32 sam
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = A;
double drySampleL;
@@ -90,25 +87,14 @@ void PurestDrive::processReplacing(float **inputs, float **outputs, VstInt32 sam
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -127,9 +113,6 @@ void PurestDrive::processDoubleReplacing(double **inputs, double **outputs, VstI
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = A;
double drySampleL;
@@ -204,25 +187,16 @@ void PurestDrive::processDoubleReplacing(double **inputs, double **outputs, VstI
previousSampleR = sin(drySampleR);
//apply the sine while storing previous sample
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/PurestDrive/VSTProject.sln b/plugins/WinVST/PurestDrive/VSTProject.sln
index 694b424..694b424 100644..100755
--- a/plugins/WinVST/PurestDrive/VSTProject.sln
+++ b/plugins/WinVST/PurestDrive/VSTProject.sln
diff --git a/plugins/WinVST/PurestDrive/VSTProject.vcxproj b/plugins/WinVST/PurestDrive/VSTProject.vcxproj
index 15515bd..15515bd 100644..100755
--- a/plugins/WinVST/PurestDrive/VSTProject.vcxproj
+++ b/plugins/WinVST/PurestDrive/VSTProject.vcxproj
diff --git a/plugins/WinVST/PurestDrive/VSTProject.vcxproj.filters b/plugins/WinVST/PurestDrive/VSTProject.vcxproj.filters
index 1f8d945..1f8d945 100644..100755
--- a/plugins/WinVST/PurestDrive/VSTProject.vcxproj.filters
+++ b/plugins/WinVST/PurestDrive/VSTProject.vcxproj.filters
diff --git a/plugins/WinVST/PurestDrive/VSTProject.vcxproj.user b/plugins/WinVST/PurestDrive/VSTProject.vcxproj.user
index 2216267..2216267 100644..100755
--- a/plugins/WinVST/PurestDrive/VSTProject.vcxproj.user
+++ b/plugins/WinVST/PurestDrive/VSTProject.vcxproj.user
diff --git a/plugins/WinVST/PurestDrive/vstplug.def b/plugins/WinVST/PurestDrive/vstplug.def
index 5bf499a..5bf499a 100644..100755
--- a/plugins/WinVST/PurestDrive/vstplug.def
+++ b/plugins/WinVST/PurestDrive/vstplug.def
diff --git a/plugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suo
index 1ddbf82..8746b94 100755
--- a/plugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PurestEcho/PurestEcho.cpp b/plugins/WinVST/PurestEcho/PurestEcho.cpp
index 6b8c302..6bcaa3f 100755
--- a/plugins/WinVST/PurestEcho/PurestEcho.cpp
+++ b/plugins/WinVST/PurestEcho/PurestEcho.cpp
@@ -19,11 +19,8 @@ PurestEcho::PurestEcho(audioMasterCallback audioMaster) :
E = 0.0;
for(int count = 0; count < totalsamples-1; count++) {dL[count] = 0;dR[count] = 0;}
gcount = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/PurestEcho/PurestEcho.h b/plugins/WinVST/PurestEcho/PurestEcho.h
index a298dd2..870e158 100755
--- a/plugins/WinVST/PurestEcho/PurestEcho.h
+++ b/plugins/WinVST/PurestEcho/PurestEcho.h
@@ -62,11 +62,8 @@ private:
int gcount;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/PurestEcho/PurestEchoProc.cpp b/plugins/WinVST/PurestEcho/PurestEchoProc.cpp
index 77e4b2f..e8e141c 100755
--- a/plugins/WinVST/PurestEcho/PurestEchoProc.cpp
+++ b/plugins/WinVST/PurestEcho/PurestEchoProc.cpp
@@ -76,9 +76,6 @@ void PurestEcho::processReplacing(float **inputs, float **outputs, VstInt32 samp
double delaysBufferL;
double delaysBufferR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -177,25 +174,14 @@ void PurestEcho::processReplacing(float **inputs, float **outputs, VstInt32 samp
gcount--;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -276,9 +262,6 @@ void PurestEcho::processDoubleReplacing(double **inputs, double **outputs, VstIn
double delaysBufferL;
double delaysBufferR;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -377,25 +360,16 @@ void PurestEcho::processDoubleReplacing(double **inputs, double **outputs, VstIn
gcount--;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/PurestGain/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/PurestGain/.vs/Console4Channel64/v14/.suo
index 777b846..777b846 100644..100755
--- a/plugins/WinVST/PurestGain/.vs/Console4Channel64/v14/.suo
+++ b/plugins/WinVST/PurestGain/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo
index 60f3507..774fc5c 100644..100755
--- a/plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PurestGain/PurestGain.cpp b/plugins/WinVST/PurestGain/PurestGain.cpp
index 3091a12..b1b77fe 100644..100755
--- a/plugins/WinVST/PurestGain/PurestGain.cpp
+++ b/plugins/WinVST/PurestGain/PurestGain.cpp
@@ -18,11 +18,8 @@ PurestGain::PurestGain(audioMasterCallback audioMaster) :
settingchase = -90.0;
gainBchase = -90.0;
chasespeed = 350.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/PurestGain/PurestGain.h b/plugins/WinVST/PurestGain/PurestGain.h
index 7869425..9e2baea 100644..100755
--- a/plugins/WinVST/PurestGain/PurestGain.h
+++ b/plugins/WinVST/PurestGain/PurestGain.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double gainchase;
double settingchase;
diff --git a/plugins/WinVST/PurestGain/PurestGainProc.cpp b/plugins/WinVST/PurestGain/PurestGainProc.cpp
index 38f2849..4aa6d96 100644..100755
--- a/plugins/WinVST/PurestGain/PurestGainProc.cpp
+++ b/plugins/WinVST/PurestGain/PurestGainProc.cpp
@@ -43,9 +43,6 @@ void PurestGain::processReplacing(float **inputs, float **outputs, VstInt32 samp
//done with slow fade controller
double outputgain;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -118,45 +115,19 @@ void PurestGain::processReplacing(float **inputs, float **outputs, VstInt32 samp
if (1.0 == outputgain)
{
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
*out1 = *in1;
*out2 = *in2;
} else {
inputSampleL *= outputgain;
inputSampleR *= outputgain;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
}
@@ -204,9 +175,6 @@ void PurestGain::processDoubleReplacing(double **inputs, double **outputs, VstIn
//done with slow fade controller
double outputgain;
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -273,45 +241,21 @@ void PurestGain::processDoubleReplacing(double **inputs, double **outputs, VstIn
if (1.0 == outputgain)
{
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
*out1 = *in1;
*out2 = *in2;
} else {
inputSampleL *= outputgain;
inputSampleR *= outputgain;
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
}
diff --git a/plugins/WinVST/PurestGain/VSTProject.sln b/plugins/WinVST/PurestGain/VSTProject.sln
index 694b424..694b424 100644..100755
--- a/plugins/WinVST/PurestGain/VSTProject.sln
+++ b/plugins/WinVST/PurestGain/VSTProject.sln
diff --git a/plugins/WinVST/PurestGain/VSTProject.vcxproj b/plugins/WinVST/PurestGain/VSTProject.vcxproj
index 4c5b244..4c5b244 100644..100755
--- a/plugins/WinVST/PurestGain/VSTProject.vcxproj
+++ b/plugins/WinVST/PurestGain/VSTProject.vcxproj
diff --git a/plugins/WinVST/PurestGain/VSTProject.vcxproj.filters b/plugins/WinVST/PurestGain/VSTProject.vcxproj.filters
index 9b1f09e..9b1f09e 100644..100755
--- a/plugins/WinVST/PurestGain/VSTProject.vcxproj.filters
+++ b/plugins/WinVST/PurestGain/VSTProject.vcxproj.filters
diff --git a/plugins/WinVST/PurestGain/VSTProject.vcxproj.user b/plugins/WinVST/PurestGain/VSTProject.vcxproj.user
index 2216267..2216267 100644..100755
--- a/plugins/WinVST/PurestGain/VSTProject.vcxproj.user
+++ b/plugins/WinVST/PurestGain/VSTProject.vcxproj.user
diff --git a/plugins/WinVST/PurestGain/vstplug.def b/plugins/WinVST/PurestGain/vstplug.def
index 5bf499a..5bf499a 100644..100755
--- a/plugins/WinVST/PurestGain/vstplug.def
+++ b/plugins/WinVST/PurestGain/vstplug.def
diff --git a/plugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suo
index 91f4254..4f4d82d 100755
--- a/plugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/PurestWarm/PurestWarm.cpp b/plugins/WinVST/PurestWarm/PurestWarm.cpp
index 475e845..eeee37b 100755
--- a/plugins/WinVST/PurestWarm/PurestWarm.cpp
+++ b/plugins/WinVST/PurestWarm/PurestWarm.cpp
@@ -13,11 +13,8 @@ PurestWarm::PurestWarm(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/PurestWarm/PurestWarm.h b/plugins/WinVST/PurestWarm/PurestWarm.h
index c67a91e..98bb0ce 100755
--- a/plugins/WinVST/PurestWarm/PurestWarm.h
+++ b/plugins/WinVST/PurestWarm/PurestWarm.h
@@ -52,11 +52,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/PurestWarm/PurestWarmProc.cpp b/plugins/WinVST/PurestWarm/PurestWarmProc.cpp
index b5a5070..101c931 100755
--- a/plugins/WinVST/PurestWarm/PurestWarmProc.cpp
+++ b/plugins/WinVST/PurestWarm/PurestWarmProc.cpp
@@ -14,9 +14,6 @@ void PurestWarm::processReplacing(float **inputs, float **outputs, VstInt32 samp
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int polarity = (int) ( A * 1.999 );
@@ -71,103 +68,55 @@ void PurestWarm::processReplacing(float **inputs, float **outputs, VstInt32 samp
if (inputSampleL < 0)
{
inputSampleL = -(sin(-inputSampleL*1.57079634)/1.57079634);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- }
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
}
-
if (inputSampleR < 0)
{
inputSampleR = -(sin(-inputSampleR*1.57079634)/1.57079634);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- }
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
}
-
} else {
-
if (inputSampleL > 0)
{
inputSampleL = sin(inputSampleL*1.57079634)/1.57079634;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- }
- }
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+ }
if (inputSampleR > 0)
{
inputSampleR = sin(inputSampleR*1.57079634)/1.57079634;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- }
- }
-
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
+ }
}
//that's it. Only applies on one half of the waveform, other half is passthrough untouched.
- //even the floating point noise shaping to the 32 bit buss is only applied as needed.
-
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -186,9 +135,6 @@ void PurestWarm::processDoubleReplacing(double **inputs, double **outputs, VstIn
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
int polarity = (int) ( A * 1.999 );
@@ -243,103 +189,63 @@ void PurestWarm::processDoubleReplacing(double **inputs, double **outputs, VstIn
if (inputSampleL < 0)
{
inputSampleL = -(sin(-inputSampleL*1.57079634)/1.57079634);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
}
if (inputSampleR < 0)
{
inputSampleR = -(sin(-inputSampleR*1.57079634)/1.57079634);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
}
-
} else {
-
if (inputSampleL > 0)
{
inputSampleL = sin(inputSampleL*1.57079634)/1.57079634;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
}
-
if (inputSampleR > 0)
{
inputSampleR = sin(inputSampleR*1.57079634)/1.57079634;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- } else {
- if (fpFlip) {
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- } else {
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- }
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
}
-
}
//that's it. Only applies on one half of the waveform, other half is passthrough untouched.
- //even the floating point noise shaping to the 32 bit buss is only applied as needed.
-
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Pyewacket/.vs/VSTProject/v14/.suo b/plugins/WinVST/Pyewacket/.vs/VSTProject/v14/.suo
index be9ac10..ac34ff7 100755
--- a/plugins/WinVST/Pyewacket/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Pyewacket/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Pyewacket/Pyewacket.cpp b/plugins/WinVST/Pyewacket/Pyewacket.cpp
index ee2db40..d500e74 100755
--- a/plugins/WinVST/Pyewacket/Pyewacket.cpp
+++ b/plugins/WinVST/Pyewacket/Pyewacket.cpp
@@ -18,11 +18,8 @@ Pyewacket::Pyewacket(audioMasterCallback audioMaster) :
chase = 1.0;
lastrectifierL = 0.0;
lastrectifierR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Pyewacket/Pyewacket.h b/plugins/WinVST/Pyewacket/Pyewacket.h
index 593001f..087a198 100755
--- a/plugins/WinVST/Pyewacket/Pyewacket.h
+++ b/plugins/WinVST/Pyewacket/Pyewacket.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double chase;
double lastrectifierL;
diff --git a/plugins/WinVST/Pyewacket/PyewacketProc.cpp b/plugins/WinVST/Pyewacket/PyewacketProc.cpp
index 83112a2..8b3021a 100755
--- a/plugins/WinVST/Pyewacket/PyewacketProc.cpp
+++ b/plugins/WinVST/Pyewacket/PyewacketProc.cpp
@@ -17,9 +17,8 @@ void Pyewacket::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
+ long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double drySampleL;
@@ -134,25 +133,14 @@ void Pyewacket::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR *= outputGain;
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -174,9 +162,8 @@ void Pyewacket::processDoubleReplacing(double **inputs, double **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
+ long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double drySampleL;
@@ -291,25 +278,16 @@ void Pyewacket::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR *= outputGain;
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Righteous4/.vs/VSTProject/v14/.suo b/plugins/WinVST/Righteous4/.vs/VSTProject/v14/.suo
index f2ac424..4b43c9e 100755
--- a/plugins/WinVST/Righteous4/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Righteous4/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Righteous4/Righteous4Proc.cpp b/plugins/WinVST/Righteous4/Righteous4Proc.cpp
index 7ed44cf..630360f 100755
--- a/plugins/WinVST/Righteous4/Righteous4Proc.cpp
+++ b/plugins/WinVST/Righteous4/Righteous4Proc.cpp
@@ -300,17 +300,14 @@ void Righteous4::processReplacing(float **inputs, float **outputs, VstInt32 samp
//output dither section
if (bitDepth == 3) {
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
} else {
//entire Naturalize section used when not on 32 bit out
@@ -515,12 +512,6 @@ void Righteous4::processReplacing(float **inputs, float **outputs, VstInt32 samp
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -529,11 +520,11 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
+ long double fpNew = 1.0 - fpOld;
double IIRscaleback = 0.0002597;//scaleback of harmonic avg
IIRscaleback /= overallscale;
IIRscaleback = 1.0 - IIRscaleback;
@@ -816,17 +807,16 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn
//output dither section
if (bitDepth == 3) {
- //noise shaping to 32-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
} else {
//entire Naturalize section used when not on 32 bit out
@@ -1031,10 +1021,4 @@ void Righteous4::processDoubleReplacing(double **inputs, double **outputs, VstIn
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
} \ No newline at end of file
diff --git a/plugins/WinVST/SideDull/.vs/VSTProject/v14/.suo b/plugins/WinVST/SideDull/.vs/VSTProject/v14/.suo
index 68a45bd..20df521 100755
--- a/plugins/WinVST/SideDull/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/SideDull/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/SideDull/SideDull.cpp b/plugins/WinVST/SideDull/SideDull.cpp
index 547f1fd..479bdfd 100755
--- a/plugins/WinVST/SideDull/SideDull.cpp
+++ b/plugins/WinVST/SideDull/SideDull.cpp
@@ -16,10 +16,8 @@ SideDull::SideDull(audioMasterCallback audioMaster) :
iirSampleA = 0.0;
iirSampleB = 0.0;
flip = true;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/SideDull/SideDull.h b/plugins/WinVST/SideDull/SideDull.h
index 6f431ac..ef5e892 100755
--- a/plugins/WinVST/SideDull/SideDull.h
+++ b/plugins/WinVST/SideDull/SideDull.h
@@ -55,10 +55,8 @@ private:
double iirSampleA;
double iirSampleB;
bool flip;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
float A;
};
diff --git a/plugins/WinVST/SideDull/SideDullProc.cpp b/plugins/WinVST/SideDull/SideDullProc.cpp
index 347e5e8..7b77744 100755
--- a/plugins/WinVST/SideDull/SideDullProc.cpp
+++ b/plugins/WinVST/SideDull/SideDullProc.cpp
@@ -17,9 +17,6 @@ void SideDull::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -88,27 +85,14 @@ void SideDull::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -130,9 +114,6 @@ void SideDull::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -201,27 +182,16 @@ void SideDull::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Sidepass/.vs/VSTProject/v14/.suo b/plugins/WinVST/Sidepass/.vs/VSTProject/v14/.suo
index 5aee656..f8060d2 100755
--- a/plugins/WinVST/Sidepass/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Sidepass/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Sidepass/Sidepass.cpp b/plugins/WinVST/Sidepass/Sidepass.cpp
index 98f6f3a..a28c212 100755
--- a/plugins/WinVST/Sidepass/Sidepass.cpp
+++ b/plugins/WinVST/Sidepass/Sidepass.cpp
@@ -16,10 +16,8 @@ Sidepass::Sidepass(audioMasterCallback audioMaster) :
iirSampleA = 0.0;
iirSampleB = 0.0;
flip = true;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Sidepass/Sidepass.h b/plugins/WinVST/Sidepass/Sidepass.h
index 0e496f5..1b31b91 100755
--- a/plugins/WinVST/Sidepass/Sidepass.h
+++ b/plugins/WinVST/Sidepass/Sidepass.h
@@ -55,10 +55,8 @@ private:
double iirSampleA;
double iirSampleB;
bool flip;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/Sidepass/SidepassProc.cpp b/plugins/WinVST/Sidepass/SidepassProc.cpp
index d022df3..834ae3e 100755
--- a/plugins/WinVST/Sidepass/SidepassProc.cpp
+++ b/plugins/WinVST/Sidepass/SidepassProc.cpp
@@ -17,9 +17,6 @@ void Sidepass::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double iirAmount = pow(A,3)/overallscale;
long double inputSampleL;
long double inputSampleR;
@@ -87,25 +84,14 @@ void Sidepass::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -127,9 +113,6 @@ void Sidepass::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double iirAmount = pow(A,3)/overallscale;
long double inputSampleL;
long double inputSampleR;
@@ -197,25 +180,16 @@ void Sidepass::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/SingleEndedTriode/.vs/VSTProject/v14/.suo b/plugins/WinVST/SingleEndedTriode/.vs/VSTProject/v14/.suo
index 43b7f80..bb9d2da 100755
--- a/plugins/WinVST/SingleEndedTriode/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/SingleEndedTriode/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/SingleEndedTriode/SingleEndedTriodeProc.cpp b/plugins/WinVST/SingleEndedTriode/SingleEndedTriodeProc.cpp
index 5781165..ef6694c 100755
--- a/plugins/WinVST/SingleEndedTriode/SingleEndedTriodeProc.cpp
+++ b/plugins/WinVST/SingleEndedTriode/SingleEndedTriodeProc.cpp
@@ -127,18 +127,14 @@ void SingleEndedTriode::processReplacing(float **inputs, float **outputs, VstInt
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -148,12 +144,6 @@ void SingleEndedTriode::processReplacing(float **inputs, float **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -276,18 +266,16 @@ void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -297,10 +285,4 @@ void SingleEndedTriode::processDoubleReplacing(double **inputs, double **outputs
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
} \ No newline at end of file
diff --git a/plugins/WinVST/Slew/.vs/VSTProject/v14/.suo b/plugins/WinVST/Slew/.vs/VSTProject/v14/.suo
index 95f3018..8207f2c 100755
--- a/plugins/WinVST/Slew/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Slew/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Slew2/.vs/VSTProject/v14/.suo b/plugins/WinVST/Slew2/.vs/VSTProject/v14/.suo
index b0d4c72..24ab216 100755
--- a/plugins/WinVST/Slew2/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Slew2/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suo b/plugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suo
index 19a25dd..1a25a67 100755
--- a/plugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Spiral/.vs/VSTProject/v14/.suo b/plugins/WinVST/Spiral/.vs/VSTProject/v14/.suo
index 396d743..f9037d1 100755
--- a/plugins/WinVST/Spiral/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Spiral/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Spiral/SpiralProc.cpp b/plugins/WinVST/Spiral/SpiralProc.cpp
index d43a93a..4aea5bc 100755
--- a/plugins/WinVST/Spiral/SpiralProc.cpp
+++ b/plugins/WinVST/Spiral/SpiralProc.cpp
@@ -60,18 +60,14 @@ void Spiral::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
inputSampleL = sin(inputSampleL * fabs(inputSampleL)) / ((inputSampleL == 0.0) ?1:fabs(inputSampleL));
inputSampleR = sin(inputSampleR * fabs(inputSampleR)) / ((inputSampleR == 0.0) ?1:fabs(inputSampleR));
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -81,12 +77,6 @@ void Spiral::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -142,18 +132,16 @@ void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleL = sin(inputSampleL * fabs(inputSampleL)) / ((inputSampleL == 0.0) ?1:fabs(inputSampleL));
inputSampleR = sin(inputSampleR * fabs(inputSampleR)) / ((inputSampleR == 0.0) ?1:fabs(inputSampleR));
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -163,10 +151,4 @@ void Spiral::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/Spiral2/.vs/VSTProject/v14/.suo b/plugins/WinVST/Spiral2/.vs/VSTProject/v14/.suo
index 7779c05..41c371a 100755
--- a/plugins/WinVST/Spiral2/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Spiral2/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Spiral2/Spiral2Proc.cpp b/plugins/WinVST/Spiral2/Spiral2Proc.cpp
index d309448..a8669c5 100755
--- a/plugins/WinVST/Spiral2/Spiral2Proc.cpp
+++ b/plugins/WinVST/Spiral2/Spiral2Proc.cpp
@@ -118,18 +118,14 @@ void Spiral2::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
prevSampleR = drySampleR;
flip = !flip;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -139,12 +135,6 @@ void Spiral2::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -259,18 +249,16 @@ void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32
prevSampleR = drySampleR;
flip = !flip;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -280,10 +268,4 @@ void Spiral2::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/StarChild/.vs/VSTProject/v14/.suo b/plugins/WinVST/StarChild/.vs/VSTProject/v14/.suo
index 1c72906..c3b6d23 100755
--- a/plugins/WinVST/StarChild/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/StarChild/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/StarChild/StarChild.cpp b/plugins/WinVST/StarChild/StarChild.cpp
index 84becbc..1b29d50 100755
--- a/plugins/WinVST/StarChild/StarChild.cpp
+++ b/plugins/WinVST/StarChild/StarChild.cpp
@@ -65,11 +65,8 @@ StarChild::StarChild(audioMasterCallback audioMaster) :
increment = 1;
dutyCycle = 1;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/StarChild/StarChild.h b/plugins/WinVST/StarChild/StarChild.h
index 7ae986a..630be3c 100755
--- a/plugins/WinVST/StarChild/StarChild.h
+++ b/plugins/WinVST/StarChild/StarChild.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double d[45102];
diff --git a/plugins/WinVST/StarChild/StarChildProc.cpp b/plugins/WinVST/StarChild/StarChildProc.cpp
index 03c8e31..047948a 100755
--- a/plugins/WinVST/StarChild/StarChildProc.cpp
+++ b/plugins/WinVST/StarChild/StarChildProc.cpp
@@ -14,9 +14,6 @@ void StarChild::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -392,25 +389,14 @@ void StarChild::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR += drySampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -429,9 +415,6 @@ void StarChild::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double drySampleL;
double drySampleR;
@@ -807,25 +790,16 @@ void StarChild::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR += drySampleR;
//here we combine the tanks with the dry signal
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/StereoFX/.vs/VSTProject/v14/.suo b/plugins/WinVST/StereoFX/.vs/VSTProject/v14/.suo
index 61fb690..3d0e385 100755
--- a/plugins/WinVST/StereoFX/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/StereoFX/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/StereoFX/StereoFX.cpp b/plugins/WinVST/StereoFX/StereoFX.cpp
index 63c23db..704cbf3 100755
--- a/plugins/WinVST/StereoFX/StereoFX.cpp
+++ b/plugins/WinVST/StereoFX/StereoFX.cpp
@@ -17,10 +17,8 @@ StereoFX::StereoFX(audioMasterCallback audioMaster) :
C = 0.0;
iirSampleA = 0.0;
iirSampleB = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
flip = false;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/WinVST/StereoFX/StereoFX.h b/plugins/WinVST/StereoFX/StereoFX.h
index 6748d1e..7a36059 100755
--- a/plugins/WinVST/StereoFX/StereoFX.h
+++ b/plugins/WinVST/StereoFX/StereoFX.h
@@ -56,10 +56,8 @@ private:
double iirSampleA;
double iirSampleB;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
//default stuff
diff --git a/plugins/WinVST/StereoFX/StereoFXProc.cpp b/plugins/WinVST/StereoFX/StereoFXProc.cpp
index 49be44f..0e9de74 100755
--- a/plugins/WinVST/StereoFX/StereoFXProc.cpp
+++ b/plugins/WinVST/StereoFX/StereoFXProc.cpp
@@ -17,9 +17,6 @@ void StereoFX::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double mid;
@@ -138,25 +135,14 @@ void StereoFX::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -178,9 +164,6 @@ void StereoFX::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
long double mid;
@@ -299,25 +282,16 @@ void StereoFX::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/SubsOnly/.vs/VSTProject/v14/.suo b/plugins/WinVST/SubsOnly/.vs/VSTProject/v14/.suo
index 62beaf4..048e45d 100755
--- a/plugins/WinVST/SubsOnly/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/SubsOnly/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Surge/.vs/VSTProject/v14/.suo b/plugins/WinVST/Surge/.vs/VSTProject/v14/.suo
index 03e6045..5bdfe99 100755
--- a/plugins/WinVST/Surge/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Surge/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Surge/Surge.cpp b/plugins/WinVST/Surge/Surge.cpp
index 711c0df..222fbcf 100755
--- a/plugins/WinVST/Surge/Surge.cpp
+++ b/plugins/WinVST/Surge/Surge.cpp
@@ -12,10 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new S
Surge::Surge(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
flip = true;
chaseA = 0.0;
chaseB = 0.0;
diff --git a/plugins/WinVST/Surge/Surge.h b/plugins/WinVST/Surge/Surge.h
index 0e485c3..7f42c9f 100755
--- a/plugins/WinVST/Surge/Surge.h
+++ b/plugins/WinVST/Surge/Surge.h
@@ -53,10 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
long double chaseA;
long double chaseB;
diff --git a/plugins/WinVST/Surge/SurgeProc.cpp b/plugins/WinVST/Surge/SurgeProc.cpp
index 7a72b2f..cd82bad 100755
--- a/plugins/WinVST/Surge/SurgeProc.cpp
+++ b/plugins/WinVST/Surge/SurgeProc.cpp
@@ -17,9 +17,6 @@ void Surge::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -120,27 +117,14 @@ void Surge::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -162,9 +146,6 @@ void Surge::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -264,27 +245,16 @@ void Surge::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/SurgeTide/.vs/VSTProject/v14/.suo b/plugins/WinVST/SurgeTide/.vs/VSTProject/v14/.suo
index 17702f9..c4b7709 100755
--- a/plugins/WinVST/SurgeTide/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/SurgeTide/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/SurgeTide/SurgeTide.cpp b/plugins/WinVST/SurgeTide/SurgeTide.cpp
index 8df46c0..494e886 100755
--- a/plugins/WinVST/SurgeTide/SurgeTide.cpp
+++ b/plugins/WinVST/SurgeTide/SurgeTide.cpp
@@ -15,10 +15,8 @@ SurgeTide::SurgeTide(audioMasterCallback audioMaster) :
A = 0.5;
B = 0.3;
C = 1.0;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
flip = true;
chaseA = 0.0;
chaseB = 0.0;
diff --git a/plugins/WinVST/SurgeTide/SurgeTide.h b/plugins/WinVST/SurgeTide/SurgeTide.h
index 27495d7..8f8cd42 100755
--- a/plugins/WinVST/SurgeTide/SurgeTide.h
+++ b/plugins/WinVST/SurgeTide/SurgeTide.h
@@ -54,10 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
long double chaseA;
long double chaseB;
diff --git a/plugins/WinVST/SurgeTide/SurgeTideProc.cpp b/plugins/WinVST/SurgeTide/SurgeTideProc.cpp
index 2fc6a1a..59a92aa 100755
--- a/plugins/WinVST/SurgeTide/SurgeTideProc.cpp
+++ b/plugins/WinVST/SurgeTide/SurgeTideProc.cpp
@@ -17,9 +17,6 @@ void SurgeTide::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -110,27 +107,14 @@ void SurgeTide::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -152,9 +136,6 @@ void SurgeTide::processDoubleReplacing(double **inputs, double **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -245,27 +226,16 @@ void SurgeTide::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR = drySampleR - (inputSampleR * intensity);
inputSampleR = (drySampleR * dry) + (inputSampleR * wet);
- //noise shaping to 64-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Swell/.vs/VSTProject/v14/.suo b/plugins/WinVST/Swell/.vs/VSTProject/v14/.suo
index f1f16de..3124884 100755
--- a/plugins/WinVST/Swell/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Swell/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Swell/Swell.cpp b/plugins/WinVST/Swell/Swell.cpp
index 30518d8..e197cfb 100755
--- a/plugins/WinVST/Swell/Swell.cpp
+++ b/plugins/WinVST/Swell/Swell.cpp
@@ -21,11 +21,8 @@ Swell::Swell(audioMasterCallback audioMaster) :
louderL = false;
louderR = false;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Swell/Swell.h b/plugins/WinVST/Swell/Swell.h
index c383df2..7c108b7 100755
--- a/plugins/WinVST/Swell/Swell.h
+++ b/plugins/WinVST/Swell/Swell.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
diff --git a/plugins/WinVST/Swell/SwellProc.cpp b/plugins/WinVST/Swell/SwellProc.cpp
index 28c0aba..3ab1e9b 100755
--- a/plugins/WinVST/Swell/SwellProc.cpp
+++ b/plugins/WinVST/Swell/SwellProc.cpp
@@ -17,9 +17,6 @@ void Swell::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double thresholdOn = pow(A,2) * B;
double speedOn = (pow(B,2)*0.001)/overallscale;
@@ -97,25 +94,14 @@ void Swell::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -137,9 +123,6 @@ void Swell::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double thresholdOn = pow(A,2) * B;
double speedOn = (pow(B,2)*0.001)/overallscale;
@@ -217,25 +200,16 @@ void Swell::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/TapeDelay/.vs/VSTProject/v14/.suo b/plugins/WinVST/TapeDelay/.vs/VSTProject/v14/.suo
index 0fe2d39..9acad64 100755
--- a/plugins/WinVST/TapeDelay/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/TapeDelay/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/TapeDelay/TapeDelayProc.cpp b/plugins/WinVST/TapeDelay/TapeDelayProc.cpp
index 43fa743..e2f1ade 100755
--- a/plugins/WinVST/TapeDelay/TapeDelayProc.cpp
+++ b/plugins/WinVST/TapeDelay/TapeDelayProc.cpp
@@ -156,18 +156,14 @@ void TapeDelay::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleL = (inputSampleL * dry) + (dL[delay] * wet);
inputSampleR = (inputSampleR * dry) + (dR[delay] * wet);
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -177,12 +173,6 @@ void TapeDelay::processReplacing(float **inputs, float **outputs, VstInt32 sampl
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -333,18 +323,16 @@ void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleL = (inputSampleL * dry) + (dL[delay] * wet);
inputSampleR = (inputSampleR * dry) + (dR[delay] * wet);
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -354,10 +342,4 @@ void TapeDelay::processDoubleReplacing(double **inputs, double **outputs, VstInt
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/TapeDust/.vs/VSTProject/v14/.suo b/plugins/WinVST/TapeDust/.vs/VSTProject/v14/.suo
index df95641..26bc0ab 100755
--- a/plugins/WinVST/TapeDust/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/TapeDust/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/TapeDust/TapeDust.cpp b/plugins/WinVST/TapeDust/TapeDust.cpp
index 9638c14..0ce16e0 100755
--- a/plugins/WinVST/TapeDust/TapeDust.cpp
+++ b/plugins/WinVST/TapeDust/TapeDust.cpp
@@ -22,10 +22,8 @@ TapeDust::TapeDust(audioMasterCallback audioMaster) :
fR[count] = 0.0;
}
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
fpFlip = true;
//this is reset: values being initialized only once. Startup values, whatever they are.
diff --git a/plugins/WinVST/TapeDust/TapeDust.h b/plugins/WinVST/TapeDust/TapeDust.h
index 7b3a7fd..facbf40 100755
--- a/plugins/WinVST/TapeDust/TapeDust.h
+++ b/plugins/WinVST/TapeDust/TapeDust.h
@@ -53,10 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool fpFlip;
//default stuff
diff --git a/plugins/WinVST/TapeDust/TapeDustProc.cpp b/plugins/WinVST/TapeDust/TapeDustProc.cpp
index 3d6588d..429a366 100755
--- a/plugins/WinVST/TapeDust/TapeDustProc.cpp
+++ b/plugins/WinVST/TapeDust/TapeDustProc.cpp
@@ -13,9 +13,6 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -93,6 +90,7 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleL = -inputSampleL;
inputSampleR = -inputSampleR;
}
+ fpFlip = !fpFlip;
for(int count = 0; count < 9; count++) {
if (gainL > 1.0) {
@@ -120,25 +118,14 @@ void TapeDust::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -156,9 +143,6 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -236,6 +220,7 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleL = -inputSampleL;
inputSampleR = -inputSampleR;
}
+ fpFlip = !fpFlip;
for(int count = 0; count < 9; count++) {
if (gainL > 1.0) {
@@ -263,25 +248,16 @@ void TapeDust::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/TapeFat/.vs/VSTProject/v14/.suo b/plugins/WinVST/TapeFat/.vs/VSTProject/v14/.suo
index e41410c..39f1ea5 100755
--- a/plugins/WinVST/TapeFat/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/TapeFat/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/TapeFat/TapeFatProc.cpp b/plugins/WinVST/TapeFat/TapeFatProc.cpp
index 3f81d20..8eb0e98 100755
--- a/plugins/WinVST/TapeFat/TapeFatProc.cpp
+++ b/plugins/WinVST/TapeFat/TapeFatProc.cpp
@@ -119,18 +119,14 @@ void TapeFat::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
gcount--;
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -140,12 +136,6 @@ void TapeFat::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -260,18 +250,16 @@ void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32
gcount--;
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -281,10 +269,4 @@ void TapeFat::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/Thunder/.vs/VSTProject/v14/.suo b/plugins/WinVST/Thunder/.vs/VSTProject/v14/.suo
index b01488d..a6a6a16 100755
--- a/plugins/WinVST/Thunder/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Thunder/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Thunder/Thunder.cpp b/plugins/WinVST/Thunder/Thunder.cpp
index 015eabd..7bc8226 100755
--- a/plugins/WinVST/Thunder/Thunder.cpp
+++ b/plugins/WinVST/Thunder/Thunder.cpp
@@ -15,10 +15,8 @@ Thunder::Thunder(audioMasterCallback audioMaster) :
A = 0.0;
B = 1.0;
- fpNShapeAL = 0.0;
- fpNShapeBL = 0.0;
- fpNShapeAR = 0.0;
- fpNShapeBR = 0.0;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
muSpeedA = 10000;
muSpeedB = 10000;
muCoefficientA = 1;
diff --git a/plugins/WinVST/Thunder/Thunder.h b/plugins/WinVST/Thunder/Thunder.h
index 1ef1d03..9e49054 100755
--- a/plugins/WinVST/Thunder/Thunder.h
+++ b/plugins/WinVST/Thunder/Thunder.h
@@ -69,10 +69,8 @@ private:
double iirSampleAM;
double iirSampleBM;
double iirSampleCM;
- long double fpNShapeAL;
- long double fpNShapeBL;
- long double fpNShapeAR;
- long double fpNShapeBR;
+ long double fpNShapeL;
+ long double fpNShapeR;
bool flip;
float A;
diff --git a/plugins/WinVST/Thunder/ThunderProc.cpp b/plugins/WinVST/Thunder/ThunderProc.cpp
index bd401d4..2cf454d 100755
--- a/plugins/WinVST/Thunder/ThunderProc.cpp
+++ b/plugins/WinVST/Thunder/ThunderProc.cpp
@@ -40,9 +40,6 @@ void Thunder::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double resultML;
double resultMR;
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -225,27 +222,14 @@ void Thunder::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
inputSampleR *= outputGain;
}
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
@@ -291,9 +275,6 @@ void Thunder::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double resultML;
double resultMR;
- double fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -476,27 +457,16 @@ void Thunder::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR *= outputGain;
}
- //noise shaping to 32-bit floating point
- if (flip) {
- fpTemp = inputSampleL;
- fpNShapeAL = (fpNShapeAL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeAL;
-
- fpTemp = inputSampleR;
- fpNShapeAR = (fpNShapeAR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeAR;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeBL = (fpNShapeBL*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeBL;
-
- fpTemp = inputSampleR;
- fpNShapeBR = (fpNShapeBR*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeBR;
- }
- flip = !flip;
- //end noise shaping on 32 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
diff --git a/plugins/WinVST/ToTape5/.vs/VSTProject/v14/.suo b/plugins/WinVST/ToTape5/.vs/VSTProject/v14/.suo
index b0c4487..f15fde2 100755
--- a/plugins/WinVST/ToTape5/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/ToTape5/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/ToTape5/ToTape5.cpp b/plugins/WinVST/ToTape5/ToTape5.cpp
index 01f61cb..6136aaf 100755
--- a/plugins/WinVST/ToTape5/ToTape5.cpp
+++ b/plugins/WinVST/ToTape5/ToTape5.cpp
@@ -98,11 +98,8 @@ ToTape5::ToTape5(audioMasterCallback audioMaster) :
hcount = 0;
flip = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/ToTape5/ToTape5.h b/plugins/WinVST/ToTape5/ToTape5.h
index ac26df5..d049014 100755
--- a/plugins/WinVST/ToTape5/ToTape5.h
+++ b/plugins/WinVST/ToTape5/ToTape5.h
@@ -140,11 +140,8 @@ private:
double iirSampleZR;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/ToTape5/ToTape5Proc.cpp b/plugins/WinVST/ToTape5/ToTape5Proc.cpp
index 4d2d5c7..5824f80 100755
--- a/plugins/WinVST/ToTape5/ToTape5Proc.cpp
+++ b/plugins/WinVST/ToTape5/ToTape5Proc.cpp
@@ -17,7 +17,7 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
-
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
double inputgain = pow(A+1.0,3);
double outputgain = E;
double wet = F;
@@ -63,9 +63,6 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double tempSampleR;
double drySampleR;
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -358,25 +355,14 @@ void ToTape5::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -398,7 +384,7 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
-
+ long double fpOld = 0.618033988749894848204586; //golden ratio!
double inputgain = pow(A+1.0,3);
double outputgain = E;
double wet = F;
@@ -443,10 +429,6 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double bridgerectifierR;
double tempSampleR;
double drySampleR;
-
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -738,25 +720,16 @@ void ToTape5::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/ToVinyl4/.vs/VSTProject/v14/.suo b/plugins/WinVST/ToVinyl4/.vs/VSTProject/v14/.suo
index 33b5837..2369dee 100755
--- a/plugins/WinVST/ToVinyl4/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/ToVinyl4/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/ToVinyl4/ToVinyl4.cpp b/plugins/WinVST/ToVinyl4/ToVinyl4.cpp
index b0c91f8..429187c 100755
--- a/plugins/WinVST/ToVinyl4/ToVinyl4.cpp
+++ b/plugins/WinVST/ToVinyl4/ToVinyl4.cpp
@@ -87,11 +87,8 @@ ToVinyl4::ToVinyl4(audioMasterCallback audioMaster) :
B = 0.3424051; //44.0 hz = ((B*B)*290)+10 (B*B)*290 = 34 (B*B) = 0.1172413 sqrt() = 0.3424051
C = 0.32;
D = 0.064;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/ToVinyl4/ToVinyl4.h b/plugins/WinVST/ToVinyl4/ToVinyl4.h
index 57bffac..6a2dc26 100755
--- a/plugins/WinVST/ToVinyl4/ToVinyl4.h
+++ b/plugins/WinVST/ToVinyl4/ToVinyl4.h
@@ -142,11 +142,8 @@ private:
double bMidPrev;
double bSidePrev;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/ToVinyl4/ToVinyl4Proc.cpp b/plugins/WinVST/ToVinyl4/ToVinyl4Proc.cpp
index 8d9dc0c..a67af99 100755
--- a/plugins/WinVST/ToVinyl4/ToVinyl4Proc.cpp
+++ b/plugins/WinVST/ToVinyl4/ToVinyl4Proc.cpp
@@ -17,9 +17,6 @@ void ToVinyl4::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double fusswithscale = 50000; //corrected
double cutofffreq = ((A*A)*290.0)+10.0;
@@ -464,25 +461,14 @@ void ToVinyl4::processReplacing(float **inputs, float **outputs, VstInt32 sample
inputSampleR = accumulatorSample;
//we just re-use accumulatorSample to do this little shuffle
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -504,9 +490,6 @@ void ToVinyl4::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double fusswithscale = 50000; //corrected
double cutofffreq = ((A*A)*290.0)+10.0;
@@ -950,25 +933,16 @@ void ToVinyl4::processDoubleReplacing(double **inputs, double **outputs, VstInt3
inputSampleR = accumulatorSample;
//we just re-use accumulatorSample to do this little shuffle
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/ToneSlant/.vs/VSTProject/v14/.suo b/plugins/WinVST/ToneSlant/.vs/VSTProject/v14/.suo
index b31a1bb..4d673ae 100755
--- a/plugins/WinVST/ToneSlant/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/ToneSlant/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/ToneSlant/ToneSlant.cpp b/plugins/WinVST/ToneSlant/ToneSlant.cpp
index 0ed3618..d99fa60 100755
--- a/plugins/WinVST/ToneSlant/ToneSlant.cpp
+++ b/plugins/WinVST/ToneSlant/ToneSlant.cpp
@@ -15,11 +15,8 @@ ToneSlant::ToneSlant(audioMasterCallback audioMaster) :
A = 0.0;
B = 0.0;
for(int count = 0; count < 102; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;}
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/ToneSlant/ToneSlant.h b/plugins/WinVST/ToneSlant/ToneSlant.h
index 655cc55..7c52bca 100755
--- a/plugins/WinVST/ToneSlant/ToneSlant.h
+++ b/plugins/WinVST/ToneSlant/ToneSlant.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/ToneSlant/ToneSlantProc.cpp b/plugins/WinVST/ToneSlant/ToneSlantProc.cpp
index b594b05..d78cfb5 100755
--- a/plugins/WinVST/ToneSlant/ToneSlantProc.cpp
+++ b/plugins/WinVST/ToneSlant/ToneSlantProc.cpp
@@ -14,9 +14,6 @@ void ToneSlant::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputSampleL;
double inputSampleR;
@@ -109,25 +106,14 @@ void ToneSlant::processReplacing(float **inputs, float **outputs, VstInt32 sampl
inputSampleR += (correctionSampleR * applySlant);
//our one math operation on the input data coming in
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -146,9 +132,6 @@ void ToneSlant::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double inputSampleL;
double inputSampleR;
@@ -240,25 +223,16 @@ void ToneSlant::processDoubleReplacing(double **inputs, double **outputs, VstInt
inputSampleR += (correctionSampleR * applySlant);
//our one math operation on the input data coming in
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/TransDesk/.vs/VSTProject/v14/.suo b/plugins/WinVST/TransDesk/.vs/VSTProject/v14/.suo
index 1e5676d..831f593 100755
--- a/plugins/WinVST/TransDesk/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/TransDesk/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/TransDesk/TransDesk.cpp b/plugins/WinVST/TransDesk/TransDesk.cpp
index 24443bd..3f352f7 100755
--- a/plugins/WinVST/TransDesk/TransDesk.cpp
+++ b/plugins/WinVST/TransDesk/TransDesk.cpp
@@ -25,11 +25,8 @@ TransDesk::TransDesk(audioMasterCallback audioMaster) :
lastOutSampleR = 0.0;
lastSlewR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/TransDesk/TransDesk.h b/plugins/WinVST/TransDesk/TransDesk.h
index b3b891d..5729b4c 100755
--- a/plugins/WinVST/TransDesk/TransDesk.h
+++ b/plugins/WinVST/TransDesk/TransDesk.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
int gcount;
diff --git a/plugins/WinVST/TransDesk/TransDeskProc.cpp b/plugins/WinVST/TransDesk/TransDeskProc.cpp
index c7df5e8..c8b45c2 100755
--- a/plugins/WinVST/TransDesk/TransDeskProc.cpp
+++ b/plugins/WinVST/TransDesk/TransDeskProc.cpp
@@ -17,9 +17,6 @@ void TransDesk::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = 0.02198359;
double depthA = 3.0;
@@ -200,25 +197,14 @@ void TransDesk::processReplacing(float **inputs, float **outputs, VstInt32 sampl
gcount--;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -240,9 +226,6 @@ void TransDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = 0.02198359;
double depthA = 3.0;
@@ -423,25 +406,16 @@ void TransDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt
gcount--;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/Tremolo/.vs/VSTProject/v14/.suo b/plugins/WinVST/Tremolo/.vs/VSTProject/v14/.suo
index 9d04545..5806490 100755
--- a/plugins/WinVST/Tremolo/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Tremolo/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Tremolo/Tremolo.cpp b/plugins/WinVST/Tremolo/Tremolo.cpp
index be5d06d..f0b649d 100755
--- a/plugins/WinVST/Tremolo/Tremolo.cpp
+++ b/plugins/WinVST/Tremolo/Tremolo.cpp
@@ -21,11 +21,8 @@ Tremolo::Tremolo(audioMasterCallback audioMaster) :
depthAmount = 0.0;
lastSpeed = 1000.0;
lastDepth = 1000.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Tremolo/Tremolo.h b/plugins/WinVST/Tremolo/Tremolo.h
index ea40aa6..11fc718 100755
--- a/plugins/WinVST/Tremolo/Tremolo.h
+++ b/plugins/WinVST/Tremolo/Tremolo.h
@@ -53,11 +53,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double sweep;
diff --git a/plugins/WinVST/Tremolo/TremoloProc.cpp b/plugins/WinVST/Tremolo/TremoloProc.cpp
index d0de7cc..d27dc86 100755
--- a/plugins/WinVST/Tremolo/TremoloProc.cpp
+++ b/plugins/WinVST/Tremolo/TremoloProc.cpp
@@ -17,9 +17,6 @@ void Tremolo::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
speedChase = pow(A,4);
depthChase = B;
@@ -151,25 +148,14 @@ void Tremolo::processReplacing(float **inputs, float **outputs, VstInt32 sampleF
inputSampleR = (drySampleR * (1-depth)) + (inputSampleR*depth);
//end R
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -191,9 +177,6 @@ void Tremolo::processDoubleReplacing(double **inputs, double **outputs, VstInt32
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
speedChase = pow(A,4);
depthChase = B;
@@ -326,25 +309,16 @@ void Tremolo::processDoubleReplacing(double **inputs, double **outputs, VstInt32
inputSampleR = (drySampleR * (1-depth)) + (inputSampleR*depth);
//end R
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/TubeDesk/.vs/VSTProject/v14/.suo b/plugins/WinVST/TubeDesk/.vs/VSTProject/v14/.suo
index 318d2bc..7d02701 100755
--- a/plugins/WinVST/TubeDesk/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/TubeDesk/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/TubeDesk/TubeDesk.cpp b/plugins/WinVST/TubeDesk/TubeDesk.cpp
index fc4bd75..5a7465c 100755
--- a/plugins/WinVST/TubeDesk/TubeDesk.cpp
+++ b/plugins/WinVST/TubeDesk/TubeDesk.cpp
@@ -25,11 +25,8 @@ TubeDesk::TubeDesk(audioMasterCallback audioMaster) :
lastOutSampleR = 0.0;
lastSlewR = 0.0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/TubeDesk/TubeDesk.h b/plugins/WinVST/TubeDesk/TubeDesk.h
index b41b283..fb15768 100755
--- a/plugins/WinVST/TubeDesk/TubeDesk.h
+++ b/plugins/WinVST/TubeDesk/TubeDesk.h
@@ -51,11 +51,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
int gcount;
diff --git a/plugins/WinVST/TubeDesk/TubeDeskProc.cpp b/plugins/WinVST/TubeDesk/TubeDeskProc.cpp
index 2636076..cccf6e2 100755
--- a/plugins/WinVST/TubeDesk/TubeDeskProc.cpp
+++ b/plugins/WinVST/TubeDesk/TubeDeskProc.cpp
@@ -17,9 +17,6 @@ void TubeDesk::processReplacing(float **inputs, float **outputs, VstInt32 sample
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = 0.4384938;
double depthA = 549.0;
@@ -199,25 +196,14 @@ void TubeDesk::processReplacing(float **inputs, float **outputs, VstInt32 sample
gcount--;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -239,9 +225,6 @@ void TubeDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt3
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp; //this is different from singlereplacing
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
double intensity = 0.4384938;
double depthA = 549.0;
@@ -421,25 +404,16 @@ void TubeDesk::processDoubleReplacing(double **inputs, double **outputs, VstInt3
gcount--;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/UnBox/.vs/VSTProject/v14/.suo b/plugins/WinVST/UnBox/.vs/VSTProject/v14/.suo
index b96b3ed..a8edae0 100755
--- a/plugins/WinVST/UnBox/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/UnBox/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/UnBox/UnBoxProc.cpp b/plugins/WinVST/UnBox/UnBoxProc.cpp
index 12133dc..3cb3aab 100755
--- a/plugins/WinVST/UnBox/UnBoxProc.cpp
+++ b/plugins/WinVST/UnBox/UnBoxProc.cpp
@@ -218,18 +218,14 @@ void UnBox::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
if (output != 1.0) {inputSampleL *= output; inputSampleR *= output;}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -239,12 +235,6 @@ void UnBox::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -458,18 +448,16 @@ void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
if (output != 1.0) {inputSampleL *= output; inputSampleR *= output;}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -479,10 +467,4 @@ void UnBox::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/VariMu/.vs/VSTProject/v14/.suo b/plugins/WinVST/VariMu/.vs/VSTProject/v14/.suo
index 408eef5..a15cfa9 100755
--- a/plugins/WinVST/VariMu/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/VariMu/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/VariMu/VariMuProc.cpp b/plugins/WinVST/VariMu/VariMuProc.cpp
index b966cd8..323b5e4 100755
--- a/plugins/WinVST/VariMu/VariMuProc.cpp
+++ b/plugins/WinVST/VariMu/VariMuProc.cpp
@@ -233,18 +233,14 @@ void VariMu::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -254,12 +250,6 @@ void VariMu::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -488,18 +478,16 @@ void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32
//nice little output stage template: if we have another scale of floating point
//number, we really don't want to meaninglessly multiply that by 1.0.
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -509,10 +497,4 @@ void VariMu::processDoubleReplacing(double **inputs, double **outputs, VstInt32
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo
index 777b846..777b846 100644..100755
--- a/plugins/WinVST/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo
+++ b/plugins/WinVST/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suo b/plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suo
index 29e8736..f4a0cef 100644..100755
--- a/plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/VoiceOfTheStarship/VSTProject.sln b/plugins/WinVST/VoiceOfTheStarship/VSTProject.sln
index 694b424..694b424 100644..100755
--- a/plugins/WinVST/VoiceOfTheStarship/VSTProject.sln
+++ b/plugins/WinVST/VoiceOfTheStarship/VSTProject.sln
diff --git a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj
index a7192f5..a7192f5 100644..100755
--- a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj
+++ b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj
diff --git a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.filters b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.filters
index 56f5e91..56f5e91 100644..100755
--- a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.filters
+++ b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.filters
diff --git a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.user b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.user
index 2216267..2216267 100644..100755
--- a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.user
+++ b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.user
diff --git a/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.cpp b/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.cpp
index c30bd47..19f1d94 100644..100755
--- a/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.cpp
+++ b/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.cpp
@@ -28,11 +28,8 @@ VoiceOfTheStarship::VoiceOfTheStarship(audioMasterCallback audioMaster) :
for(int count = 0; count < 11; count++) {bL[count] = 0.0; bR[count] = 0.0; f[count] = 0.0;}
lastAlgorithm = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.h b/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.h
index febb344..519923b 100644..100755
--- a/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.h
+++ b/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.h
@@ -73,11 +73,8 @@ private:
int lastAlgorithm;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
float A;
diff --git a/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp b/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp
index 32979d0..bbb14fa 100644..100755
--- a/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp
+++ b/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp
@@ -79,9 +79,6 @@ void VoiceOfTheStarship::processReplacing(float **inputs, float **outputs, VstIn
double inputSampleL;
double inputSampleR;
- float fpTemp;
- double fpOld = 0.618033988749894848204586; //golden ratio!
- double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -181,25 +178,14 @@ void VoiceOfTheStarship::processReplacing(float **inputs, float **outputs, VstIn
filterflip = !filterflip;
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -283,9 +269,6 @@ void VoiceOfTheStarship::processDoubleReplacing(double **inputs, double **output
double inputSampleL;
double inputSampleR;
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
while (--sampleFrames >= 0)
{
@@ -384,25 +367,16 @@ void VoiceOfTheStarship::processDoubleReplacing(double **inputs, double **output
flipR = !flipR;
filterflip = !filterflip;
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/VoiceOfTheStarship/vstplug.def b/plugins/WinVST/VoiceOfTheStarship/vstplug.def
index 5bf499a..5bf499a 100644..100755
--- a/plugins/WinVST/VoiceOfTheStarship/vstplug.def
+++ b/plugins/WinVST/VoiceOfTheStarship/vstplug.def
diff --git a/plugins/WinVST/Wider/.vs/VSTProject/v14/.suo b/plugins/WinVST/Wider/.vs/VSTProject/v14/.suo
index 6a45209..d5f3d7e 100755
--- a/plugins/WinVST/Wider/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Wider/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/Wider/Wider.cpp b/plugins/WinVST/Wider/Wider.cpp
index c1e57d0..26d4d47 100755
--- a/plugins/WinVST/Wider/Wider.cpp
+++ b/plugins/WinVST/Wider/Wider.cpp
@@ -17,11 +17,8 @@ Wider::Wider(audioMasterCallback audioMaster) :
C = 1.0;
for(int fcount = 0; fcount < 4098; fcount++) {p[fcount] = 0.0;}
count = 0;
- fpNShapeLA = 0.0;
- fpNShapeLB = 0.0;
- fpNShapeRA = 0.0;
- fpNShapeRB = 0.0;
- fpFlip = true;
+ fpNShapeL = 0.0;
+ fpNShapeR = 0.0;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
diff --git a/plugins/WinVST/Wider/Wider.h b/plugins/WinVST/Wider/Wider.h
index 8b04cfb..6a6a2df 100755
--- a/plugins/WinVST/Wider/Wider.h
+++ b/plugins/WinVST/Wider/Wider.h
@@ -54,11 +54,8 @@ private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
- long double fpNShapeLA;
- long double fpNShapeLB;
- long double fpNShapeRA;
- long double fpNShapeRB;
- bool fpFlip;
+ long double fpNShapeL;
+ long double fpNShapeR;
//default stuff
double p[4099];
diff --git a/plugins/WinVST/Wider/WiderProc.cpp b/plugins/WinVST/Wider/WiderProc.cpp
index 618e651..f90fa21 100755
--- a/plugins/WinVST/Wider/WiderProc.cpp
+++ b/plugins/WinVST/Wider/WiderProc.cpp
@@ -17,9 +17,6 @@ void Wider::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- float fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -141,25 +138,14 @@ void Wider::processReplacing(float **inputs, float **outputs, VstInt32 sampleFra
inputSampleL = (drySampleL * dry) + ((mid+side) * wet);
inputSampleR = (drySampleR * dry) + ((mid-side) * wet);
- //noise shaping to 32-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -181,9 +167,6 @@ void Wider::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
- double fpTemp;
- long double fpOld = 0.618033988749894848204586; //golden ratio!
- long double fpNew = 1.0 - fpOld;
long double inputSampleL;
long double inputSampleR;
@@ -305,25 +288,16 @@ void Wider::processDoubleReplacing(double **inputs, double **outputs, VstInt32 s
inputSampleL = (drySampleL * dry) + ((mid+side) * wet);
inputSampleR = (drySampleR * dry) + ((mid-side) * wet);
- //noise shaping to 64-bit floating point
- if (fpFlip) {
- fpTemp = inputSampleL;
- fpNShapeLA = (fpNShapeLA*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLA;
- fpTemp = inputSampleR;
- fpNShapeRA = (fpNShapeRA*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRA;
- }
- else {
- fpTemp = inputSampleL;
- fpNShapeLB = (fpNShapeLB*fpOld)+((inputSampleL-fpTemp)*fpNew);
- inputSampleL += fpNShapeLB;
- fpTemp = inputSampleR;
- fpNShapeRB = (fpNShapeRB*fpOld)+((inputSampleR-fpTemp)*fpNew);
- inputSampleR += fpNShapeRB;
- }
- fpFlip = !fpFlip;
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
diff --git a/plugins/WinVST/uLawDecode/.vs/VSTProject/v14/.suo b/plugins/WinVST/uLawDecode/.vs/VSTProject/v14/.suo
index 4259e19..28c1f4a 100755
--- a/plugins/WinVST/uLawDecode/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/uLawDecode/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/uLawDecode/uLawDecodeProc.cpp b/plugins/WinVST/uLawDecode/uLawDecodeProc.cpp
index a78b3c2..1835623 100755
--- a/plugins/WinVST/uLawDecode/uLawDecodeProc.cpp
+++ b/plugins/WinVST/uLawDecode/uLawDecodeProc.cpp
@@ -88,18 +88,14 @@ void uLawDecode::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -109,12 +105,6 @@ void uLawDecode::processReplacing(float **inputs, float **outputs, VstInt32 samp
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -198,18 +188,16 @@ void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -219,10 +207,4 @@ void uLawDecode::processDoubleReplacing(double **inputs, double **outputs, VstIn
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
diff --git a/plugins/WinVST/uLawEncode/.vs/VSTProject/v14/.suo b/plugins/WinVST/uLawEncode/.vs/VSTProject/v14/.suo
index c50088b..4c66819 100755
--- a/plugins/WinVST/uLawEncode/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/uLawEncode/.vs/VSTProject/v14/.suo
Binary files differ
diff --git a/plugins/WinVST/uLawEncode/uLawEncodeProc.cpp b/plugins/WinVST/uLawEncode/uLawEncodeProc.cpp
index 3d86a7f..c5dd74d 100755
--- a/plugins/WinVST/uLawEncode/uLawEncodeProc.cpp
+++ b/plugins/WinVST/uLawEncode/uLawEncodeProc.cpp
@@ -88,18 +88,14 @@ void uLawEncode::processReplacing(float **inputs, float **outputs, VstInt32 samp
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 32-bit floating point
- float fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 32 bit output
+ //stereo 32 bit dither, made small and tidy.
+ int expon; frexpf((float)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexpf((float)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 32 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -109,12 +105,6 @@ void uLawEncode::processReplacing(float **inputs, float **outputs, VstInt32 samp
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}
void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
@@ -198,18 +188,16 @@ void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstIn
inputSampleR = (inputSampleR * wet) + (drySampleR * dry);
}
- //noise shaping to 64-bit floating point
- double fpTemp = inputSampleL;
- fpNShapeL += (inputSampleL-fpTemp);
- inputSampleL += fpNShapeL;
- //if this confuses you look at the wordlength for fpTemp :)
- fpTemp = inputSampleR;
- fpNShapeR += (inputSampleR-fpTemp);
- inputSampleR += fpNShapeR;
- //for deeper space and warmth, we try a non-oscillating noise shaping
- //that is kind of ruthless: it will forever retain the rounding errors
- //except we'll dial it back a hair at the end of every buffer processed
- //end noise shaping on 64 bit output
+ //stereo 64 bit dither, made small and tidy.
+ int expon; frexp((double)inputSampleL, &expon);
+ long double dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleL += (dither-fpNShapeL); fpNShapeL = dither;
+ frexp((double)inputSampleR, &expon);
+ dither = (rand()/(RAND_MAX*7.737125245533627e+25))*pow(2,expon+62);
+ dither /= 536870912.0; //needs this to scale to 64 bit zone
+ inputSampleR += (dither-fpNShapeR); fpNShapeR = dither;
+ //end 64 bit dither
*out1 = inputSampleL;
*out2 = inputSampleR;
@@ -219,10 +207,4 @@ void uLawEncode::processDoubleReplacing(double **inputs, double **outputs, VstIn
*out1++;
*out2++;
}
- fpNShapeL *= 0.999999;
- fpNShapeR *= 0.999999;
- //we will just delicately dial back the FP noise shaping, not even every sample
- //this is a good place to put subtle 'no runaway' calculations, though bear in mind
- //that it will be called more often when you use shorter sample buffers in the DAW.
- //So, very low latency operation will call these calculations more often.
}