From 966f2d253cd2ee6ce140ad68095a20a9d2b63052 Mon Sep 17 00:00:00 2001 From: Chris Johnson Date: Sun, 27 Jan 2019 21:13:54 -0500 Subject: Floating Point Dither For All --- .../src/ADClip7/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/ADClip7/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/ADClip7/ADClip7.cpp | 7 +- plugins/LinuxVST/src/ADClip7/ADClip7.h | 7 +- plugins/LinuxVST/src/ADClip7/ADClip7Proc.cpp | 64 +- plugins/LinuxVST/src/ADT/ADTProc.cpp | 54 +- .../AQuickVoiceClip/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/AQuickVoiceClip/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes .../src/AQuickVoiceClip/AQuickVoiceClip.cpp | 7 +- .../LinuxVST/src/AQuickVoiceClip/AQuickVoiceClip.h | 7 +- .../src/AQuickVoiceClip/AQuickVoiceClipProc.cpp | 62 +- plugins/LinuxVST/src/Acceleration/Acceleration.cpp | 7 +- plugins/LinuxVST/src/Acceleration/Acceleration.h | 7 +- .../LinuxVST/src/Acceleration/AccelerationProc.cpp | 62 +- .../src/Air/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/LinuxVST/src/Air/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Air/Air.cpp | 7 +- plugins/LinuxVST/src/Air/Air.h | 7 +- plugins/LinuxVST/src/Air/AirProc.cpp | 62 +- .../src/AtmosphereBuss/AtmosphereBussProc.cpp | 56 +- .../AtmosphereChannel/AtmosphereChannelProc.cpp | 56 +- plugins/LinuxVST/src/Aura/Aura.cpp | 7 +- plugins/LinuxVST/src/Aura/Aura.h | 7 +- plugins/LinuxVST/src/Aura/AuraProc.cpp | 62 +- .../src/Average/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Average/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Average/Average.cpp | 7 +- plugins/LinuxVST/src/Average/Average.h | 7 +- plugins/LinuxVST/src/Average/AverageProc.cpp | 66 +- plugins/LinuxVST/src/BassKit/BassKitProc.cpp | 54 +- plugins/LinuxVST/src/BitGlitter/BitGlitter.cpp | 3 + plugins/LinuxVST/src/BitGlitter/BitGlitter.h | 3 + plugins/LinuxVST/src/BitGlitter/BitGlitterProc.cpp | 19 + .../src/Bite/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/LinuxVST/src/Bite/.vs/VSTProject/v14/.suo | Bin 0 -> 23552 bytes plugins/LinuxVST/src/Bite/Bite.cpp | 7 +- plugins/LinuxVST/src/Bite/Bite.h | 7 +- plugins/LinuxVST/src/Bite/BiteProc.cpp | 62 +- .../src/BussColors4/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/BussColors4/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/BussColors4/BussColors4.cpp | 22 +- plugins/LinuxVST/src/BussColors4/BussColors4.h | 7 +- .../LinuxVST/src/BussColors4/BussColors4Proc.cpp | 62 +- plugins/LinuxVST/src/ButterComp/ButterComp.cpp | 7 +- plugins/LinuxVST/src/ButterComp/ButterComp.h | 7 +- plugins/LinuxVST/src/ButterComp/ButterCompProc.cpp | 62 +- .../LinuxVST/src/ButterComp2/ButterComp2Proc.cpp | 54 +- plugins/LinuxVST/src/C5RawBuss/C5RawBuss.cpp | 7 +- plugins/LinuxVST/src/C5RawBuss/C5RawBuss.h | 7 +- plugins/LinuxVST/src/C5RawBuss/C5RawBussProc.cpp | 62 +- plugins/LinuxVST/src/C5RawChannel/C5RawChannel.cpp | 7 +- plugins/LinuxVST/src/C5RawChannel/C5RawChannel.h | 7 +- .../LinuxVST/src/C5RawChannel/C5RawChannelProc.cpp | 62 +- .../src/CStrip/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/CStrip/.vs/VSTProject/v14/.suo | Bin 0 -> 24576 bytes plugins/LinuxVST/src/CStrip/CStrip.cpp | 7 +- plugins/LinuxVST/src/CStrip/CStrip.h | 7 +- plugins/LinuxVST/src/CStrip/CStripProc.cpp | 62 +- .../src/Capacitor/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Capacitor/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/Capacitor/Capacitor.cpp | 7 +- plugins/LinuxVST/src/Capacitor/Capacitor.h | 7 +- plugins/LinuxVST/src/Capacitor/CapacitorProc.cpp | 62 +- .../src/Channel4/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Channel4/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/Channel6/Channel6Proc.cpp | 54 +- .../src/Chorus/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Chorus/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Chorus/Chorus.cpp | 7 +- plugins/LinuxVST/src/Chorus/Chorus.h | 8 +- plugins/LinuxVST/src/Chorus/ChorusProc.cpp | 62 +- .../ChorusEnsemble/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/ChorusEnsemble/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes .../LinuxVST/src/ChorusEnsemble/ChorusEnsemble.cpp | 7 +- .../LinuxVST/src/ChorusEnsemble/ChorusEnsemble.h | 7 +- .../src/ChorusEnsemble/ChorusEnsembleProc.cpp | 64 +- .../src/ClipOnly/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/ClipOnly/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes .../Console4Buss/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/Console4Buss/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/Console4Buss/Console4Buss.cpp | 7 +- plugins/LinuxVST/src/Console4Buss/Console4Buss.h | 7 +- .../LinuxVST/src/Console4Buss/Console4BussProc.cpp | 63 +- .../Console4Channel/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/Console4Channel/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes .../src/Console4Channel/Console4Channel.cpp | 7 +- .../LinuxVST/src/Console4Channel/Console4Channel.h | 7 +- .../src/Console4Channel/Console4ChannelProc.cpp | 63 +- .../Console5Buss/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/Console5Buss/.vs/VSTProject/v14/.suo | Bin 0 -> 23552 bytes plugins/LinuxVST/src/Console5Buss/Console5Buss.cpp | 7 +- plugins/LinuxVST/src/Console5Buss/Console5Buss.h | 7 +- .../LinuxVST/src/Console5Buss/Console5BussProc.cpp | 62 +- .../Console5Channel/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/Console5Channel/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes .../src/Console5Channel/Console5Channel.cpp | 7 +- .../LinuxVST/src/Console5Channel/Console5Channel.h | 7 +- .../src/Console5Channel/Console5ChannelProc.cpp | 62 +- .../Console5DarkCh/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/Console5DarkCh/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes .../LinuxVST/src/Console5DarkCh/Console5DarkCh.cpp | 7 +- .../LinuxVST/src/Console5DarkCh/Console5DarkCh.h | 7 +- .../src/Console5DarkCh/Console5DarkChProc.cpp | 62 +- .../src/CrunchyGrooveWear/CrunchyGrooveWear.cpp | 7 +- .../src/CrunchyGrooveWear/CrunchyGrooveWear.h | 7 +- .../CrunchyGrooveWear/CrunchyGrooveWearProc.cpp | 62 +- plugins/LinuxVST/src/Crystal/CrystalProc.cpp | 54 +- .../src/DCVoltage/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/DCVoltage/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/DeEss/DeEssProc.cpp | 54 +- plugins/LinuxVST/src/DeRez/DeRez.cpp | 7 +- plugins/LinuxVST/src/DeRez/DeRez.h | 7 +- plugins/LinuxVST/src/DeRez/DeRezProc.cpp | 62 +- .../src/Density/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Density/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Density/Density.cpp | 7 +- plugins/LinuxVST/src/Density/Density.h | 9 +- plugins/LinuxVST/src/Density/DensityProc.cpp | 64 +- .../src/Desk/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/LinuxVST/src/Desk/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Desk/Desk.cpp | 7 +- plugins/LinuxVST/src/Desk/Desk.h | 7 +- plugins/LinuxVST/src/Desk/DeskProc.cpp | 62 +- .../src/Desk4/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/LinuxVST/src/Desk4/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Desk4/Desk4.cpp | 7 +- plugins/LinuxVST/src/Desk4/Desk4.h | 7 +- plugins/LinuxVST/src/Desk4/Desk4Proc.cpp | 62 +- .../src/Distance/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Distance/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/Distance/Distance.cpp | 7 +- plugins/LinuxVST/src/Distance/Distance.h | 7 +- plugins/LinuxVST/src/Distance/DistanceProc.cpp | 62 +- plugins/LinuxVST/src/Distance2/Distance2Proc.cpp | 54 +- plugins/LinuxVST/src/DitherFloat/DitherFloat.cpp | 127 ++ plugins/LinuxVST/src/DitherFloat/DitherFloat.h | 64 + .../LinuxVST/src/DitherFloat/DitherFloatProc.cpp | 184 ++ .../src/Drive/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/LinuxVST/src/Drive/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Drive/Drive.cpp | 7 +- plugins/LinuxVST/src/Drive/Drive.h | 9 +- plugins/LinuxVST/src/Drive/DriveProc.cpp | 64 +- plugins/LinuxVST/src/DrumSlam/DrumSlam.cpp | 7 +- plugins/LinuxVST/src/DrumSlam/DrumSlam.h | 9 +- plugins/LinuxVST/src/DrumSlam/DrumSlamProc.cpp | 66 +- plugins/LinuxVST/src/DubCenter/DubCenterProc.cpp | 54 +- plugins/LinuxVST/src/DubSub/DubSubProc.cpp | 54 +- .../src/DustBunny/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/DustBunny/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/EQ/EQ.cpp | 7 +- plugins/LinuxVST/src/EQ/EQ.h | 7 +- plugins/LinuxVST/src/EQ/EQProc.cpp | 62 +- .../src/EdIsDim/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/EdIsDim/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/EdIsDim/EdIsDim.cpp | 7 +- plugins/LinuxVST/src/EdIsDim/EdIsDim.h | 7 +- plugins/LinuxVST/src/EdIsDim/EdIsDimProc.cpp | 62 +- plugins/LinuxVST/src/ElectroHat/ElectroHat.cpp | 7 +- plugins/LinuxVST/src/ElectroHat/ElectroHat.h | 7 +- plugins/LinuxVST/src/ElectroHat/ElectroHatProc.cpp | 62 +- plugins/LinuxVST/src/Energy/EnergyProc.cpp | 54 +- .../src/Ensemble/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Ensemble/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/Ensemble/Ensemble.cpp | 7 +- plugins/LinuxVST/src/Ensemble/Ensemble.h | 9 +- plugins/LinuxVST/src/Ensemble/EnsembleProc.cpp | 66 +- .../src/EveryTrim/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/EveryTrim/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/EveryTrim/EveryTrim.cpp | 7 +- plugins/LinuxVST/src/EveryTrim/EveryTrim.h | 7 +- plugins/LinuxVST/src/EveryTrim/EveryTrimProc.cpp | 62 +- .../src/FathomFive/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/FathomFive/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/FathomFive/FathomFive.cpp | 10 - plugins/LinuxVST/src/Floor/FloorProc.cpp | 54 +- .../src/Fracture/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Fracture/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/Fracture/Fracture.cpp | 7 +- plugins/LinuxVST/src/Fracture/Fracture.h | 7 +- plugins/LinuxVST/src/Fracture/FractureProc.cpp | 62 +- .../src/FromTape/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/FromTape/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/FromTape/FromTape.cpp | 7 +- plugins/LinuxVST/src/FromTape/FromTape.h | 7 +- plugins/LinuxVST/src/FromTape/FromTapeProc.cpp | 62 +- plugins/LinuxVST/src/Gatelope/GatelopeProc.cpp | 54 +- plugins/LinuxVST/src/Golem/Golem.cpp | 6 +- plugins/LinuxVST/src/Golem/Golem.h | 6 +- plugins/LinuxVST/src/Golem/GolemProc.cpp | 62 +- plugins/LinuxVST/src/GrooveWear/GrooveWear.cpp | 7 +- plugins/LinuxVST/src/GrooveWear/GrooveWear.h | 7 +- plugins/LinuxVST/src/GrooveWear/GrooveWearProc.cpp | 62 +- .../.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/GuitarConditioner/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes .../src/GuitarConditioner/GuitarConditioner.cpp | 7 +- .../src/GuitarConditioner/GuitarConditioner.h | 9 +- .../GuitarConditioner/GuitarConditionerProc.cpp | 67 +- plugins/LinuxVST/src/HardVacuum/HardVacuum.cpp | 7 +- plugins/LinuxVST/src/HardVacuum/HardVacuum.h | 7 +- plugins/LinuxVST/src/HardVacuum/HardVacuumProc.cpp | 62 +- .../src/HermeTrim/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/HermeTrim/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/HermeTrim/HermeTrim.cpp | 7 +- plugins/LinuxVST/src/HermeTrim/HermeTrim.h | 7 +- plugins/LinuxVST/src/HermeTrim/HermeTrimProc.cpp | 62 +- .../src/Hermepass/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Hermepass/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/Hermepass/Hermepass.cpp | 7 +- plugins/LinuxVST/src/Hermepass/Hermepass.h | 9 +- plugins/LinuxVST/src/Hermepass/HermepassProc.cpp | 66 +- .../src/HighImpact/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/HighImpact/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/HighImpact/HighImpact.cpp | 7 +- plugins/LinuxVST/src/HighImpact/HighImpact.h | 7 +- plugins/LinuxVST/src/HighImpact/HighImpactProc.cpp | 62 +- .../src/Highpass/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Highpass/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/Highpass/Highpass.cpp | 6 +- plugins/LinuxVST/src/Highpass/Highpass.h | 9 +- plugins/LinuxVST/src/Highpass/HighpassProc.cpp | 68 +- .../src/Hombre/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Hombre/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Hombre/Hombre.cpp | 7 +- plugins/LinuxVST/src/Hombre/Hombre.h | 7 +- plugins/LinuxVST/src/Hombre/HombreProc.cpp | 62 +- .../src/IronOxide5/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/IronOxide5/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/IronOxide5/IronOxide5.cpp | 7 +- plugins/LinuxVST/src/IronOxide5/IronOxide5.h | 7 +- plugins/LinuxVST/src/IronOxide5/IronOxide5Proc.cpp | 62 +- .../.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/IronOxideClassic/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes .../src/IronOxideClassic/IronOxideClassic.cpp | 7 +- .../src/IronOxideClassic/IronOxideClassic.h | 7 +- .../src/IronOxideClassic/IronOxideClassicProc.cpp | 64 +- .../src/Logical4/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Logical4/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/Logical4/Logical4.cpp | 7 +- plugins/LinuxVST/src/Logical4/Logical4.h | 6 +- plugins/LinuxVST/src/Logical4/Logical4Proc.cpp | 68 +- .../src/Loud/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/LinuxVST/src/Loud/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Loud/Loud.cpp | 7 +- plugins/LinuxVST/src/Loud/Loud.h | 7 +- plugins/LinuxVST/src/Loud/LoudProc.cpp | 62 +- .../src/Lowpass/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Lowpass/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Lowpass/Lowpass.cpp | 6 +- plugins/LinuxVST/src/Lowpass/Lowpass.h | 9 +- plugins/LinuxVST/src/Lowpass/LowpassProc.cpp | 68 +- .../src/Melt/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/LinuxVST/src/Melt/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Melt/Melt.cpp | 7 +- plugins/LinuxVST/src/Melt/Melt.h | 7 +- plugins/LinuxVST/src/Melt/MeltProc.cpp | 62 +- .../src/MidSide/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/MidSide/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/MidSide/MidSide.cpp | 7 +- plugins/LinuxVST/src/MidSide/MidSide.h | 7 +- plugins/LinuxVST/src/MidSide/MidSideProc.cpp | 62 +- plugins/LinuxVST/src/NCSeventeen/NCSeventeen.cpp | 7 +- plugins/LinuxVST/src/NCSeventeen/NCSeventeen.h | 7 +- .../LinuxVST/src/NCSeventeen/NCSeventeenProc.cpp | 62 +- .../src/Noise/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/LinuxVST/src/Noise/.vs/VSTProject/v14/.suo | Bin 0 -> 25088 bytes plugins/LinuxVST/src/Noise/Noise.cpp | 7 +- plugins/LinuxVST/src/Noise/Noise.h | 7 +- plugins/LinuxVST/src/Noise/NoiseProc.cpp | 62 +- .../LinuxVST/src/NonlinearSpace/NonlinearSpace.cpp | 7 +- .../LinuxVST/src/NonlinearSpace/NonlinearSpace.h | 7 +- .../src/NonlinearSpace/NonlinearSpaceProc.cpp | 62 +- .../LinuxVST/src/OneCornerClip/OneCornerClip.cpp | 7 +- plugins/LinuxVST/src/OneCornerClip/OneCornerClip.h | 7 +- .../src/OneCornerClip/OneCornerClipProc.cpp | 62 +- plugins/LinuxVST/src/PDBuss/PDBuss.cpp | 7 +- plugins/LinuxVST/src/PDBuss/PDBuss.h | 7 +- plugins/LinuxVST/src/PDBuss/PDBussProc.cpp | 62 +- plugins/LinuxVST/src/PDChannel/PDChannel.cpp | 7 +- plugins/LinuxVST/src/PDChannel/PDChannel.h | 7 +- plugins/LinuxVST/src/PDChannel/PDChannelProc.cpp | 62 +- .../src/PhaseNudge/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/PhaseNudge/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/PhaseNudge/PhaseNudge.cpp | 7 +- plugins/LinuxVST/src/PhaseNudge/PhaseNudge.h | 7 +- plugins/LinuxVST/src/PhaseNudge/PhaseNudgeProc.cpp | 62 +- .../src/Point/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/LinuxVST/src/Point/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Point/Point.cpp | 6 +- plugins/LinuxVST/src/Point/Point.h | 6 +- plugins/LinuxVST/src/Point/PointProc.cpp | 64 +- plugins/LinuxVST/src/Pop/PopProc.cpp | 54 +- .../src/PowerSag/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/PowerSag/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/PowerSag/PowerSag.cpp | 7 +- plugins/LinuxVST/src/PowerSag/PowerSag.h | 7 +- plugins/LinuxVST/src/PowerSag/PowerSagProc.cpp | 62 +- .../src/Pressure4/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Pressure4/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/Pressure4/Pressure4.cpp | 6 +- plugins/LinuxVST/src/Pressure4/Pressure4.h | 6 +- plugins/LinuxVST/src/Pressure4/Pressure4Proc.cpp | 66 +- .../src/PurestConsoleBuss/PurestConsoleBuss.cpp | 7 +- .../src/PurestConsoleBuss/PurestConsoleBuss.h | 7 +- .../PurestConsoleBuss/PurestConsoleBussProc.cpp | 62 +- .../PurestConsoleChannel/PurestConsoleChannel.cpp | 7 +- .../PurestConsoleChannel/PurestConsoleChannel.h | 7 +- .../PurestConsoleChannelProc.cpp | 62 +- plugins/LinuxVST/src/PurestDrive/PurestDrive.cpp | 7 +- plugins/LinuxVST/src/PurestDrive/PurestDrive.h | 7 +- .../LinuxVST/src/PurestDrive/PurestDriveProc.cpp | 62 +- .../src/PurestEcho/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/PurestEcho/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/PurestEcho/PurestEcho.cpp | 7 +- plugins/LinuxVST/src/PurestEcho/PurestEcho.h | 7 +- plugins/LinuxVST/src/PurestEcho/PurestEchoProc.cpp | 62 +- plugins/LinuxVST/src/PurestGain/PurestGain.cpp | 7 +- plugins/LinuxVST/src/PurestGain/PurestGain.h | 7 +- plugins/LinuxVST/src/PurestGain/PurestGainProc.cpp | 92 +- .../src/PurestWarm/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/PurestWarm/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/PurestWarm/PurestWarm.cpp | 7 +- plugins/LinuxVST/src/PurestWarm/PurestWarm.h | 7 +- plugins/LinuxVST/src/PurestWarm/PurestWarmProc.cpp | 242 +-- .../src/Pyewacket/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Pyewacket/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/Pyewacket/Pyewacket.cpp | 7 +- plugins/LinuxVST/src/Pyewacket/Pyewacket.h | 7 +- plugins/LinuxVST/src/Pyewacket/PyewacketProc.cpp | 62 +- plugins/LinuxVST/src/Righteous4/Righteous4Proc.cpp | 56 +- .../src/SideDull/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/SideDull/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/SideDull/SideDull.cpp | 6 +- plugins/LinuxVST/src/SideDull/SideDull.h | 6 +- plugins/LinuxVST/src/SideDull/SideDullProc.cpp | 66 +- .../src/Sidepass/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Sidepass/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/Sidepass/Sidepass.cpp | 6 +- plugins/LinuxVST/src/Sidepass/Sidepass.h | 6 +- plugins/LinuxVST/src/Sidepass/SidepassProc.cpp | 62 +- .../SingleEndedTriode/SingleEndedTriodeProc.cpp | 54 +- .../src/Slew/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/LinuxVST/src/Slew/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes .../src/Slew2/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/LinuxVST/src/Slew2/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes .../src/SlewOnly/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/SlewOnly/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Spiral/SpiralProc.cpp | 54 +- plugins/LinuxVST/src/Spiral2/Spiral2Proc.cpp | 54 +- .../src/StarChild/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/StarChild/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/StarChild/StarChild.cpp | 7 +- plugins/LinuxVST/src/StarChild/StarChild.h | 7 +- plugins/LinuxVST/src/StarChild/StarChildProc.cpp | 62 +- plugins/LinuxVST/src/StereoFX/StereoFX.cpp | 6 +- plugins/LinuxVST/src/StereoFX/StereoFX.h | 6 +- plugins/LinuxVST/src/StereoFX/StereoFXProc.cpp | 62 +- .../src/Surge/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/LinuxVST/src/Surge/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Surge/Surge.cpp | 6 +- plugins/LinuxVST/src/Surge/Surge.h | 6 +- plugins/LinuxVST/src/Surge/SurgeProc.cpp | 66 +- .../src/SurgeTide/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/SurgeTide/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/SurgeTide/SurgeTide.cpp | 6 +- plugins/LinuxVST/src/SurgeTide/SurgeTide.h | 6 +- plugins/LinuxVST/src/SurgeTide/SurgeTideProc.cpp | 66 +- .../src/Swell/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/LinuxVST/src/Swell/.vs/VSTProject/v14/.suo | Bin 0 -> 24576 bytes plugins/LinuxVST/src/Swell/Swell.cpp | 7 +- plugins/LinuxVST/src/Swell/Swell.h | 7 +- plugins/LinuxVST/src/Swell/SwellProc.cpp | 62 +- plugins/LinuxVST/src/TapeDelay/TapeDelayProc.cpp | 54 +- .../src/TapeDust/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/TapeDust/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/TapeDust/TapeDust.cpp | 6 +- plugins/LinuxVST/src/TapeDust/TapeDust.h | 6 +- plugins/LinuxVST/src/TapeDust/TapeDustProc.cpp | 64 +- plugins/LinuxVST/src/TapeFat/TapeFatProc.cpp | 54 +- .../src/Thunder/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Thunder/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Thunder/Thunder.cpp | 6 +- plugins/LinuxVST/src/Thunder/Thunder.h | 6 +- plugins/LinuxVST/src/Thunder/ThunderProc.cpp | 66 +- .../src/ToTape5/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/ToTape5/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/ToTape5/ToTape5.cpp | 7 +- plugins/LinuxVST/src/ToTape5/ToTape5.h | 7 +- plugins/LinuxVST/src/ToTape5/ToTape5Proc.cpp | 67 +- .../src/ToVinyl4/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/ToVinyl4/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/ToVinyl4/ToVinyl4.cpp | 7 +- plugins/LinuxVST/src/ToVinyl4/ToVinyl4.h | 7 +- plugins/LinuxVST/src/ToVinyl4/ToVinyl4Proc.cpp | 62 +- .../src/ToneSlant/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/ToneSlant/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/ToneSlant/ToneSlant.cpp | 7 +- plugins/LinuxVST/src/ToneSlant/ToneSlant.h | 7 +- plugins/LinuxVST/src/ToneSlant/ToneSlantProc.cpp | 62 +- .../src/TransDesk/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/TransDesk/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/TransDesk/TransDesk.cpp | 7 +- plugins/LinuxVST/src/TransDesk/TransDesk.h | 7 +- plugins/LinuxVST/src/TransDesk/TransDeskProc.cpp | 62 +- .../src/Tremolo/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/Tremolo/.vs/VSTProject/v14/.suo | Bin 0 -> 22528 bytes plugins/LinuxVST/src/Tremolo/Tremolo.cpp | 7 +- plugins/LinuxVST/src/Tremolo/Tremolo.h | 7 +- plugins/LinuxVST/src/Tremolo/TremoloProc.cpp | 62 +- .../src/TubeDesk/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../LinuxVST/src/TubeDesk/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/LinuxVST/src/TubeDesk/TubeDesk.cpp | 7 +- plugins/LinuxVST/src/TubeDesk/TubeDesk.h | 7 +- plugins/LinuxVST/src/TubeDesk/TubeDeskProc.cpp | 62 +- plugins/LinuxVST/src/UnBox/UnBoxProc.cpp | 54 +- plugins/LinuxVST/src/VariMu/VariMuProc.cpp | 54 +- .../.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes .../src/VoiceOfTheStarship/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes .../src/VoiceOfTheStarship/VoiceOfTheStarship.cpp | 7 +- .../src/VoiceOfTheStarship/VoiceOfTheStarship.h | 7 +- .../VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp | 62 +- plugins/LinuxVST/src/Wider/Wider.cpp | 7 +- plugins/LinuxVST/src/Wider/Wider.h | 7 +- plugins/LinuxVST/src/Wider/WiderProc.cpp | 62 +- plugins/LinuxVST/src/uLawDecode/uLawDecodeProc.cpp | 54 +- plugins/LinuxVST/src/uLawEncode/uLawEncodeProc.cpp | 54 +- plugins/MacAU/ADClip7/ADClip7.cpp | 23 +- plugins/MacAU/ADClip7/ADClip7.h | 4 +- .../ADClip7.xcodeproj/christopherjohnson.pbxuser | 66 +- .../christopherjohnson.perspectivev3 | 41 +- plugins/MacAU/ADT/ADT.cpp | 18 +- .../ADT/ADT.xcodeproj/christopherjohnson.pbxuser | 42 +- .../ADT.xcodeproj/christopherjohnson.perspectivev3 | 28 +- plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.cpp | 29 +- plugins/MacAU/AQuickVoiceClip/AQuickVoiceClip.h | 6 +- .../christopherjohnson.pbxuser | 31 +- .../christopherjohnson.perspectivev3 | 34 +- plugins/MacAU/Acceleration/Acceleration.cpp | 25 +- plugins/MacAU/Acceleration/Acceleration.h | 4 +- .../christopherjohnson.mode1v3 | 0 .../christopherjohnson.pbxuser | 54 +- .../christopherjohnson.perspectivev3 | 35 +- .../Acceleration.xcodeproj/project.pbxproj | 0 plugins/MacAU/Air/Air.cpp | 29 +- plugins/MacAU/Air/Air.h | 7 +- .../Air/Air.xcodeproj/christopherjohnson.pbxuser | 40 +- .../Air.xcodeproj/christopherjohnson.perspectivev3 | 28 +- plugins/MacAU/AtmosphereBuss/AtmosphereBuss.cpp | 19 +- .../christopherjohnson.pbxuser | 70 +- .../christopherjohnson.perspectivev3 | 40 +- .../MacAU/AtmosphereChannel/AtmosphereChannel.cpp | 19 +- .../christopherjohnson.pbxuser | 86 +- .../christopherjohnson.perspectivev3 | 40 +- plugins/MacAU/Aura/Aura.cpp | 27 +- plugins/MacAU/Aura/Aura.h | 4 +- .../Aura/Aura.xcodeproj/christopherjohnson.pbxuser | 65 +- .../christopherjohnson.perspectivev3 | 36 +- plugins/MacAU/Average/Average.cpp | 26 +- plugins/MacAU/Average/Average.h | 5 +- .../Average.xcodeproj/christopherjohnson.pbxuser | 58 +- .../christopherjohnson.perspectivev3 | 71 +- plugins/MacAU/BassKit/BassKit.cpp | 28 +- .../BassKit.xcodeproj/christopherjohnson.pbxuser | 22 +- .../christopherjohnson.perspectivev3 | 35 +- .../christopherjohnson.pbxuser | 42 +- .../christopherjohnson.perspectivev3 | 29 +- .../christopherjohnson.mode1v3 | 0 .../christopherjohnson.pbxuser | 46 +- .../christopherjohnson.perspectivev3 | 29 +- .../BitShiftGain.xcodeproj/project.pbxproj | 0 plugins/MacAU/Bite/Bite.cpp | 27 +- plugins/MacAU/Bite/Bite.h | 5 +- .../Bite/Bite.xcodeproj/christopherjohnson.pbxuser | 42 +- .../christopherjohnson.perspectivev3 | 39 +- .../christopherjohnson.pbxuser | 18 +- .../christopherjohnson.perspectivev3 | 21 +- plugins/MacAU/BussColors4/BussColors4.cpp | 25 +- plugins/MacAU/BussColors4/BussColors4.h | 4 +- .../christopherjohnson.pbxuser | 46 +- .../christopherjohnson.perspectivev3 | 29 +- plugins/MacAU/ButterComp/ButterComp.cpp | 13 +- .../christopherjohnson.pbxuser | 58 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacAU/ButterComp2/ButterComp2.cpp | 18 +- .../christopherjohnson.pbxuser | 22 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacAU/C5RawBuss/C5RawBuss.cpp | 25 +- plugins/MacAU/C5RawBuss/C5RawBuss.h | 4 +- .../C5RawBuss.xcodeproj/christopherjohnson.pbxuser | 50 +- .../christopherjohnson.perspectivev3 | 82 +- plugins/MacAU/C5RawChannel/C5RawChannel.cpp | 25 +- plugins/MacAU/C5RawChannel/C5RawChannel.h | 4 +- .../christopherjohnson.pbxuser | 57 +- .../christopherjohnson.perspectivev3 | 46 +- plugins/MacAU/CStrip/CStrip.cpp | 27 +- plugins/MacAU/CStrip/CStrip.h | 4 +- .../CStrip.xcodeproj/christopherjohnson.pbxuser | 62 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacAU/Capacitor/Capacitor.cpp | 25 +- plugins/MacAU/Capacitor/Capacitor.h | 4 +- .../Capacitor.xcodeproj/christopherjohnson.pbxuser | 42 +- .../christopherjohnson.perspectivev3 | 41 +- plugins/MacAU/Channel6/Channel6.cpp | 21 +- .../Channel6.xcodeproj/christopherjohnson.pbxuser | 62 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacAU/Chorus/Chorus.cpp | 27 +- plugins/MacAU/Chorus/Chorus.h | 5 +- .../Chorus.xcodeproj/christopherjohnson.pbxuser | 36 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacAU/ChorusEnsemble/ChorusEnsemble.cpp | 27 +- plugins/MacAU/ChorusEnsemble/ChorusEnsemble.h | 5 +- .../christopherjohnson.pbxuser | 45 +- .../christopherjohnson.perspectivev3 | 29 +- .../ClipOnly.xcodeproj/christopherjohnson.pbxuser | 16 +- .../christopherjohnson.perspectivev3 | 30 +- plugins/MacAU/Console4Buss/Console4Buss.cpp | 26 +- plugins/MacAU/Console4Buss/Console4Buss.h | 5 +- .../christopherjohnson.pbxuser | 62 +- .../christopherjohnson.perspectivev3 | 40 +- plugins/MacAU/Console4Channel/Console4Channel.cpp | 26 +- plugins/MacAU/Console4Channel/Console4Channel.h | 5 +- .../christopherjohnson.pbxuser | 46 +- .../christopherjohnson.perspectivev3 | 34 +- plugins/MacAU/Console5Buss/Console5Buss.cpp | 25 +- plugins/MacAU/Console5Buss/Console5Buss.h | 4 +- .../christopherjohnson.pbxuser | 50 +- .../christopherjohnson.perspectivev3 | 44 +- plugins/MacAU/Console5Channel/Console5Channel.cpp | 25 +- plugins/MacAU/Console5Channel/Console5Channel.h | 4 +- .../christopherjohnson.pbxuser | 42 +- .../christopherjohnson.perspectivev3 | 38 +- plugins/MacAU/Console5DarkCh/Console5DarkCh.cpp | 28 +- plugins/MacAU/Console5DarkCh/Console5DarkCh.h | 4 +- .../christopherjohnson.pbxuser | 28 +- .../christopherjohnson.perspectivev3 | 35 +- .../MacAU/CrunchyGrooveWear/CrunchyGrooveWear.cpp | 28 +- .../MacAU/CrunchyGrooveWear/CrunchyGrooveWear.h | 4 +- .../christopherjohnson.pbxuser | 55 +- .../christopherjohnson.perspectivev3 | 39 +- plugins/MacAU/Crystal/Crystal.cpp | 18 +- .../Crystal.xcodeproj/christopherjohnson.pbxuser | 56 +- .../christopherjohnson.perspectivev3 | 35 +- .../DCVoltage.xcodeproj/christopherjohnson.pbxuser | 18 +- .../christopherjohnson.perspectivev3 | 29 +- plugins/MacAU/DeEss/DeEss.cpp | 18 +- .../DeEss.xcodeproj/christopherjohnson.pbxuser | 28 +- .../christopherjohnson.perspectivev3 | 38 +- plugins/MacAU/DeRez/DeRez.cpp | 26 +- plugins/MacAU/DeRez/DeRez.h | 4 +- .../DeRez.xcodeproj/christopherjohnson.pbxuser | 62 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacAU/Density/Density.cpp | 25 +- plugins/MacAU/Density/Density.exp | 2 +- plugins/MacAU/Density/Density.h | 3 +- .../Density.xcodeproj/christopherjohnson.pbxuser | 60 +- .../christopherjohnson.perspectivev3 | 39 +- plugins/MacAU/Desk/Desk.cpp | 28 +- plugins/MacAU/Desk/Desk.h | 4 +- .../Desk/Desk.xcodeproj/christopherjohnson.pbxuser | 40 +- .../christopherjohnson.perspectivev3 | 39 +- plugins/MacAU/Desk4/Desk4.cpp | 26 +- plugins/MacAU/Desk4/Desk4.h | 4 +- .../Desk4.xcodeproj/christopherjohnson.pbxuser | 32 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacAU/Distance/Distance.cpp | 26 +- plugins/MacAU/Distance/Distance.exp | 2 +- plugins/MacAU/Distance/Distance.h | 5 +- .../Distance.xcodeproj/christopherjohnson.pbxuser | 64 +- .../christopherjohnson.perspectivev3 | 36 +- plugins/MacAU/Distance2/Distance2.cpp | 18 +- .../Distance2.xcodeproj/christopherjohnson.pbxuser | 54 +- .../christopherjohnson.perspectivev3 | 34 +- plugins/MacAU/DitherFloat/DitherFloat.cpp | 255 +++ plugins/MacAU/DitherFloat/DitherFloat.exp | 1 + plugins/MacAU/DitherFloat/DitherFloat.h | 138 ++ plugins/MacAU/DitherFloat/DitherFloat.r | 61 + .../christopherjohnson.mode1v3 | 1358 ++++++++++++ .../christopherjohnson.pbxuser | 131 ++ .../christopherjohnson.perspectivev3 | 1506 ++++++++++++++ .../DitherFloat.xcodeproj/project.pbxproj | 490 +++++ plugins/MacAU/DitherFloat/DitherFloatVersion.h | 58 + .../DitherFloat/English.lproj/InfoPlist.strings | Bin 0 -> 388 bytes plugins/MacAU/DitherFloat/Info.plist | 28 + plugins/MacAU/DitherFloat/version.plist | 16 + .../christopherjohnson.pbxuser | 58 +- .../christopherjohnson.perspectivev3 | 76 +- plugins/MacAU/DitherMeTimbers/DitherMeTimbers.cpp | 7 +- plugins/MacAU/DitherMeTimbers/DitherMeTimbers.h | 4 +- .../christopherjohnson.pbxuser | 58 +- .../christopherjohnson.perspectivev3 | 28 +- .../Ditherbox.xcodeproj/christopherjohnson.pbxuser | 34 +- .../christopherjohnson.perspectivev3 | 26 +- .../christopherjohnson.pbxuser | 64 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacAU/Drive/Drive.cpp | 26 +- plugins/MacAU/Drive/Drive.exp | 2 +- plugins/MacAU/Drive/Drive.h | 3 +- .../Drive.xcodeproj/christopherjohnson.pbxuser | 68 +- .../christopherjohnson.perspectivev3 | 41 +- plugins/MacAU/DrumSlam/DrumSlam.cpp | 27 +- plugins/MacAU/DrumSlam/DrumSlam.h | 3 +- .../DrumSlam.xcodeproj/christopherjohnson.pbxuser | 71 +- .../christopherjohnson.perspectivev3 | 39 +- plugins/MacAU/DubCenter/DubCenter.cpp | 26 +- .../DubCenter.xcodeproj/christopherjohnson.pbxuser | 32 +- .../christopherjohnson.perspectivev3 | 34 +- plugins/MacAU/DubSub/DubSub.cpp | 19 +- .../DubSub.xcodeproj/christopherjohnson.pbxuser | 36 +- .../christopherjohnson.perspectivev3 | 36 +- plugins/MacAU/DustBunny/DustBunny.cpp | 8 +- plugins/MacAU/DustBunny/DustBunny.h | 2 +- .../DustBunny.xcodeproj/christopherjohnson.pbxuser | 26 +- .../christopherjohnson.perspectivev3 | 31 +- plugins/MacAU/EQ/EQ.cpp | 28 +- plugins/MacAU/EQ/EQ.h | 4 +- .../EQ/EQ.xcodeproj/christopherjohnson.pbxuser | 16 +- .../EQ.xcodeproj/christopherjohnson.perspectivev3 | 27 +- plugins/MacAU/EdIsDim/EdIsDim.cpp | 38 +- plugins/MacAU/EdIsDim/EdIsDim.h | 7 +- .../EdIsDim.xcodeproj/christopherjohnson.pbxuser | 46 +- .../christopherjohnson.perspectivev3 | 39 +- plugins/MacAU/ElectroHat/ElectroHat.cpp | 25 +- plugins/MacAU/ElectroHat/ElectroHat.h | 4 +- .../christopherjohnson.pbxuser | 60 +- .../christopherjohnson.perspectivev3 | 28 +- plugins/MacAU/Energy/Energy.cpp | 18 +- plugins/MacAU/Energy/Energy.h | 2 +- .../Energy.xcodeproj/christopherjohnson.pbxuser | 64 +- .../christopherjohnson.perspectivev3 | 38 +- plugins/MacAU/Ensemble/Ensemble.cpp | 27 +- plugins/MacAU/Ensemble/Ensemble.h | 5 +- .../Ensemble.xcodeproj/christopherjohnson.pbxuser | 42 +- .../christopherjohnson.perspectivev3 | 41 +- plugins/MacAU/EveryTrim/EveryTrim.cpp | 40 +- plugins/MacAU/EveryTrim/EveryTrim.h | 8 +- .../EveryTrim.xcodeproj/christopherjohnson.pbxuser | 50 +- .../christopherjohnson.perspectivev3 | 37 +- plugins/MacAU/FathomFive/FathomFive.cpp | 6 + plugins/MacAU/FathomFive/FathomFive.h | 1 + .../christopherjohnson.pbxuser | 32 +- .../christopherjohnson.perspectivev3 | 39 +- plugins/MacAU/Floor/Floor.cpp | 18 +- .../Floor.xcodeproj/christopherjohnson.pbxuser | 44 +- .../christopherjohnson.perspectivev3 | 34 +- plugins/MacAU/Fracture/Fracture.cpp | 28 +- plugins/MacAU/Fracture/Fracture.exp | 2 +- plugins/MacAU/Fracture/Fracture.h | 4 +- .../Fracture.xcodeproj/christopherjohnson.pbxuser | 50 +- .../christopherjohnson.perspectivev3 | 47 +- plugins/MacAU/FromTape/FromTape.cpp | 25 +- plugins/MacAU/FromTape/FromTape.h | 4 +- .../FromTape.xcodeproj/christopherjohnson.pbxuser | 49 +- .../christopherjohnson.perspectivev3 | 24 +- plugins/MacAU/Gatelinked/Gatelinked.cpp | 34 +- .../christopherjohnson.pbxuser | 28 +- .../christopherjohnson.perspectivev3 | 31 +- plugins/MacAU/Gatelope/Gatelope.cpp | 18 +- .../Gatelope.xcodeproj/christopherjohnson.pbxuser | 38 +- .../christopherjohnson.perspectivev3 | 74 +- plugins/MacAU/Golem/Golem.cpp | 45 +- plugins/MacAU/Golem/Golem.h | 7 +- .../Golem.xcodeproj/christopherjohnson.pbxuser | 64 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacAU/GrooveWear/GrooveWear.cpp | 25 +- plugins/MacAU/GrooveWear/GrooveWear.h | 4 +- .../christopherjohnson.mode1v3 | 0 .../christopherjohnson.pbxuser | 59 +- .../christopherjohnson.perspectivev3 | 41 +- .../GrooveWear.xcodeproj/project.pbxproj | 0 .../MacAU/GuitarConditioner/GuitarConditioner.cpp | 25 +- .../MacAU/GuitarConditioner/GuitarConditioner.h | 3 +- .../christopherjohnson.pbxuser | 46 +- .../christopherjohnson.perspectivev3 | 40 +- plugins/MacAU/HardVacuum/HardVacuum.cpp | 25 +- plugins/MacAU/HardVacuum/HardVacuum.h | 4 +- .../christopherjohnson.pbxuser | 30 +- .../christopherjohnson.perspectivev3 | 34 +- plugins/MacAU/HermeTrim/HermeTrim.cpp | 40 +- plugins/MacAU/HermeTrim/HermeTrim.h | 7 +- .../HermeTrim.xcodeproj/christopherjohnson.pbxuser | 62 +- .../christopherjohnson.perspectivev3 | 41 +- plugins/MacAU/Hermepass/Hermepass.cpp | 25 +- plugins/MacAU/Hermepass/Hermepass.h | 3 +- .../Hermepass.xcodeproj/christopherjohnson.pbxuser | 30 +- .../christopherjohnson.perspectivev3 | 52 +- .../christopherjohnson.pbxuser | 18 +- .../christopherjohnson.perspectivev3 | 22 +- plugins/MacAU/HighImpact/HighImpact.cpp | 28 +- plugins/MacAU/HighImpact/HighImpact.h | 4 +- .../christopherjohnson.pbxuser | 40 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacAU/Highpass/Highpass.cpp | 25 +- plugins/MacAU/Highpass/Highpass.h | 3 +- .../Highpass.xcodeproj/christopherjohnson.pbxuser | 30 +- .../christopherjohnson.perspectivev3 | 39 +- plugins/MacAU/Hombre/Hombre.cpp | 31 +- plugins/MacAU/Hombre/Hombre.h | 4 +- .../Hombre.xcodeproj/christopherjohnson.pbxuser | 24 +- .../christopherjohnson.perspectivev3 | 27 +- plugins/MacAU/IronOxide5/IronOxide5.cpp | 30 +- plugins/MacAU/IronOxide5/IronOxide5.h | 7 +- .../christopherjohnson.pbxuser | 28 +- .../christopherjohnson.perspectivev3 | 31 +- .../MacAU/IronOxideClassic/IronOxideClassic.cpp | 27 +- plugins/MacAU/IronOxideClassic/IronOxideClassic.h | 3 +- .../christopherjohnson.pbxuser | 40 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacAU/Logical4/Logical4.cpp | 47 +- plugins/MacAU/Logical4/Logical4.h | 6 +- .../Logical4.xcodeproj/christopherjohnson.pbxuser | 40 +- .../christopherjohnson.perspectivev3 | 33 +- plugins/MacAU/Loud/Loud.cpp | 25 +- plugins/MacAU/Loud/Loud.h | 4 +- .../Loud/Loud.xcodeproj/christopherjohnson.pbxuser | 44 +- .../christopherjohnson.perspectivev3 | 29 +- plugins/MacAU/Lowpass/Lowpass.cpp | 25 +- plugins/MacAU/Lowpass/Lowpass.h | 3 +- .../Lowpass.xcodeproj/christopherjohnson.pbxuser | 24 +- .../christopherjohnson.perspectivev3 | 39 +- plugins/MacAU/Melt/Melt.cpp | 28 +- plugins/MacAU/Melt/Melt.h | 4 +- .../Melt/Melt.xcodeproj/christopherjohnson.pbxuser | 40 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacAU/MidSide/MidSide.cpp | 40 +- plugins/MacAU/MidSide/MidSide.h | 7 +- .../MidSide.xcodeproj/christopherjohnson.pbxuser | 44 +- .../christopherjohnson.perspectivev3 | 39 +- plugins/MacAU/NCSeventeen/NCSeventeen.cpp | 29 +- plugins/MacAU/NCSeventeen/NCSeventeen.h | 4 +- .../christopherjohnson.pbxuser | 30 +- .../christopherjohnson.perspectivev3 | 41 +- plugins/MacAU/Noise/Noise.cpp | 30 +- plugins/MacAU/Noise/Noise.h | 4 +- .../Noise.xcodeproj/christopherjohnson.pbxuser | 20 +- .../christopherjohnson.perspectivev3 | 26 +- plugins/MacAU/NonlinearSpace/NonlinearSpace.cpp | 37 +- plugins/MacAU/NonlinearSpace/NonlinearSpace.h | 8 +- .../christopherjohnson.pbxuser | 32 +- .../christopherjohnson.perspectivev3 | 39 +- .../christopherjohnson.pbxuser | 65 +- .../christopherjohnson.perspectivev3 | 26 +- .../christopherjohnson.pbxuser | 56 +- .../christopherjohnson.perspectivev3 | 30 +- plugins/MacAU/OneCornerClip/OneCornerClip.cpp | 27 +- plugins/MacAU/OneCornerClip/OneCornerClip.h | 4 +- .../christopherjohnson.pbxuser | 34 +- .../christopherjohnson.perspectivev3 | 37 +- plugins/MacAU/PDBuss/PDBuss.cpp | 26 +- plugins/MacAU/PDBuss/PDBuss.h | 4 +- .../PDBuss.xcodeproj/christopherjohnson.pbxuser | 54 +- .../christopherjohnson.perspectivev3 | 44 +- plugins/MacAU/PDChannel/PDChannel.cpp | 28 +- plugins/MacAU/PDChannel/PDChannel.h | 4 +- .../PDChannel.xcodeproj/christopherjohnson.pbxuser | 40 +- .../christopherjohnson.perspectivev3 | 40 +- .../christopherjohnson.pbxuser | 38 +- .../christopherjohnson.perspectivev3 | 29 +- plugins/MacAU/PhaseNudge/PhaseNudge.cpp | 28 +- plugins/MacAU/PhaseNudge/PhaseNudge.exp | 2 +- plugins/MacAU/PhaseNudge/PhaseNudge.h | 4 +- .../christopherjohnson.pbxuser | 28 +- .../christopherjohnson.perspectivev3 | 29 +- plugins/MacAU/Point/Poynt.cpp | 27 +- plugins/MacAU/Point/Poynt.h | 3 +- .../Poynt.xcodeproj/christopherjohnson.pbxuser | 20 +- .../christopherjohnson.perspectivev3 | 25 +- plugins/MacAU/Pop/Pop.cpp | 21 +- .../Pop/Pop.xcodeproj/christopherjohnson.pbxuser | 57 +- .../Pop.xcodeproj/christopherjohnson.perspectivev3 | 36 +- plugins/MacAU/PowerSag/PowerSag.cpp | 28 +- plugins/MacAU/PowerSag/PowerSag.h | 5 +- .../PowerSag.xcodeproj/christopherjohnson.pbxuser | 44 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacAU/Pressure4/Pressure4.cpp | 38 +- plugins/MacAU/Pressure4/Pressure4.h | 6 +- .../Pressure4.xcodeproj/christopherjohnson.pbxuser | 64 +- .../christopherjohnson.perspectivev3 | 40 +- plugins/MacAU/Pressure4Mono/Pressure4Mono.cpp | 26 +- plugins/MacAU/Pressure4Mono/Pressure4Mono.h | 3 +- .../christopherjohnson.pbxuser | 64 +- .../christopherjohnson.perspectivev3 | 49 +- .../MacAU/PurestConsoleBuss/PurestConsoleBuss.cpp | 28 +- .../MacAU/PurestConsoleBuss/PurestConsoleBuss.h | 4 +- .../christopherjohnson.mode1v3 | 0 .../christopherjohnson.pbxuser | 77 +- .../christopherjohnson.perspectivev3 | 92 +- .../PurestConsoleBuss.xcodeproj/project.pbxproj | 0 .../PurestConsoleChannel/PurestConsoleChannel.cpp | 28 +- .../PurestConsoleChannel/PurestConsoleChannel.h | 4 +- .../christopherjohnson.mode1v3 | 0 .../christopherjohnson.pbxuser | 57 +- .../christopherjohnson.perspectivev3 | 42 +- .../PurestConsoleChannel.xcodeproj/project.pbxproj | 0 plugins/MacAU/PurestDrive/PurestDrive.cpp | 25 +- plugins/MacAU/PurestDrive/PurestDrive.h | 4 +- ...ook-Pro-2's conflicted copy 2015-05-07).mode1v3 | 0 ...ook-Pro-2's conflicted copy 2015-05-07).pbxuser | 0 .../christopherjohnson.pbxuser | 42 +- .../christopherjohnson.perspectivev3 | 79 +- .../PurestDrive.xcodeproj/project.pbxproj | 0 plugins/MacAU/PurestEcho/PurestEcho.cpp | 28 +- plugins/MacAU/PurestEcho/PurestEcho.h | 4 +- .../christopherjohnson.pbxuser | 42 +- .../christopherjohnson.perspectivev3 | 40 +- plugins/MacAU/PurestGain/PurestGain.cpp | 42 +- plugins/MacAU/PurestGain/PurestGain.h | 5 +- .../christopherjohnson.mode1v3 | 0 .../christopherjohnson.pbxuser | 42 +- .../christopherjohnson.perspectivev3 | 48 +- .../PurestGain.xcodeproj/project.pbxproj | 0 plugins/MacAU/PurestWarm/PurestWarm.cpp | 59 +- plugins/MacAU/PurestWarm/PurestWarm.h | 4 +- .../christopherjohnson.pbxuser | 85 +- .../christopherjohnson.perspectivev3 | 86 +- plugins/MacAU/Pyewacket/Pyewacket.cpp | 37 +- plugins/MacAU/Pyewacket/Pyewacket.h | 7 +- .../Pyewacket.xcodeproj/christopherjohnson.pbxuser | 53 +- .../christopherjohnson.perspectivev3 | 54 +- plugins/MacAU/PyewacketMono/PyewacketMono.cpp | 23 +- plugins/MacAU/PyewacketMono/PyewacketMono.h | 4 +- .../christopherjohnson.pbxuser | 54 +- .../christopherjohnson.perspectivev3 | 49 +- plugins/MacAU/Righteous4/Righteous4.cpp | 18 +- .../christopherjohnson.pbxuser | 69 +- .../christopherjohnson.perspectivev3 | 24 +- plugins/MacAU/SideDull/SideDull.cpp | 41 +- plugins/MacAU/SideDull/SideDull.h | 7 +- .../SideDull.xcodeproj/christopherjohnson.pbxuser | 70 +- .../christopherjohnson.perspectivev3 | 53 +- plugins/MacAU/Sidepass/Sidepass.cpp | 43 +- plugins/MacAU/Sidepass/Sidepass.h | 7 +- .../Sidepass.xcodeproj/christopherjohnson.pbxuser | 64 +- .../christopherjohnson.perspectivev3 | 48 +- .../MacAU/SingleEndedTriode/SingleEndedTriode.cpp | 18 +- .../christopherjohnson.pbxuser | 69 +- .../christopherjohnson.perspectivev3 | 57 +- plugins/MacAU/Slew/Slew.cpp | 7 + plugins/MacAU/Slew/Slew.exp | 2 +- plugins/MacAU/Slew/Slew.h | 25 +- .../Slew/Slew.xcodeproj/christopherjohnson.pbxuser | 76 +- .../christopherjohnson.perspectivev3 | 48 +- plugins/MacAU/Slew2/Slew2.cpp | 8 +- plugins/MacAU/Slew2/Slew2.h | 2 +- .../Slew2.xcodeproj/christopherjohnson.pbxuser | 55 +- .../christopherjohnson.perspectivev3 | 56 +- plugins/MacAU/SlewOnly/SlewOnly.cpp | 8 + plugins/MacAU/SlewOnly/SlewOnly.exp | 2 +- plugins/MacAU/SlewOnly/SlewOnly.h | 1 + .../SlewOnly.xcodeproj/christopherjohnson.pbxuser | 83 +- .../christopherjohnson.perspectivev3 | 53 +- plugins/MacAU/Spiral/Spiral.cpp | 18 +- .../Spiral.xcodeproj/christopherjohnson.pbxuser | 75 +- .../christopherjohnson.perspectivev3 | 52 +- plugins/MacAU/Spiral2/Spiral2.cpp | 18 +- .../Spiral2.xcodeproj/christopherjohnson.pbxuser | 74 +- .../christopherjohnson.perspectivev3 | 36 +- plugins/MacAU/StarChild/StarChild.cpp | 44 +- plugins/MacAU/StarChild/StarChild.h | 13 +- .../StarChild.xcodeproj/christopherjohnson.pbxuser | 59 +- .../christopherjohnson.perspectivev3 | 52 +- plugins/MacAU/StereoFX/StereoFX.cpp | 39 +- plugins/MacAU/StereoFX/StereoFX.h | 6 +- .../StereoFX.xcodeproj/christopherjohnson.pbxuser | 53 +- .../christopherjohnson.perspectivev3 | 56 +- plugins/MacAU/SubsOnly/SubsOnly.cpp | 9 + plugins/MacAU/SubsOnly/SubsOnly.exp | 2 +- plugins/MacAU/SubsOnly/SubsOnly.h | 1 + .../SubsOnly.xcodeproj/christopherjohnson.pbxuser | 61 +- .../christopherjohnson.perspectivev3 | 55 +- plugins/MacAU/Surge/Surge.cpp | 40 +- plugins/MacAU/Surge/Surge.h | 7 +- .../Surge.xcodeproj/christopherjohnson.pbxuser | 55 +- .../christopherjohnson.perspectivev3 | 56 +- plugins/MacAU/SurgeMono/SurgeMono.cpp | 29 +- plugins/MacAU/SurgeMono/SurgeMono.h | 4 +- .../SurgeMono.xcodeproj/christopherjohnson.pbxuser | 64 +- .../christopherjohnson.perspectivev3 | 41 +- plugins/MacAU/SurgeTide/SurgeTide.cpp | 42 +- plugins/MacAU/SurgeTide/SurgeTide.h | 7 +- .../SurgeTide.xcodeproj/christopherjohnson.pbxuser | 84 +- .../christopherjohnson.perspectivev3 | 46 +- plugins/MacAU/SurgeTideMono/SurgeTideMono.cpp | 29 +- plugins/MacAU/SurgeTideMono/SurgeTideMono.h | 4 +- .../christopherjohnson.pbxuser | 66 +- .../christopherjohnson.perspectivev3 | 53 +- plugins/MacAU/Swell/Swell.cpp | 28 +- plugins/MacAU/Swell/Swell.h | 5 +- .../Swell.xcodeproj/christopherjohnson.pbxuser | 67 +- .../christopherjohnson.perspectivev3 | 51 +- .../christopherjohnson.mode1v3 | 0 .../christopherjohnson.pbxuser | 0 .../christopherjohnson.perspectivev3 | 0 .../TPDFDither.xcodeproj/project.pbxproj | 0 plugins/MacAU/TapeDelay/TapeDelay.cpp | 18 +- .../TapeDelay.xcodeproj/christopherjohnson.pbxuser | 69 +- .../christopherjohnson.perspectivev3 | 36 +- .../christopherjohnson.pbxuser | 42 +- .../christopherjohnson.perspectivev3 | 30 +- plugins/MacAU/TapeDust/TapeDust.cpp | 27 +- plugins/MacAU/TapeDust/TapeDust.h | 3 +- .../TapeDust.xcodeproj/christopherjohnson.pbxuser | 66 +- .../christopherjohnson.perspectivev3 | 59 +- plugins/MacAU/TapeFat/TapeFat.cpp | 18 +- .../TapeFat.xcodeproj/christopherjohnson.pbxuser | 80 +- .../christopherjohnson.perspectivev3 | 49 +- plugins/MacAU/Thunder/Thunder.cpp | 39 +- plugins/MacAU/Thunder/Thunder.h | 6 +- .../Thunder.xcodeproj/christopherjohnson.pbxuser | 77 +- .../christopherjohnson.perspectivev3 | 54 +- plugins/MacAU/ToTape5/ToTape5.cpp | 30 +- plugins/MacAU/ToTape5/ToTape5.h | 5 +- .../ToTape5.xcodeproj/christopherjohnson.pbxuser | 63 +- .../christopherjohnson.perspectivev3 | 50 +- plugins/MacAU/ToVinyl4/ToVinyl4.cpp | 40 +- plugins/MacAU/ToVinyl4/ToVinyl4.h | 9 +- .../ToVinyl4.xcodeproj/christopherjohnson.pbxuser | 53 +- .../christopherjohnson.perspectivev3 | 46 +- plugins/MacAU/ToneSlant/ToneSlant.cpp | 26 +- plugins/MacAU/ToneSlant/ToneSlant.h | 4 +- .../ToneSlant.xcodeproj/christopherjohnson.pbxuser | 64 +- .../christopherjohnson.perspectivev3 | 49 +- plugins/MacAU/TransDesk/TransDesk.cpp | 27 +- plugins/MacAU/TransDesk/TransDesk.h | 4 +- .../TransDesk.xcodeproj/christopherjohnson.pbxuser | 54 +- .../christopherjohnson.perspectivev3 | 49 +- plugins/MacAU/Tremolo/Tremolo.cpp | 27 +- plugins/MacAU/Tremolo/Tremolo.h | 5 +- .../Tremolo.xcodeproj/christopherjohnson.pbxuser | 53 +- .../christopherjohnson.perspectivev3 | 52 +- plugins/MacAU/TubeDesk/TubeDesk.cpp | 26 +- plugins/MacAU/TubeDesk/TubeDesk.h | 4 +- .../TubeDesk.xcodeproj/christopherjohnson.pbxuser | 62 +- .../christopherjohnson.perspectivev3 | 47 +- plugins/MacAU/UnBox/UnBox.cpp | 20 +- .../UnBox.xcodeproj/christopherjohnson.pbxuser | 70 +- .../christopherjohnson.perspectivev3 | 52 +- plugins/MacAU/VariMu/VariMu.cpp | 13 +- .../VariMu.xcodeproj/christopherjohnson.pbxuser | 42 +- .../christopherjohnson.perspectivev3 | 53 +- .../VoiceOfTheStarship/VoiceOfTheStarship.cpp | 25 +- .../MacAU/VoiceOfTheStarship/VoiceOfTheStarship.h | 4 +- .../christopherjohnson.mode1v3 | 0 .../christopherjohnson.pbxuser | 73 +- .../christopherjohnson.perspectivev3 | 49 +- .../VoiceOfTheStarship.xcodeproj/project.pbxproj | 0 plugins/MacAU/Wider/Wider.cpp | 39 +- plugins/MacAU/Wider/Wider.h | 7 +- .../Wider.xcodeproj/christopherjohnson.pbxuser | 73 +- .../christopherjohnson.perspectivev3 | 46 +- plugins/MacAU/uLawDecode/uLawDecode.cpp | 18 +- .../christopherjohnson.pbxuser | 61 +- .../christopherjohnson.perspectivev3 | 48 +- plugins/MacAU/uLawEncode/uLawEncode.cpp | 18 +- .../christopherjohnson.pbxuser | 64 +- .../christopherjohnson.perspectivev3 | 57 +- .../ADClip7.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 17 +- plugins/MacVST/ADClip7/source/ADClip7.cpp | 7 +- plugins/MacVST/ADClip7/source/ADClip7.h | 7 +- plugins/MacVST/ADClip7/source/ADClip7Proc.cpp | 64 +- .../ADT/ADT.xcodeproj/christopherjohnson.pbxuser | 43 +- .../ADT.xcodeproj/christopherjohnson.perspectivev3 | 24 +- plugins/MacVST/ADT/source/ADTProc.cpp | 54 +- .../christopherjohnson.pbxuser | 10 +- .../christopherjohnson.perspectivev3 | 21 +- .../AQuickVoiceClip/source/AQuickVoiceClip.cpp | 7 +- .../AQuickVoiceClip/source/AQuickVoiceClip.h | 7 +- .../AQuickVoiceClip/source/AQuickVoiceClipProc.cpp | 62 +- .../christopherjohnson.pbxuser | 47 +- .../christopherjohnson.perspectivev3 | 34 +- .../project.xcworkspace/contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin .../UserInterfaceState.xcuserstate | Bin .../Acceleration.xcodeproj/spiadmin.mode1v3 | 0 .../Acceleration.xcodeproj/spiadmin.pbxuser | 0 .../xcschemes/Gain.xcscheme | 0 .../xcschemes/xcschememanagement.plist | 0 .../xcschemes/xcschememanagement.plist | 0 .../\302\253PROJECTNAME\302\273.xcscheme" | 0 .../MacVST/Acceleration/source/Acceleration.cpp | 7 +- plugins/MacVST/Acceleration/source/Acceleration.h | 7 +- .../Acceleration/source/AccelerationProc.cpp | 62 +- .../Air/Air.xcodeproj/christopherjohnson.pbxuser | 8 +- .../Air.xcodeproj/christopherjohnson.perspectivev3 | 23 +- plugins/MacVST/Air/Air.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/Air/source/Air.cpp | 7 +- plugins/MacVST/Air/source/Air.h | 7 +- plugins/MacVST/Air/source/AirProc.cpp | 62 +- .../christopherjohnson.pbxuser | 30 +- .../christopherjohnson.perspectivev3 | 22 +- .../AtmosphereBuss/source/AtmosphereBussProc.cpp | 56 +- .../christopherjohnson.pbxuser | 64 +- .../christopherjohnson.perspectivev3 | 42 +- .../source/AtmosphereChannelProc.cpp | 56 +- .../Aura/Aura.xcodeproj/christopherjohnson.pbxuser | 26 +- .../christopherjohnson.perspectivev3 | 27 +- plugins/MacVST/Aura/source/Aura.cpp | 7 +- plugins/MacVST/Aura/source/Aura.h | 7 +- plugins/MacVST/Aura/source/AuraProc.cpp | 62 +- .../Average.xcodeproj/christopherjohnson.pbxuser | 12 +- .../christopherjohnson.perspectivev3 | 13 +- .../Average/Average.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/Average/source/Average.cpp | 7 +- plugins/MacVST/Average/source/Average.h | 7 +- plugins/MacVST/Average/source/AverageProc.cpp | 66 +- .../BassKit.xcodeproj/christopherjohnson.pbxuser | 38 +- .../christopherjohnson.perspectivev3 | 64 +- plugins/MacVST/BassKit/source/BassKitProc.cpp | 54 +- .../christopherjohnson.pbxuser | 26 +- .../christopherjohnson.perspectivev3 | 24 +- plugins/MacVST/BitGlitter/source/BitGlitter.cpp | 3 + plugins/MacVST/BitGlitter/source/BitGlitter.h | 3 + .../MacVST/BitGlitter/source/BitGlitterProc.cpp | 19 + .../christopherjohnson.pbxuser | 69 +- .../christopherjohnson.perspectivev3 | 46 +- .../project.xcworkspace/contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin .../UserInterfaceState.xcuserstate | Bin .../BitShiftGain.xcodeproj/spiadmin.mode1v3 | 0 .../BitShiftGain.xcodeproj/spiadmin.pbxuser | 0 .../xcschemes/Gain.xcscheme | 0 .../xcschemes/xcschememanagement.plist | 0 .../xcschemes/xcschememanagement.plist | 0 .../\302\253PROJECTNAME\302\273.xcscheme" | 0 .../Bite/Bite.xcodeproj/christopherjohnson.pbxuser | 16 +- .../christopherjohnson.perspectivev3 | 13 +- plugins/MacVST/Bite/source/Bite.cpp | 7 +- plugins/MacVST/Bite/source/Bite.h | 7 +- plugins/MacVST/Bite/source/BiteProc.cpp | 62 +- .../christopherjohnson.pbxuser | 20 +- .../christopherjohnson.perspectivev3 | 30 +- plugins/MacVST/BussColors4/source/BussColors4.cpp | 22 +- plugins/MacVST/BussColors4/source/BussColors4.h | 7 +- .../MacVST/BussColors4/source/BussColors4Proc.cpp | 62 +- .../christopherjohnson.pbxuser | 34 +- .../christopherjohnson.perspectivev3 | 30 +- plugins/MacVST/ButterComp/source/ButterComp.cpp | 7 +- plugins/MacVST/ButterComp/source/ButterComp.h | 7 +- .../MacVST/ButterComp/source/ButterCompProc.cpp | 62 +- .../christopherjohnson.pbxuser | 42 +- .../christopherjohnson.perspectivev3 | 26 +- .../MacVST/ButterComp2/source/ButterComp2Proc.cpp | 54 +- .../C5RawBuss.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 24 +- plugins/MacVST/C5RawBuss/source/C5RawBuss.cpp | 7 +- plugins/MacVST/C5RawBuss/source/C5RawBuss.h | 7 +- plugins/MacVST/C5RawBuss/source/C5RawBussProc.cpp | 62 +- .../christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 10 +- .../C5RawChannel.xcodeproj/project.pbxproj | 4 +- .../MacVST/C5RawChannel/source/C5RawChannel.cpp | 7 +- plugins/MacVST/C5RawChannel/source/C5RawChannel.h | 7 +- .../C5RawChannel/source/C5RawChannelProc.cpp | 62 +- .../CStrip.xcodeproj/christopherjohnson.pbxuser | 18 +- .../christopherjohnson.perspectivev3 | 28 +- plugins/MacVST/CStrip/source/CStrip.cpp | 7 +- plugins/MacVST/CStrip/source/CStrip.h | 7 +- plugins/MacVST/CStrip/source/CStripProc.cpp | 62 +- .../Capacitor.xcodeproj/christopherjohnson.pbxuser | 18 +- .../christopherjohnson.perspectivev3 | 29 +- plugins/MacVST/Capacitor/source/Capacitor.cpp | 7 +- plugins/MacVST/Capacitor/source/Capacitor.h | 7 +- plugins/MacVST/Capacitor/source/CapacitorProc.cpp | 62 +- .../Channel6.xcodeproj/christopherjohnson.pbxuser | 43 +- .../christopherjohnson.perspectivev3 | 36 +- plugins/MacVST/Channel6/source/Channel6Proc.cpp | 54 +- .../Chorus.xcodeproj/christopherjohnson.pbxuser | 75 +- .../christopherjohnson.perspectivev3 | 36 +- plugins/MacVST/Chorus/source/Chorus.cpp | 7 +- plugins/MacVST/Chorus/source/Chorus.h | 8 +- plugins/MacVST/Chorus/source/ChorusProc.cpp | 62 +- .../christopherjohnson.pbxuser | 44 +- .../christopherjohnson.perspectivev3 | 35 +- .../ChorusEnsemble/source/ChorusEnsemble.cpp | 7 +- .../MacVST/ChorusEnsemble/source/ChorusEnsemble.h | 7 +- .../ChorusEnsemble/source/ChorusEnsembleProc.cpp | 64 +- .../ClipOnly.xcodeproj/christopherjohnson.pbxuser | 14 +- .../christopherjohnson.perspectivev3 | 21 +- .../christopherjohnson.pbxuser | 18 +- .../christopherjohnson.perspectivev3 | 21 +- .../MacVST/Console4Buss/source/Console4Buss.cpp | 7 +- plugins/MacVST/Console4Buss/source/Console4Buss.h | 7 +- .../Console4Buss/source/Console4BussProc.cpp | 63 +- .../christopherjohnson.pbxuser | 18 +- .../christopherjohnson.perspectivev3 | 21 +- .../Console4Channel/source/Console4Channel.cpp | 7 +- .../Console4Channel/source/Console4Channel.h | 7 +- .../Console4Channel/source/Console4ChannelProc.cpp | 63 +- .../christopherjohnson.pbxuser | 26 +- .../christopherjohnson.perspectivev3 | 29 +- .../MacVST/Console5Buss/source/Console5Buss.cpp | 7 +- plugins/MacVST/Console5Buss/source/Console5Buss.h | 7 +- .../Console5Buss/source/Console5BussProc.cpp | 62 +- .../christopherjohnson.pbxuser | 27 +- .../christopherjohnson.perspectivev3 | 32 +- .../Console5Channel/source/Console5Channel.cpp | 7 +- .../Console5Channel/source/Console5Channel.h | 7 +- .../Console5Channel/source/Console5ChannelProc.cpp | 62 +- .../christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 18 +- .../Console5DarkCh.xcodeproj/project.pbxproj | 4 +- .../Console5DarkCh/source/Console5DarkCh.cpp | 7 +- .../MacVST/Console5DarkCh/source/Console5DarkCh.h | 7 +- .../Console5DarkCh/source/Console5DarkChProc.cpp | 62 +- .../christopherjohnson.pbxuser | 34 +- .../christopherjohnson.perspectivev3 | 40 +- .../CrunchyGrooveWear/source/CrunchyGrooveWear.cpp | 7 +- .../CrunchyGrooveWear/source/CrunchyGrooveWear.h | 7 +- .../source/CrunchyGrooveWearProc.cpp | 62 +- .../Crystal.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 31 +- .../Crystal/Crystal.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/Crystal/source/CrystalProc.cpp | 54 +- .../DCVoltage.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 17 +- .../DCVoltage/DCVoltage.xcodeproj/project.pbxproj | 4 +- .../DeEss.xcodeproj/christopherjohnson.pbxuser | 34 +- .../christopherjohnson.perspectivev3 | 42 +- plugins/MacVST/DeEss/source/DeEssProc.cpp | 54 +- .../DeRez.xcodeproj/christopherjohnson.pbxuser | 71 +- .../christopherjohnson.perspectivev3 | 34 +- plugins/MacVST/DeRez/source/DeRez.cpp | 7 +- plugins/MacVST/DeRez/source/DeRez.h | 7 +- plugins/MacVST/DeRez/source/DeRezProc.cpp | 62 +- .../Density.xcodeproj/christopherjohnson.pbxuser | 72 +- .../christopherjohnson.perspectivev3 | 47 +- .../Density/Density.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/Density/source/Density.cpp | 7 +- plugins/MacVST/Density/source/Density.h | 9 +- plugins/MacVST/Density/source/DensityProc.cpp | 64 +- .../Desk/Desk.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 17 +- plugins/MacVST/Desk/Desk.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/Desk/source/Desk.cpp | 7 +- plugins/MacVST/Desk/source/Desk.h | 7 +- plugins/MacVST/Desk/source/DeskProc.cpp | 62 +- .../Desk4.xcodeproj/christopherjohnson.pbxuser | 4 +- .../christopherjohnson.perspectivev3 | 9 +- plugins/MacVST/Desk4/source/Desk4.cpp | 7 +- plugins/MacVST/Desk4/source/Desk4.h | 7 +- plugins/MacVST/Desk4/source/Desk4Proc.cpp | 62 +- .../Distance.xcodeproj/christopherjohnson.pbxuser | 60 +- .../christopherjohnson.perspectivev3 | 27 +- plugins/MacVST/Distance/source/Distance.cpp | 7 +- plugins/MacVST/Distance/source/Distance.h | 7 +- plugins/MacVST/Distance/source/DistanceProc.cpp | 62 +- .../Distance2.xcodeproj/christopherjohnson.pbxuser | 41 +- .../christopherjohnson.perspectivev3 | 32 +- plugins/MacVST/Distance2/source/Distance2Proc.cpp | 54 +- .../christopherjohnson.pbxuser | 131 ++ .../christopherjohnson.perspectivev3 | 1508 ++++++++++++++ .../DitherFloat.xcodeproj/project.pbxproj | 2201 ++++++++++++++++++++ .../project.xcworkspace/contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 12075 bytes .../UserInterfaceState.xcuserstate | Bin 0 -> 10373 bytes .../DitherFloat.xcodeproj/spiadmin.mode1v3 | 1372 ++++++++++++ .../DitherFloat.xcodeproj/spiadmin.pbxuser | 143 ++ .../xcschemes/Gain.xcscheme | 80 + .../xcschemes/xcschememanagement.plist | 22 + .../xcschemes/xcschememanagement.plist | 22 + .../\302\253PROJECTNAME\302\273.xcscheme" | 57 + plugins/MacVST/DitherFloat/mac/Info.plist | 24 + plugins/MacVST/DitherFloat/mac/PkgInfo | 1 + plugins/MacVST/DitherFloat/mac/xcode_vst_prefix.h | 17 + plugins/MacVST/DitherFloat/source/DitherFloat.cpp | 127 ++ plugins/MacVST/DitherFloat/source/DitherFloat.h | 64 + .../MacVST/DitherFloat/source/DitherFloatProc.cpp | 184 ++ .../christopherjohnson.pbxuser | 16 +- .../christopherjohnson.perspectivev3 | 21 +- .../christopherjohnson.pbxuser | 32 +- .../christopherjohnson.perspectivev3 | 21 +- .../Ditherbox.xcodeproj/christopherjohnson.pbxuser | 18 +- .../christopherjohnson.perspectivev3 | 21 +- .../christopherjohnson.pbxuser | 47 +- .../christopherjohnson.perspectivev3 | 34 +- .../Drive.xcodeproj/christopherjohnson.pbxuser | 77 +- .../christopherjohnson.perspectivev3 | 36 +- plugins/MacVST/Drive/source/Drive.cpp | 7 +- plugins/MacVST/Drive/source/Drive.h | 9 +- plugins/MacVST/Drive/source/DriveProc.cpp | 64 +- .../DrumSlam.xcodeproj/christopherjohnson.pbxuser | 16 +- .../christopherjohnson.perspectivev3 | 23 +- plugins/MacVST/DrumSlam/source/DrumSlam.cpp | 7 +- plugins/MacVST/DrumSlam/source/DrumSlam.h | 9 +- plugins/MacVST/DrumSlam/source/DrumSlamProc.cpp | 66 +- .../DubCenter.xcodeproj/christopherjohnson.pbxuser | 26 +- .../christopherjohnson.perspectivev3 | 52 +- plugins/MacVST/DubCenter/source/DubCenterProc.cpp | 54 +- .../DubSub.xcodeproj/christopherjohnson.pbxuser | 76 +- .../christopherjohnson.perspectivev3 | 38 +- plugins/MacVST/DubSub/source/DubSubProc.cpp | 54 +- .../DustBunny.xcodeproj/christopherjohnson.pbxuser | 16 +- .../christopherjohnson.perspectivev3 | 21 +- .../EQ/EQ.xcodeproj/christopherjohnson.pbxuser | 27 +- .../EQ.xcodeproj/christopherjohnson.perspectivev3 | 29 +- plugins/MacVST/EQ/source/EQ.cpp | 7 +- plugins/MacVST/EQ/source/EQ.h | 7 +- plugins/MacVST/EQ/source/EQProc.cpp | 62 +- .../EdIsDim.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 21 +- plugins/MacVST/EdIsDim/source/EdIsDim.cpp | 7 +- plugins/MacVST/EdIsDim/source/EdIsDim.h | 7 +- plugins/MacVST/EdIsDim/source/EdIsDimProc.cpp | 62 +- .../christopherjohnson.pbxuser | 46 +- .../christopherjohnson.perspectivev3 | 64 +- plugins/MacVST/ElectroHat/source/ElectroHat.cpp | 7 +- plugins/MacVST/ElectroHat/source/ElectroHat.h | 7 +- .../MacVST/ElectroHat/source/ElectroHatProc.cpp | 62 +- .../Energy.xcodeproj/christopherjohnson.pbxuser | 28 +- .../christopherjohnson.perspectivev3 | 60 +- .../MacVST/Energy/Energy.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/Energy/source/EnergyProc.cpp | 54 +- .../Ensemble.xcodeproj/christopherjohnson.pbxuser | 37 +- .../christopherjohnson.perspectivev3 | 37 +- plugins/MacVST/Ensemble/source/Ensemble.cpp | 7 +- plugins/MacVST/Ensemble/source/Ensemble.h | 9 +- plugins/MacVST/Ensemble/source/EnsembleProc.cpp | 66 +- .../EveryTrim.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 17 +- .../EveryTrim/EveryTrim.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/EveryTrim/source/EveryTrim.cpp | 7 +- plugins/MacVST/EveryTrim/source/EveryTrim.h | 7 +- plugins/MacVST/EveryTrim/source/EveryTrimProc.cpp | 62 +- .../christopherjohnson.pbxuser | 16 +- .../christopherjohnson.perspectivev3 | 29 +- plugins/MacVST/FathomFive/source/FathomFive.cpp | 10 - .../Floor.xcodeproj/christopherjohnson.pbxuser | 16 +- .../christopherjohnson.perspectivev3 | 32 +- plugins/MacVST/Floor/source/FloorProc.cpp | 54 +- .../Fracture.xcodeproj/christopherjohnson.pbxuser | 4 +- .../christopherjohnson.perspectivev3 | 13 +- plugins/MacVST/Fracture/source/Fracture.cpp | 7 +- plugins/MacVST/Fracture/source/Fracture.h | 7 +- plugins/MacVST/Fracture/source/FractureProc.cpp | 62 +- .../FromTape.xcodeproj/christopherjohnson.pbxuser | 34 +- .../christopherjohnson.perspectivev3 | 52 +- .../FromTape/FromTape.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/FromTape/source/FromTape.cpp | 7 +- plugins/MacVST/FromTape/source/FromTape.h | 7 +- plugins/MacVST/FromTape/source/FromTapeProc.cpp | 62 +- .../Gatelope.xcodeproj/christopherjohnson.pbxuser | 16 +- .../christopherjohnson.perspectivev3 | 28 +- plugins/MacVST/Gatelope/source/GatelopeProc.cpp | 54 +- .../Golem.xcodeproj/christopherjohnson.pbxuser | 40 +- .../christopherjohnson.perspectivev3 | 32 +- plugins/MacVST/Golem/source/Golem.cpp | 6 +- plugins/MacVST/Golem/source/Golem.h | 6 +- plugins/MacVST/Golem/source/GolemProc.cpp | 62 +- .../christopherjohnson.pbxuser | 26 +- .../christopherjohnson.perspectivev3 | 18 +- .../GrooveWear.xcodeproj/project.pbxproj | 4 +- .../project.xcworkspace/contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin .../UserInterfaceState.xcuserstate | Bin .../GrooveWear.xcodeproj/spiadmin.mode1v3 | 0 .../GrooveWear.xcodeproj/spiadmin.pbxuser | 0 .../xcschemes/Gain.xcscheme | 0 .../xcschemes/xcschememanagement.plist | 0 .../xcschemes/xcschememanagement.plist | 0 .../\302\253PROJECTNAME\302\273.xcscheme" | 0 plugins/MacVST/GrooveWear/source/GrooveWear.cpp | 7 +- plugins/MacVST/GrooveWear/source/GrooveWear.h | 7 +- .../MacVST/GrooveWear/source/GrooveWearProc.cpp | 62 +- .../christopherjohnson.pbxuser | 24 +- .../christopherjohnson.perspectivev3 | 30 +- .../GuitarConditioner/source/GuitarConditioner.cpp | 7 +- .../GuitarConditioner/source/GuitarConditioner.h | 9 +- .../source/GuitarConditionerProc.cpp | 67 +- .../christopherjohnson.pbxuser | 27 +- .../christopherjohnson.perspectivev3 | 28 +- plugins/MacVST/HardVacuum/source/HardVacuum.cpp | 7 +- plugins/MacVST/HardVacuum/source/HardVacuum.h | 7 +- .../MacVST/HardVacuum/source/HardVacuumProc.cpp | 62 +- .../HermeTrim.xcodeproj/christopherjohnson.pbxuser | 23 +- .../christopherjohnson.perspectivev3 | 28 +- plugins/MacVST/HermeTrim/source/HermeTrim.cpp | 7 +- plugins/MacVST/HermeTrim/source/HermeTrim.h | 7 +- plugins/MacVST/HermeTrim/source/HermeTrimProc.cpp | 62 +- .../Hermepass.xcodeproj/christopherjohnson.pbxuser | 30 +- .../christopherjohnson.perspectivev3 | 35 +- plugins/MacVST/Hermepass/source/Hermepass.cpp | 7 +- plugins/MacVST/Hermepass/source/Hermepass.h | 9 +- plugins/MacVST/Hermepass/source/HermepassProc.cpp | 66 +- .../christopherjohnson.pbxuser | 4 +- .../christopherjohnson.perspectivev3 | 9 +- plugins/MacVST/HighImpact/source/HighImpact.cpp | 7 +- plugins/MacVST/HighImpact/source/HighImpact.h | 7 +- .../MacVST/HighImpact/source/HighImpactProc.cpp | 62 +- .../Highpass.xcodeproj/christopherjohnson.pbxuser | 30 +- .../christopherjohnson.perspectivev3 | 29 +- plugins/MacVST/Highpass/source/Highpass.cpp | 6 +- plugins/MacVST/Highpass/source/Highpass.h | 9 +- plugins/MacVST/Highpass/source/HighpassProc.cpp | 68 +- .../Hombre.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 9 +- .../MacVST/Hombre/Hombre.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/Hombre/source/Hombre.cpp | 7 +- plugins/MacVST/Hombre/source/Hombre.h | 7 +- plugins/MacVST/Hombre/source/HombreProc.cpp | 62 +- .../christopherjohnson.pbxuser | 18 +- .../christopherjohnson.perspectivev3 | 21 +- plugins/MacVST/IronOxide5/source/IronOxide5.cpp | 7 +- plugins/MacVST/IronOxide5/source/IronOxide5.h | 7 +- .../MacVST/IronOxide5/source/IronOxide5Proc.cpp | 62 +- .../christopherjohnson.pbxuser | 20 +- .../christopherjohnson.perspectivev3 | 25 +- .../IronOxideClassic.xcodeproj/project.pbxproj | 4 +- .../IronOxideClassic/source/IronOxideClassic.cpp | 7 +- .../IronOxideClassic/source/IronOxideClassic.h | 7 +- .../source/IronOxideClassicProc.cpp | 64 +- .../Logical4.xcodeproj/christopherjohnson.pbxuser | 26 +- .../christopherjohnson.perspectivev3 | 27 +- plugins/MacVST/Logical4/source/Logical4.cpp | 7 +- plugins/MacVST/Logical4/source/Logical4.h | 6 +- plugins/MacVST/Logical4/source/Logical4Proc.cpp | 68 +- .../Loud/Loud.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 13 +- plugins/MacVST/Loud/source/Loud.cpp | 7 +- plugins/MacVST/Loud/source/Loud.h | 7 +- plugins/MacVST/Loud/source/LoudProc.cpp | 62 +- .../Lowpass.xcodeproj/christopherjohnson.pbxuser | 42 +- .../christopherjohnson.perspectivev3 | 30 +- plugins/MacVST/Lowpass/source/Lowpass.cpp | 6 +- plugins/MacVST/Lowpass/source/Lowpass.h | 9 +- plugins/MacVST/Lowpass/source/LowpassProc.cpp | 68 +- .../Melt/Melt.xcodeproj/christopherjohnson.pbxuser | 12 +- .../christopherjohnson.perspectivev3 | 21 +- plugins/MacVST/Melt/source/Melt.cpp | 7 +- plugins/MacVST/Melt/source/Melt.h | 7 +- plugins/MacVST/Melt/source/MeltProc.cpp | 62 +- .../MidSide.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 13 +- plugins/MacVST/MidSide/source/MidSide.cpp | 7 +- plugins/MacVST/MidSide/source/MidSide.h | 7 +- plugins/MacVST/MidSide/source/MidSideProc.cpp | 62 +- .../christopherjohnson.pbxuser | 48 +- .../christopherjohnson.perspectivev3 | 64 +- plugins/MacVST/NCSeventeen/source/NCSeventeen.cpp | 7 +- plugins/MacVST/NCSeventeen/source/NCSeventeen.h | 7 +- .../MacVST/NCSeventeen/source/NCSeventeenProc.cpp | 62 +- .../Noise.xcodeproj/christopherjohnson.pbxuser | 16 +- .../christopherjohnson.perspectivev3 | 20 +- plugins/MacVST/Noise/source/Noise.cpp | 7 +- plugins/MacVST/Noise/source/Noise.h | 7 +- plugins/MacVST/Noise/source/NoiseProc.cpp | 62 +- .../christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 8 +- .../NonlinearSpace.xcodeproj/project.pbxproj | 4 +- .../NonlinearSpace/source/NonlinearSpace.cpp | 7 +- .../MacVST/NonlinearSpace/source/NonlinearSpace.h | 7 +- .../NonlinearSpace/source/NonlinearSpaceProc.cpp | 62 +- .../christopherjohnson.pbxuser | 26 +- .../christopherjohnson.perspectivev3 | 30 +- .../christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 18 +- .../OneCornerClip.xcodeproj/project.pbxproj | 4 +- .../MacVST/OneCornerClip/source/OneCornerClip.cpp | 7 +- .../MacVST/OneCornerClip/source/OneCornerClip.h | 7 +- .../OneCornerClip/source/OneCornerClipProc.cpp | 62 +- .../PDBuss.xcodeproj/christopherjohnson.pbxuser | 20 +- .../christopherjohnson.perspectivev3 | 26 +- plugins/MacVST/PDBuss/source/PDBuss.cpp | 7 +- plugins/MacVST/PDBuss/source/PDBuss.h | 7 +- plugins/MacVST/PDBuss/source/PDBussProc.cpp | 62 +- .../PDChannel.xcodeproj/christopherjohnson.pbxuser | 29 +- .../christopherjohnson.perspectivev3 | 28 +- plugins/MacVST/PDChannel/source/PDChannel.cpp | 7 +- plugins/MacVST/PDChannel/source/PDChannel.h | 7 +- plugins/MacVST/PDChannel/source/PDChannelProc.cpp | 62 +- .../christopherjohnson.pbxuser | 10 +- .../christopherjohnson.perspectivev3 | 13 +- plugins/MacVST/PhaseNudge/source/PhaseNudge.cpp | 7 +- plugins/MacVST/PhaseNudge/source/PhaseNudge.h | 7 +- .../MacVST/PhaseNudge/source/PhaseNudgeProc.cpp | 62 +- .../Point.xcodeproj/christopherjohnson.pbxuser | 26 +- .../christopherjohnson.perspectivev3 | 29 +- plugins/MacVST/Point/source/Point.cpp | 6 +- plugins/MacVST/Point/source/Point.h | 6 +- plugins/MacVST/Point/source/PointProc.cpp | 64 +- .../Pop/Pop.xcodeproj/christopherjohnson.pbxuser | 8 +- .../Pop.xcodeproj/christopherjohnson.perspectivev3 | 11 +- plugins/MacVST/Pop/Pop.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/Pop/source/PopProc.cpp | 54 +- .../PowerSag.xcodeproj/christopherjohnson.pbxuser | 12 +- .../christopherjohnson.perspectivev3 | 21 +- plugins/MacVST/PowerSag/source/PowerSag.cpp | 7 +- plugins/MacVST/PowerSag/source/PowerSag.h | 7 +- plugins/MacVST/PowerSag/source/PowerSagProc.cpp | 62 +- .../Pressure4.xcodeproj/christopherjohnson.pbxuser | 26 +- .../christopherjohnson.perspectivev3 | 29 +- plugins/MacVST/Pressure4/source/Pressure4.cpp | 6 +- plugins/MacVST/Pressure4/source/Pressure4.h | 6 +- plugins/MacVST/Pressure4/source/Pressure4Proc.cpp | 66 +- .../christopherjohnson.pbxuser | 23 +- .../christopherjohnson.perspectivev3 | 29 +- .../project.xcworkspace/contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin .../UserInterfaceState.xcuserstate | Bin .../PurestConsoleBuss.xcodeproj/spiadmin.mode1v3 | 0 .../PurestConsoleBuss.xcodeproj/spiadmin.pbxuser | 0 .../xcschemes/Gain.xcscheme | 0 .../xcschemes/xcschememanagement.plist | 0 .../xcschemes/xcschememanagement.plist | 0 .../\302\253PROJECTNAME\302\273.xcscheme" | 0 .../PurestConsoleBuss/source/PurestConsoleBuss.cpp | 7 +- .../PurestConsoleBuss/source/PurestConsoleBuss.h | 7 +- .../source/PurestConsoleBussProc.cpp | 62 +- .../christopherjohnson.pbxuser | 48 +- .../christopherjohnson.perspectivev3 | 76 +- .../project.xcworkspace/contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin .../UserInterfaceState.xcuserstate | Bin .../spiadmin.mode1v3 | 0 .../spiadmin.pbxuser | 0 .../xcschemes/Gain.xcscheme | 0 .../xcschemes/xcschememanagement.plist | 0 .../xcschemes/xcschememanagement.plist | 0 .../\302\253PROJECTNAME\302\273.xcscheme" | 0 .../source/PurestConsoleChannel.cpp | 7 +- .../source/PurestConsoleChannel.h | 7 +- .../source/PurestConsoleChannelProc.cpp | 62 +- .../christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 10 +- .../project.xcworkspace/contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin .../UserInterfaceState.xcuserstate | Bin .../PurestDrive.xcodeproj/spiadmin.mode1v3 | 0 .../PurestDrive.xcodeproj/spiadmin.pbxuser | 0 .../xcschemes/Gain.xcscheme | 0 .../xcschemes/xcschememanagement.plist | 0 .../xcschemes/xcschememanagement.plist | 0 .../\302\253PROJECTNAME\302\273.xcscheme" | 0 plugins/MacVST/PurestDrive/source/PurestDrive.cpp | 7 +- plugins/MacVST/PurestDrive/source/PurestDrive.h | 7 +- .../MacVST/PurestDrive/source/PurestDriveProc.cpp | 62 +- .../christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 17 +- .../PurestEcho.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/PurestEcho/source/PurestEcho.cpp | 7 +- plugins/MacVST/PurestEcho/source/PurestEcho.h | 7 +- .../MacVST/PurestEcho/source/PurestEchoProc.cpp | 62 +- .../christopherjohnson.pbxuser | 14 +- .../christopherjohnson.perspectivev3 | 19 +- .../PurestGain.xcodeproj/project.pbxproj | 4 +- .../project.xcworkspace/contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin .../UserInterfaceState.xcuserstate | Bin .../PurestGain.xcodeproj/spiadmin.mode1v3 | 0 .../PurestGain.xcodeproj/spiadmin.pbxuser | 0 .../xcschemes/Gain.xcscheme | 0 .../xcschemes/xcschememanagement.plist | 0 .../xcschemes/xcschememanagement.plist | 0 .../\302\253PROJECTNAME\302\273.xcscheme" | 0 plugins/MacVST/PurestGain/source/PurestGain.cpp | 7 +- plugins/MacVST/PurestGain/source/PurestGain.h | 7 +- .../MacVST/PurestGain/source/PurestGainProc.cpp | 92 +- .../christopherjohnson.pbxuser | 24 +- .../christopherjohnson.perspectivev3 | 21 +- plugins/MacVST/PurestWarm/source/PurestWarm.cpp | 7 +- plugins/MacVST/PurestWarm/source/PurestWarm.h | 7 +- .../MacVST/PurestWarm/source/PurestWarmProc.cpp | 242 +-- .../Pyewacket.xcodeproj/christopherjohnson.pbxuser | 4 +- .../christopherjohnson.perspectivev3 | 17 +- plugins/MacVST/Pyewacket/source/Pyewacket.cpp | 7 +- plugins/MacVST/Pyewacket/source/Pyewacket.h | 7 +- plugins/MacVST/Pyewacket/source/PyewacketProc.cpp | 62 +- .../christopherjohnson.pbxuser | 14 +- .../christopherjohnson.perspectivev3 | 21 +- .../MacVST/Righteous4/source/Righteous4Proc.cpp | 56 +- .../SideDull.xcodeproj/christopherjohnson.pbxuser | 24 +- .../christopherjohnson.perspectivev3 | 15 +- .../SideDull/SideDull.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/SideDull/source/SideDull.cpp | 6 +- plugins/MacVST/SideDull/source/SideDull.h | 6 +- plugins/MacVST/SideDull/source/SideDullProc.cpp | 66 +- .../Sidepass.xcodeproj/christopherjohnson.pbxuser | 24 +- .../christopherjohnson.perspectivev3 | 23 +- plugins/MacVST/Sidepass/source/Sidepass.cpp | 6 +- plugins/MacVST/Sidepass/source/Sidepass.h | 6 +- plugins/MacVST/Sidepass/source/SidepassProc.cpp | 62 +- .../christopherjohnson.pbxuser | 43 +- .../christopherjohnson.perspectivev3 | 77 +- .../source/SingleEndedTriodeProc.cpp | 54 +- .../Slew/Slew.xcodeproj/christopherjohnson.pbxuser | 16 +- .../christopherjohnson.perspectivev3 | 21 +- .../Slew2.xcodeproj/christopherjohnson.pbxuser | 4 +- .../christopherjohnson.perspectivev3 | 13 +- .../SlewOnly.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 17 +- .../SlewOnly/SlewOnly.xcodeproj/project.pbxproj | 4 +- .../Spiral.xcodeproj/christopherjohnson.pbxuser | 20 +- .../christopherjohnson.perspectivev3 | 33 +- plugins/MacVST/Spiral/source/SpiralProc.cpp | 54 +- .../Spiral2.xcodeproj/christopherjohnson.pbxuser | 43 +- .../christopherjohnson.perspectivev3 | 38 +- plugins/MacVST/Spiral2/source/Spiral2Proc.cpp | 54 +- .../StarChild.xcodeproj/christopherjohnson.pbxuser | 12 +- .../christopherjohnson.perspectivev3 | 21 +- plugins/MacVST/StarChild/source/StarChild.cpp | 7 +- plugins/MacVST/StarChild/source/StarChild.h | 7 +- plugins/MacVST/StarChild/source/StarChildProc.cpp | 62 +- .../StereoFX.xcodeproj/christopherjohnson.pbxuser | 16 +- .../christopherjohnson.perspectivev3 | 24 +- plugins/MacVST/StereoFX/source/StereoFX.cpp | 6 +- plugins/MacVST/StereoFX/source/StereoFX.h | 6 +- plugins/MacVST/StereoFX/source/StereoFXProc.cpp | 62 +- .../SubsOnly.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 17 +- .../SubsOnly/SubsOnly.xcodeproj/project.pbxproj | 4 +- .../Surge.xcodeproj/christopherjohnson.pbxuser | 20 +- .../christopherjohnson.perspectivev3 | 18 +- .../MacVST/Surge/Surge.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/Surge/source/Surge.cpp | 6 +- plugins/MacVST/Surge/source/Surge.h | 6 +- plugins/MacVST/Surge/source/SurgeProc.cpp | 66 +- .../SurgeTide.xcodeproj/christopherjohnson.pbxuser | 22 +- .../christopherjohnson.perspectivev3 | 30 +- plugins/MacVST/SurgeTide/source/SurgeTide.cpp | 6 +- plugins/MacVST/SurgeTide/source/SurgeTide.h | 6 +- plugins/MacVST/SurgeTide/source/SurgeTideProc.cpp | 66 +- .../Swell.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 10 +- .../MacVST/Swell/Swell.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/Swell/source/Swell.cpp | 7 +- plugins/MacVST/Swell/source/Swell.h | 7 +- plugins/MacVST/Swell/source/SwellProc.cpp | 62 +- .../christopherjohnson.pbxuser | 0 .../christopherjohnson.perspectivev3 | 0 .../project.xcworkspace/contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin .../UserInterfaceState.xcuserstate | Bin .../TPDFDither.xcodeproj/spiadmin.mode1v3 | 0 .../TPDFDither.xcodeproj/spiadmin.pbxuser | 0 .../xcschemes/Gain.xcscheme | 0 .../xcschemes/xcschememanagement.plist | 0 .../xcschemes/xcschememanagement.plist | 0 .../\302\253PROJECTNAME\302\273.xcscheme" | 0 .../TapeDelay.xcodeproj/christopherjohnson.pbxuser | 16 +- .../christopherjohnson.perspectivev3 | 28 +- plugins/MacVST/TapeDelay/source/TapeDelayProc.cpp | 54 +- .../christopherjohnson.pbxuser | 32 +- .../christopherjohnson.perspectivev3 | 30 +- .../TapeDither.xcodeproj/project.pbxproj | 4 +- .../TapeDust.xcodeproj/christopherjohnson.pbxuser | 26 +- .../christopherjohnson.perspectivev3 | 23 +- .../TapeDust/TapeDust.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/TapeDust/source/TapeDust.cpp | 6 +- plugins/MacVST/TapeDust/source/TapeDust.h | 6 +- plugins/MacVST/TapeDust/source/TapeDustProc.cpp | 64 +- .../TapeFat.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 17 +- .../TapeFat/TapeFat.xcodeproj/project.pbxproj | 4 +- plugins/MacVST/TapeFat/source/TapeFatProc.cpp | 54 +- .../Thunder.xcodeproj/christopherjohnson.pbxuser | 35 +- .../christopherjohnson.perspectivev3 | 30 +- plugins/MacVST/Thunder/source/Thunder.cpp | 6 +- plugins/MacVST/Thunder/source/Thunder.h | 6 +- plugins/MacVST/Thunder/source/ThunderProc.cpp | 66 +- .../ToTape5.xcodeproj/christopherjohnson.pbxuser | 34 +- .../christopherjohnson.perspectivev3 | 28 +- plugins/MacVST/ToTape5/source/ToTape5.cpp | 7 +- plugins/MacVST/ToTape5/source/ToTape5.h | 7 +- plugins/MacVST/ToTape5/source/ToTape5Proc.cpp | 67 +- .../ToVinyl4.xcodeproj/christopherjohnson.pbxuser | 22 +- .../christopherjohnson.perspectivev3 | 20 +- plugins/MacVST/ToVinyl4/source/ToVinyl4.cpp | 7 +- plugins/MacVST/ToVinyl4/source/ToVinyl4.h | 7 +- plugins/MacVST/ToVinyl4/source/ToVinyl4Proc.cpp | 62 +- .../ToneSlant.xcodeproj/christopherjohnson.pbxuser | 12 +- .../christopherjohnson.perspectivev3 | 21 +- plugins/MacVST/ToneSlant/source/ToneSlant.cpp | 7 +- plugins/MacVST/ToneSlant/source/ToneSlant.h | 7 +- plugins/MacVST/ToneSlant/source/ToneSlantProc.cpp | 62 +- .../TransDesk.xcodeproj/christopherjohnson.pbxuser | 4 +- .../christopherjohnson.perspectivev3 | 9 +- plugins/MacVST/TransDesk/source/TransDesk.cpp | 7 +- plugins/MacVST/TransDesk/source/TransDesk.h | 7 +- plugins/MacVST/TransDesk/source/TransDeskProc.cpp | 62 +- .../Tremolo.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 13 +- plugins/MacVST/Tremolo/source/Tremolo.cpp | 7 +- plugins/MacVST/Tremolo/source/Tremolo.h | 7 +- plugins/MacVST/Tremolo/source/TremoloProc.cpp | 62 +- .../TubeDesk.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 21 +- plugins/MacVST/TubeDesk/source/TubeDesk.cpp | 7 +- plugins/MacVST/TubeDesk/source/TubeDesk.h | 7 +- plugins/MacVST/TubeDesk/source/TubeDeskProc.cpp | 62 +- .../UnBox.xcodeproj/christopherjohnson.pbxuser | 27 +- .../christopherjohnson.perspectivev3 | 28 +- plugins/MacVST/UnBox/source/UnBoxProc.cpp | 54 +- .../VariMu.xcodeproj/christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 16 +- plugins/MacVST/VariMu/source/VariMuProc.cpp | 54 +- .../christopherjohnson.pbxuser | 8 +- .../christopherjohnson.perspectivev3 | 10 +- .../VoiceOfTheStarship.xcodeproj/project.pbxproj | 4 +- .../project.xcworkspace/contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin .../UserInterfaceState.xcuserstate | Bin .../VoiceOfTheStarship.xcodeproj/spiadmin.mode1v3 | 0 .../VoiceOfTheStarship.xcodeproj/spiadmin.pbxuser | 0 .../xcschemes/Gain.xcscheme | 0 .../xcschemes/xcschememanagement.plist | 0 .../xcschemes/xcschememanagement.plist | 0 .../\302\253PROJECTNAME\302\273.xcscheme" | 0 .../source/VoiceOfTheStarship.cpp | 7 +- .../VoiceOfTheStarship/source/VoiceOfTheStarship.h | 7 +- .../source/VoiceOfTheStarshipProc.cpp | 62 +- .../Wider.xcodeproj/christopherjohnson.pbxuser | 30 +- .../christopherjohnson.perspectivev3 | 20 +- plugins/MacVST/Wider/source/Wider.cpp | 7 +- plugins/MacVST/Wider/source/Wider.h | 7 +- plugins/MacVST/Wider/source/WiderProc.cpp | 62 +- .../MacVST/uLawDecode/source/uLawDecodeProc.cpp | 54 +- .../christopherjohnson.pbxuser | 4 +- .../christopherjohnson.perspectivev3 | 17 +- .../MacVST/uLawEncode/source/uLawEncodeProc.cpp | 54 +- .../christopherjohnson.pbxuser | 4 +- .../christopherjohnson.perspectivev3 | 9 +- plugins/WinVST/ADClip7/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/ADClip7/ADClip7.cpp | 7 +- plugins/WinVST/ADClip7/ADClip7.h | 7 +- plugins/WinVST/ADClip7/ADClip7Proc.cpp | 64 +- plugins/WinVST/ADT/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/ADT/ADTProc.cpp | 54 +- .../WinVST/AQuickVoiceClip/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.cpp | 7 +- plugins/WinVST/AQuickVoiceClip/AQuickVoiceClip.h | 7 +- .../WinVST/AQuickVoiceClip/AQuickVoiceClipProc.cpp | 62 +- .../Acceleration/.vs/Console4Channel64/v14/.suo | Bin .../WinVST/Acceleration/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes plugins/WinVST/Acceleration/Acceleration.cpp | 7 +- plugins/WinVST/Acceleration/Acceleration.h | 7 +- plugins/WinVST/Acceleration/AccelerationProc.cpp | 62 +- plugins/WinVST/Acceleration/VSTProject.sln | 0 plugins/WinVST/Acceleration/VSTProject.vcxproj | 0 .../WinVST/Acceleration/VSTProject.vcxproj.filters | 0 .../WinVST/Acceleration/VSTProject.vcxproj.user | 0 plugins/WinVST/Acceleration/vstplug.def | 0 plugins/WinVST/Air/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Air/Air.cpp | 7 +- plugins/WinVST/Air/Air.h | 7 +- plugins/WinVST/Air/AirProc.cpp | 62 +- .../WinVST/AtmosphereBuss/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes .../WinVST/AtmosphereBuss/AtmosphereBussProc.cpp | 56 +- .../AtmosphereChannel/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes .../AtmosphereChannel/AtmosphereChannelProc.cpp | 56 +- plugins/WinVST/Aura/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Aura/Aura.cpp | 7 +- plugins/WinVST/Aura/Aura.h | 7 +- plugins/WinVST/Aura/AuraProc.cpp | 62 +- plugins/WinVST/Average/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Average/Average.cpp | 7 +- plugins/WinVST/Average/Average.h | 7 +- plugins/WinVST/Average/AverageProc.cpp | 66 +- plugins/WinVST/BassKit/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/BassKit/BassKitProc.cpp | 54 +- plugins/WinVST/BitGlitter/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/BitGlitter/BitGlitter.cpp | 3 + plugins/WinVST/BitGlitter/BitGlitter.h | 3 + plugins/WinVST/BitGlitter/BitGlitterProc.cpp | 19 + .../BitShiftGain/.vs/Console4Channel64/v14/.suo | Bin .../WinVST/BitShiftGain/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/BitShiftGain/BitShiftGain.cpp | 0 plugins/WinVST/BitShiftGain/BitShiftGain.h | 0 plugins/WinVST/BitShiftGain/BitShiftGainProc.cpp | 0 plugins/WinVST/BitShiftGain/VSTProject.sln | 0 plugins/WinVST/BitShiftGain/VSTProject.vcxproj | 0 .../WinVST/BitShiftGain/VSTProject.vcxproj.filters | 0 .../WinVST/BitShiftGain/VSTProject.vcxproj.user | 0 plugins/WinVST/BitShiftGain/vstplug.def | 0 plugins/WinVST/Bite/.vs/VSTProject/v14/.suo | Bin 23552 -> 22528 bytes plugins/WinVST/Bite/Bite.cpp | 7 +- plugins/WinVST/Bite/Bite.h | 7 +- plugins/WinVST/Bite/BiteProc.cpp | 62 +- plugins/WinVST/BuildATPDF/.vs/VSTProject/v14/.suo | Bin 23040 -> 22528 bytes plugins/WinVST/BussColors4/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/BussColors4/BussColors4.cpp | 22 +- plugins/WinVST/BussColors4/BussColors4.h | 7 +- plugins/WinVST/BussColors4/BussColors4Proc.cpp | 62 +- plugins/WinVST/ButterComp/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/ButterComp/ButterComp.cpp | 7 +- plugins/WinVST/ButterComp/ButterComp.h | 7 +- plugins/WinVST/ButterComp/ButterCompProc.cpp | 62 +- plugins/WinVST/ButterComp2/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/ButterComp2/ButterComp2Proc.cpp | 54 +- plugins/WinVST/C5RawBuss/.vs/VSTProject/v14/.suo | Bin 25088 -> 23040 bytes plugins/WinVST/C5RawBuss/C5RawBuss.cpp | 7 +- plugins/WinVST/C5RawBuss/C5RawBuss.h | 7 +- plugins/WinVST/C5RawBuss/C5RawBussProc.cpp | 62 +- .../WinVST/C5RawChannel/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes plugins/WinVST/C5RawChannel/C5RawChannel.cpp | 7 +- plugins/WinVST/C5RawChannel/C5RawChannel.h | 7 +- plugins/WinVST/C5RawChannel/C5RawChannelProc.cpp | 62 +- plugins/WinVST/CStrip/.vs/VSTProject/v14/.suo | Bin 24576 -> 22528 bytes plugins/WinVST/CStrip/CStrip.cpp | 7 +- plugins/WinVST/CStrip/CStrip.h | 7 +- plugins/WinVST/CStrip/CStripProc.cpp | 62 +- plugins/WinVST/Capacitor/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/Capacitor/Capacitor.cpp | 7 +- plugins/WinVST/Capacitor/Capacitor.h | 7 +- plugins/WinVST/Capacitor/CapacitorProc.cpp | 62 +- plugins/WinVST/Channel6/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/Channel6/Channel6Proc.cpp | 54 +- plugins/WinVST/Chorus/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Chorus/Chorus.cpp | 7 +- plugins/WinVST/Chorus/Chorus.h | 8 +- plugins/WinVST/Chorus/ChorusProc.cpp | 62 +- .../WinVST/ChorusEnsemble/.vs/VSTProject/v14/.suo | Bin 23040 -> 22528 bytes plugins/WinVST/ChorusEnsemble/ChorusEnsemble.cpp | 7 +- plugins/WinVST/ChorusEnsemble/ChorusEnsemble.h | 7 +- .../WinVST/ChorusEnsemble/ChorusEnsembleProc.cpp | 64 +- plugins/WinVST/ClipOnly/.vs/VSTProject/v14/.suo | Bin 23040 -> 24576 bytes .../WinVST/Console4Buss/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/Console4Buss/Console4Buss.cpp | 7 +- plugins/WinVST/Console4Buss/Console4Buss.h | 7 +- plugins/WinVST/Console4Buss/Console4BussProc.cpp | 63 +- .../WinVST/Console4Channel/.vs/VSTProject/v14/.suo | Bin 23040 -> 25088 bytes plugins/WinVST/Console4Channel/Console4Channel.cpp | 7 +- plugins/WinVST/Console4Channel/Console4Channel.h | 7 +- .../WinVST/Console4Channel/Console4ChannelProc.cpp | 63 +- .../WinVST/Console5Buss/.vs/VSTProject/v14/.suo | Bin 23552 -> 23040 bytes plugins/WinVST/Console5Buss/Console5Buss.cpp | 7 +- plugins/WinVST/Console5Buss/Console5Buss.h | 7 +- plugins/WinVST/Console5Buss/Console5BussProc.cpp | 62 +- .../WinVST/Console5Channel/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/Console5Channel/Console5Channel.cpp | 7 +- plugins/WinVST/Console5Channel/Console5Channel.h | 7 +- .../WinVST/Console5Channel/Console5ChannelProc.cpp | 62 +- .../WinVST/Console5DarkCh/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/Console5DarkCh/Console5DarkCh.cpp | 7 +- plugins/WinVST/Console5DarkCh/Console5DarkCh.h | 7 +- .../WinVST/Console5DarkCh/Console5DarkChProc.cpp | 62 +- .../CrunchyGrooveWear/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes .../WinVST/CrunchyGrooveWear/CrunchyGrooveWear.cpp | 7 +- .../WinVST/CrunchyGrooveWear/CrunchyGrooveWear.h | 7 +- .../CrunchyGrooveWear/CrunchyGrooveWearProc.cpp | 62 +- plugins/WinVST/Crystal/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Crystal/CrystalProc.cpp | 54 +- plugins/WinVST/DeEss/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/DeEss/DeEssProc.cpp | 54 +- plugins/WinVST/DeRez/.vs/VSTProject/v14/.suo | Bin 25088 -> 22528 bytes plugins/WinVST/DeRez/DeRez.cpp | 7 +- plugins/WinVST/DeRez/DeRez.h | 7 +- plugins/WinVST/DeRez/DeRezProc.cpp | 62 +- plugins/WinVST/Density/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Density/Density.cpp | 7 +- plugins/WinVST/Density/Density.h | 9 +- plugins/WinVST/Density/DensityProc.cpp | 64 +- plugins/WinVST/Desk/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Desk/Desk.cpp | 7 +- plugins/WinVST/Desk/Desk.h | 7 +- plugins/WinVST/Desk/DeskProc.cpp | 62 +- plugins/WinVST/Desk4/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Desk4/Desk4.cpp | 7 +- plugins/WinVST/Desk4/Desk4.h | 7 +- plugins/WinVST/Desk4/Desk4Proc.cpp | 62 +- plugins/WinVST/Distance/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/Distance/Distance.cpp | 7 +- plugins/WinVST/Distance/Distance.h | 7 +- plugins/WinVST/Distance/DistanceProc.cpp | 62 +- plugins/WinVST/Distance2/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/Distance2/Distance2Proc.cpp | 54 +- .../DitherFloat/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/WinVST/DitherFloat/.vs/VSTProject/v14/.suo | Bin 0 -> 23040 bytes plugins/WinVST/DitherFloat/DitherFloat.cpp | 127 ++ plugins/WinVST/DitherFloat/DitherFloat.h | 64 + plugins/WinVST/DitherFloat/DitherFloatProc.cpp | 184 ++ plugins/WinVST/DitherFloat/VSTProject.sln | 28 + plugins/WinVST/DitherFloat/VSTProject.vcxproj | 183 ++ .../WinVST/DitherFloat/VSTProject.vcxproj.filters | 48 + plugins/WinVST/DitherFloat/VSTProject.vcxproj.user | 19 + plugins/WinVST/DitherFloat/vstplug.def | 3 + plugins/WinVST/Drive/.vs/VSTProject/v14/.suo | Bin 22528 -> 24576 bytes plugins/WinVST/Drive/Drive.cpp | 7 +- plugins/WinVST/Drive/Drive.h | 9 +- plugins/WinVST/Drive/DriveProc.cpp | 64 +- plugins/WinVST/DrumSlam/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/DrumSlam/DrumSlam.cpp | 7 +- plugins/WinVST/DrumSlam/DrumSlam.h | 9 +- plugins/WinVST/DrumSlam/DrumSlamProc.cpp | 66 +- plugins/WinVST/DubCenter/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/DubCenter/DubCenterProc.cpp | 54 +- plugins/WinVST/DubSub/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/DubSub/DubSubProc.cpp | 54 +- plugins/WinVST/DustBunny/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/EQ/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/EQ/EQ.cpp | 7 +- plugins/WinVST/EQ/EQ.h | 7 +- plugins/WinVST/EQ/EQProc.cpp | 62 +- plugins/WinVST/EdIsDim/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/EdIsDim/EdIsDim.cpp | 7 +- plugins/WinVST/EdIsDim/EdIsDim.h | 7 +- plugins/WinVST/EdIsDim/EdIsDimProc.cpp | 62 +- plugins/WinVST/ElectroHat/.vs/VSTProject/v14/.suo | Bin 24576 -> 23040 bytes plugins/WinVST/ElectroHat/ElectroHat.cpp | 7 +- plugins/WinVST/ElectroHat/ElectroHat.h | 7 +- plugins/WinVST/ElectroHat/ElectroHatProc.cpp | 62 +- plugins/WinVST/Energy/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Energy/EnergyProc.cpp | 54 +- plugins/WinVST/Ensemble/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/Ensemble/Ensemble.cpp | 7 +- plugins/WinVST/Ensemble/Ensemble.h | 9 +- plugins/WinVST/Ensemble/EnsembleProc.cpp | 66 +- plugins/WinVST/EveryTrim/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/EveryTrim/EveryTrim.cpp | 7 +- plugins/WinVST/EveryTrim/EveryTrim.h | 7 +- plugins/WinVST/EveryTrim/EveryTrimProc.cpp | 62 +- plugins/WinVST/FathomFive/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/FathomFive/FathomFive.cpp | 10 - plugins/WinVST/Floor/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Floor/FloorProc.cpp | 54 +- plugins/WinVST/Fracture/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/Fracture/Fracture.cpp | 7 +- plugins/WinVST/Fracture/Fracture.h | 7 +- plugins/WinVST/Fracture/FractureProc.cpp | 62 +- plugins/WinVST/FromTape/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/FromTape/FromTape.cpp | 7 +- plugins/WinVST/FromTape/FromTape.h | 7 +- plugins/WinVST/FromTape/FromTapeProc.cpp | 62 +- plugins/WinVST/Gatelope/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes plugins/WinVST/Gatelope/GatelopeProc.cpp | 54 +- plugins/WinVST/Golem/.vs/VSTProject/v14/.suo | Bin 25600 -> 22528 bytes plugins/WinVST/Golem/Golem.cpp | 6 +- plugins/WinVST/Golem/Golem.h | 6 +- plugins/WinVST/Golem/GolemProc.cpp | 62 +- .../GrooveWear/.vs/Console4Channel64/v14/.suo | Bin plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/GrooveWear/GrooveWear.cpp | 7 +- plugins/WinVST/GrooveWear/GrooveWear.h | 7 +- plugins/WinVST/GrooveWear/GrooveWearProc.cpp | 62 +- plugins/WinVST/GrooveWear/VSTProject.VC.db | Bin 0 -> 29614080 bytes plugins/WinVST/GrooveWear/VSTProject.sln | 28 - plugins/WinVST/GrooveWear/VSTProject.vcxproj | 0 .../WinVST/GrooveWear/VSTProject.vcxproj.filters | 0 plugins/WinVST/GrooveWear/VSTProject.vcxproj.user | 0 plugins/WinVST/GrooveWear/vstplug.def | 0 .../GuitarConditioner/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes .../WinVST/GuitarConditioner/GuitarConditioner.cpp | 7 +- .../WinVST/GuitarConditioner/GuitarConditioner.h | 9 +- .../GuitarConditioner/GuitarConditionerProc.cpp | 67 +- plugins/WinVST/HardVacuum/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes plugins/WinVST/HardVacuum/HardVacuum.cpp | 7 +- plugins/WinVST/HardVacuum/HardVacuum.h | 7 +- plugins/WinVST/HardVacuum/HardVacuumProc.cpp | 62 +- plugins/WinVST/HermeTrim/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/HermeTrim/HermeTrim.cpp | 7 +- plugins/WinVST/HermeTrim/HermeTrim.h | 7 +- plugins/WinVST/HermeTrim/HermeTrimProc.cpp | 62 +- plugins/WinVST/Hermepass/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/Hermepass/Hermepass.cpp | 7 +- plugins/WinVST/Hermepass/Hermepass.h | 9 +- plugins/WinVST/Hermepass/HermepassProc.cpp | 66 +- plugins/WinVST/HighImpact/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes plugins/WinVST/HighImpact/HighImpact.cpp | 7 +- plugins/WinVST/HighImpact/HighImpact.h | 7 +- plugins/WinVST/HighImpact/HighImpactProc.cpp | 62 +- plugins/WinVST/Highpass/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/Highpass/Highpass.cpp | 6 +- plugins/WinVST/Highpass/Highpass.h | 9 +- plugins/WinVST/Highpass/HighpassProc.cpp | 68 +- plugins/WinVST/Hombre/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Hombre/Hombre.cpp | 7 +- plugins/WinVST/Hombre/Hombre.h | 7 +- plugins/WinVST/Hombre/HombreProc.cpp | 62 +- plugins/WinVST/IronOxide5/.vs/VSTProject/v14/.suo | Bin 23040 -> 24576 bytes plugins/WinVST/IronOxide5/IronOxide5.cpp | 7 +- plugins/WinVST/IronOxide5/IronOxide5.h | 7 +- plugins/WinVST/IronOxide5/IronOxide5Proc.cpp | 62 +- .../IronOxideClassic/.vs/VSTProject/v14/.suo | Bin 23040 -> 22528 bytes .../WinVST/IronOxideClassic/IronOxideClassic.cpp | 7 +- plugins/WinVST/IronOxideClassic/IronOxideClassic.h | 7 +- .../IronOxideClassic/IronOxideClassicProc.cpp | 64 +- plugins/WinVST/Logical4/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/Logical4/Logical4.cpp | 7 +- plugins/WinVST/Logical4/Logical4.h | 6 +- plugins/WinVST/Logical4/Logical4Proc.cpp | 68 +- plugins/WinVST/Loud/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Loud/Loud.cpp | 7 +- plugins/WinVST/Loud/Loud.h | 7 +- plugins/WinVST/Loud/LoudProc.cpp | 62 +- plugins/WinVST/Lowpass/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Lowpass/Lowpass.cpp | 6 +- plugins/WinVST/Lowpass/Lowpass.h | 9 +- plugins/WinVST/Lowpass/LowpassProc.cpp | 68 +- plugins/WinVST/Melt/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Melt/Melt.cpp | 7 +- plugins/WinVST/Melt/Melt.h | 7 +- plugins/WinVST/Melt/MeltProc.cpp | 62 +- plugins/WinVST/MidSide/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/MidSide/MidSide.cpp | 7 +- plugins/WinVST/MidSide/MidSide.h | 7 +- plugins/WinVST/MidSide/MidSideProc.cpp | 62 +- .../WinVST/NC-17/.vs/Console4Channel64/v14/.suo | Bin 0 -> 32768 bytes plugins/WinVST/NC-17/.vs/VSTProject/v14/.suo | Bin 0 -> 25088 bytes plugins/WinVST/NC-17/NCSeventeen.cpp | 144 ++ plugins/WinVST/NC-17/NCSeventeen.h | 81 + plugins/WinVST/NC-17/NCSeventeenProc.cpp | 721 +++++++ plugins/WinVST/NC-17/VSTProject.sln | 28 + plugins/WinVST/NC-17/VSTProject.vcxproj | 183 ++ plugins/WinVST/NC-17/VSTProject.vcxproj.filters | 48 + plugins/WinVST/NC-17/VSTProject.vcxproj.user | 19 + plugins/WinVST/NC-17/vstplug.def | 3 + plugins/WinVST/Noise/.vs/VSTProject/v14/.suo | Bin 25088 -> 22528 bytes plugins/WinVST/Noise/Noise.cpp | 7 +- plugins/WinVST/Noise/Noise.h | 7 +- plugins/WinVST/Noise/NoiseProc.cpp | 62 +- .../WinVST/NonlinearSpace/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes plugins/WinVST/NonlinearSpace/NonlinearSpace.cpp | 7 +- plugins/WinVST/NonlinearSpace/NonlinearSpace.h | 7 +- .../WinVST/NonlinearSpace/NonlinearSpaceProc.cpp | 62 +- .../WinVST/OneCornerClip/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/OneCornerClip/OneCornerClip.cpp | 7 +- plugins/WinVST/OneCornerClip/OneCornerClip.h | 7 +- plugins/WinVST/OneCornerClip/OneCornerClipProc.cpp | 62 +- plugins/WinVST/PDBuss/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/PDBuss/PDBuss.cpp | 7 +- plugins/WinVST/PDBuss/PDBuss.h | 7 +- plugins/WinVST/PDBuss/PDBussProc.cpp | 62 +- plugins/WinVST/PDChannel/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/PDChannel/PDChannel.cpp | 7 +- plugins/WinVST/PDChannel/PDChannel.h | 7 +- plugins/WinVST/PDChannel/PDChannelProc.cpp | 62 +- plugins/WinVST/PhaseNudge/.vs/VSTProject/v14/.suo | Bin 23040 -> 24576 bytes plugins/WinVST/PhaseNudge/PhaseNudge.cpp | 7 +- plugins/WinVST/PhaseNudge/PhaseNudge.h | 7 +- plugins/WinVST/PhaseNudge/PhaseNudgeProc.cpp | 62 +- plugins/WinVST/Point/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Point/Point.cpp | 6 +- plugins/WinVST/Point/Point.h | 6 +- plugins/WinVST/Point/PointProc.cpp | 64 +- plugins/WinVST/Pop/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Pop/PopProc.cpp | 54 +- plugins/WinVST/PowerSag/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/PowerSag/PowerSag.cpp | 7 +- plugins/WinVST/PowerSag/PowerSag.h | 7 +- plugins/WinVST/PowerSag/PowerSagProc.cpp | 62 +- plugins/WinVST/Pressure4/.vs/VSTProject/v14/.suo | Bin 23040 -> 22528 bytes plugins/WinVST/Pressure4/Pressure4.cpp | 6 +- plugins/WinVST/Pressure4/Pressure4.h | 6 +- plugins/WinVST/Pressure4/Pressure4Proc.cpp | 66 +- .../.vs/Console4Channel64/v14/.suo | Bin .../PurestConsoleBuss/.vs/VSTProject/v14/.suo | Bin 23040 -> 25088 bytes .../WinVST/PurestConsoleBuss/PurestConsoleBuss.cpp | 7 +- .../WinVST/PurestConsoleBuss/PurestConsoleBuss.h | 7 +- .../PurestConsoleBuss/PurestConsoleBussProc.cpp | 62 +- plugins/WinVST/PurestConsoleBuss/VSTProject.sln | 0 .../WinVST/PurestConsoleBuss/VSTProject.vcxproj | 0 .../PurestConsoleBuss/VSTProject.vcxproj.filters | 0 .../PurestConsoleBuss/VSTProject.vcxproj.user | 0 plugins/WinVST/PurestConsoleBuss/vstplug.def | 0 .../.vs/Console4Channel64/v14/.suo | Bin .../PurestConsoleChannel/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes .../PurestConsoleChannel/PurestConsoleChannel.cpp | 7 +- .../PurestConsoleChannel/PurestConsoleChannel.h | 7 +- .../PurestConsoleChannelProc.cpp | 62 +- plugins/WinVST/PurestConsoleChannel/VSTProject.sln | 0 .../WinVST/PurestConsoleChannel/VSTProject.vcxproj | 0 .../VSTProject.vcxproj.filters | 0 .../PurestConsoleChannel/VSTProject.vcxproj.user | 0 plugins/WinVST/PurestConsoleChannel/vstplug.def | 0 .../PurestDrive/.vs/Console4Channel64/v14/.suo | Bin plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes plugins/WinVST/PurestDrive/PurestDrive.cpp | 7 +- plugins/WinVST/PurestDrive/PurestDrive.h | 7 +- plugins/WinVST/PurestDrive/PurestDriveProc.cpp | 62 +- plugins/WinVST/PurestDrive/VSTProject.sln | 0 plugins/WinVST/PurestDrive/VSTProject.vcxproj | 0 .../WinVST/PurestDrive/VSTProject.vcxproj.filters | 0 plugins/WinVST/PurestDrive/VSTProject.vcxproj.user | 0 plugins/WinVST/PurestDrive/vstplug.def | 0 plugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/PurestEcho/PurestEcho.cpp | 7 +- plugins/WinVST/PurestEcho/PurestEcho.h | 7 +- plugins/WinVST/PurestEcho/PurestEchoProc.cpp | 62 +- .../PurestGain/.vs/Console4Channel64/v14/.suo | Bin plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo | Bin 23040 -> 22528 bytes plugins/WinVST/PurestGain/PurestGain.cpp | 7 +- plugins/WinVST/PurestGain/PurestGain.h | 7 +- plugins/WinVST/PurestGain/PurestGainProc.cpp | 92 +- plugins/WinVST/PurestGain/VSTProject.sln | 0 plugins/WinVST/PurestGain/VSTProject.vcxproj | 0 .../WinVST/PurestGain/VSTProject.vcxproj.filters | 0 plugins/WinVST/PurestGain/VSTProject.vcxproj.user | 0 plugins/WinVST/PurestGain/vstplug.def | 0 plugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes plugins/WinVST/PurestWarm/PurestWarm.cpp | 7 +- plugins/WinVST/PurestWarm/PurestWarm.h | 7 +- plugins/WinVST/PurestWarm/PurestWarmProc.cpp | 242 +-- plugins/WinVST/Pyewacket/.vs/VSTProject/v14/.suo | Bin 23040 -> 22528 bytes plugins/WinVST/Pyewacket/Pyewacket.cpp | 7 +- plugins/WinVST/Pyewacket/Pyewacket.h | 7 +- plugins/WinVST/Pyewacket/PyewacketProc.cpp | 62 +- plugins/WinVST/Righteous4/.vs/VSTProject/v14/.suo | Bin 24576 -> 24576 bytes plugins/WinVST/Righteous4/Righteous4Proc.cpp | 56 +- plugins/WinVST/SideDull/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/SideDull/SideDull.cpp | 6 +- plugins/WinVST/SideDull/SideDull.h | 6 +- plugins/WinVST/SideDull/SideDullProc.cpp | 66 +- plugins/WinVST/Sidepass/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/Sidepass/Sidepass.cpp | 6 +- plugins/WinVST/Sidepass/Sidepass.h | 6 +- plugins/WinVST/Sidepass/SidepassProc.cpp | 62 +- .../SingleEndedTriode/.vs/VSTProject/v14/.suo | Bin 25600 -> 23040 bytes .../SingleEndedTriode/SingleEndedTriodeProc.cpp | 54 +- plugins/WinVST/Slew/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Slew2/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes plugins/WinVST/Spiral/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Spiral/SpiralProc.cpp | 54 +- plugins/WinVST/Spiral2/.vs/VSTProject/v14/.suo | Bin 22528 -> 24576 bytes plugins/WinVST/Spiral2/Spiral2Proc.cpp | 54 +- plugins/WinVST/StarChild/.vs/VSTProject/v14/.suo | Bin 23040 -> 22528 bytes plugins/WinVST/StarChild/StarChild.cpp | 7 +- plugins/WinVST/StarChild/StarChild.h | 7 +- plugins/WinVST/StarChild/StarChildProc.cpp | 62 +- plugins/WinVST/StereoFX/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/StereoFX/StereoFX.cpp | 6 +- plugins/WinVST/StereoFX/StereoFX.h | 6 +- plugins/WinVST/StereoFX/StereoFXProc.cpp | 62 +- plugins/WinVST/SubsOnly/.vs/VSTProject/v14/.suo | Bin 23040 -> 25088 bytes plugins/WinVST/Surge/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Surge/Surge.cpp | 6 +- plugins/WinVST/Surge/Surge.h | 6 +- plugins/WinVST/Surge/SurgeProc.cpp | 66 +- plugins/WinVST/SurgeTide/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/SurgeTide/SurgeTide.cpp | 6 +- plugins/WinVST/SurgeTide/SurgeTide.h | 6 +- plugins/WinVST/SurgeTide/SurgeTideProc.cpp | 66 +- plugins/WinVST/Swell/.vs/VSTProject/v14/.suo | Bin 24576 -> 22528 bytes plugins/WinVST/Swell/Swell.cpp | 7 +- plugins/WinVST/Swell/Swell.h | 7 +- plugins/WinVST/Swell/SwellProc.cpp | 62 +- plugins/WinVST/TapeDelay/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/TapeDelay/TapeDelayProc.cpp | 54 +- plugins/WinVST/TapeDust/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/TapeDust/TapeDust.cpp | 6 +- plugins/WinVST/TapeDust/TapeDust.h | 6 +- plugins/WinVST/TapeDust/TapeDustProc.cpp | 64 +- plugins/WinVST/TapeFat/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/TapeFat/TapeFatProc.cpp | 54 +- plugins/WinVST/Thunder/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Thunder/Thunder.cpp | 6 +- plugins/WinVST/Thunder/Thunder.h | 6 +- plugins/WinVST/Thunder/ThunderProc.cpp | 66 +- plugins/WinVST/ToTape5/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/ToTape5/ToTape5.cpp | 7 +- plugins/WinVST/ToTape5/ToTape5.h | 7 +- plugins/WinVST/ToTape5/ToTape5Proc.cpp | 67 +- plugins/WinVST/ToVinyl4/.vs/VSTProject/v14/.suo | Bin 23040 -> 25088 bytes plugins/WinVST/ToVinyl4/ToVinyl4.cpp | 7 +- plugins/WinVST/ToVinyl4/ToVinyl4.h | 7 +- plugins/WinVST/ToVinyl4/ToVinyl4Proc.cpp | 62 +- plugins/WinVST/ToneSlant/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/ToneSlant/ToneSlant.cpp | 7 +- plugins/WinVST/ToneSlant/ToneSlant.h | 7 +- plugins/WinVST/ToneSlant/ToneSlantProc.cpp | 62 +- plugins/WinVST/TransDesk/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/TransDesk/TransDesk.cpp | 7 +- plugins/WinVST/TransDesk/TransDesk.h | 7 +- plugins/WinVST/TransDesk/TransDeskProc.cpp | 62 +- plugins/WinVST/Tremolo/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Tremolo/Tremolo.cpp | 7 +- plugins/WinVST/Tremolo/Tremolo.h | 7 +- plugins/WinVST/Tremolo/TremoloProc.cpp | 62 +- plugins/WinVST/TubeDesk/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/TubeDesk/TubeDesk.cpp | 7 +- plugins/WinVST/TubeDesk/TubeDesk.h | 7 +- plugins/WinVST/TubeDesk/TubeDeskProc.cpp | 62 +- plugins/WinVST/UnBox/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/UnBox/UnBoxProc.cpp | 54 +- plugins/WinVST/VariMu/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/VariMu/VariMuProc.cpp | 54 +- .../.vs/Console4Channel64/v14/.suo | Bin .../VoiceOfTheStarship/.vs/VSTProject/v14/.suo | Bin 23040 -> 23040 bytes plugins/WinVST/VoiceOfTheStarship/VSTProject.sln | 0 .../WinVST/VoiceOfTheStarship/VSTProject.vcxproj | 0 .../VoiceOfTheStarship/VSTProject.vcxproj.filters | 0 .../VoiceOfTheStarship/VSTProject.vcxproj.user | 0 .../VoiceOfTheStarship/VoiceOfTheStarship.cpp | 7 +- .../WinVST/VoiceOfTheStarship/VoiceOfTheStarship.h | 7 +- .../VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp | 62 +- plugins/WinVST/VoiceOfTheStarship/vstplug.def | 0 plugins/WinVST/Wider/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Wider/Wider.cpp | 7 +- plugins/WinVST/Wider/Wider.h | 7 +- plugins/WinVST/Wider/WiderProc.cpp | 62 +- plugins/WinVST/uLawDecode/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes plugins/WinVST/uLawDecode/uLawDecodeProc.cpp | 54 +- plugins/WinVST/uLawEncode/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes plugins/WinVST/uLawEncode/uLawEncodeProc.cpp | 54 +- 2091 files changed, 30130 insertions(+), 29046 deletions(-) create mode 100755 plugins/LinuxVST/src/ADClip7/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/ADClip7/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/AQuickVoiceClip/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/AQuickVoiceClip/.vs/VSTProject/v14/.suo mode change 100644 => 100755 plugins/LinuxVST/src/Acceleration/Acceleration.cpp mode change 100644 => 100755 plugins/LinuxVST/src/Acceleration/Acceleration.h mode change 100644 => 100755 plugins/LinuxVST/src/Acceleration/AccelerationProc.cpp create mode 100755 plugins/LinuxVST/src/Air/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Air/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Average/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Average/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Bite/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Bite/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/BussColors4/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/BussColors4/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/CStrip/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/CStrip/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Capacitor/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Capacitor/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Channel4/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Channel4/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Chorus/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Chorus/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/ChorusEnsemble/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/ChorusEnsemble/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/ClipOnly/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/ClipOnly/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Console4Buss/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Console4Buss/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Console4Channel/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Console4Channel/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Console5Buss/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Console5Buss/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Console5Channel/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Console5Channel/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Console5DarkCh/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Console5DarkCh/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/DCVoltage/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/DCVoltage/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Density/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Density/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Desk/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Desk/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Desk4/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Desk4/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Distance/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Distance/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/DitherFloat/DitherFloat.cpp create mode 100755 plugins/LinuxVST/src/DitherFloat/DitherFloat.h create mode 100755 plugins/LinuxVST/src/DitherFloat/DitherFloatProc.cpp create mode 100755 plugins/LinuxVST/src/Drive/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Drive/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/DustBunny/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/DustBunny/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/EdIsDim/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/EdIsDim/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Ensemble/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Ensemble/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/EveryTrim/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/EveryTrim/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/FathomFive/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/FathomFive/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Fracture/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Fracture/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/FromTape/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/FromTape/.vs/VSTProject/v14/.suo mode change 100644 => 100755 plugins/LinuxVST/src/GrooveWear/GrooveWear.cpp mode change 100644 => 100755 plugins/LinuxVST/src/GrooveWear/GrooveWear.h mode change 100644 => 100755 plugins/LinuxVST/src/GrooveWear/GrooveWearProc.cpp create mode 100755 plugins/LinuxVST/src/GuitarConditioner/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/GuitarConditioner/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/HermeTrim/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/HermeTrim/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Hermepass/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Hermepass/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/HighImpact/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/HighImpact/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Highpass/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Highpass/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Hombre/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Hombre/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/IronOxide5/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/IronOxide5/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/IronOxideClassic/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/IronOxideClassic/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Logical4/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Logical4/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Loud/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Loud/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Lowpass/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Lowpass/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Melt/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Melt/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/MidSide/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/MidSide/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Noise/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Noise/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/PhaseNudge/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/PhaseNudge/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Point/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Point/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/PowerSag/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/PowerSag/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Pressure4/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Pressure4/.vs/VSTProject/v14/.suo mode change 100644 => 100755 plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.cpp mode change 100644 => 100755 plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBuss.h mode change 100644 => 100755 plugins/LinuxVST/src/PurestConsoleBuss/PurestConsoleBussProc.cpp mode change 100644 => 100755 plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.cpp mode change 100644 => 100755 plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannel.h mode change 100644 => 100755 plugins/LinuxVST/src/PurestConsoleChannel/PurestConsoleChannelProc.cpp mode change 100644 => 100755 plugins/LinuxVST/src/PurestDrive/PurestDrive.cpp mode change 100644 => 100755 plugins/LinuxVST/src/PurestDrive/PurestDrive.h mode change 100644 => 100755 plugins/LinuxVST/src/PurestDrive/PurestDriveProc.cpp create mode 100755 plugins/LinuxVST/src/PurestEcho/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/PurestEcho/.vs/VSTProject/v14/.suo mode change 100644 => 100755 plugins/LinuxVST/src/PurestGain/PurestGain.cpp mode change 100644 => 100755 plugins/LinuxVST/src/PurestGain/PurestGain.h mode change 100644 => 100755 plugins/LinuxVST/src/PurestGain/PurestGainProc.cpp create mode 100755 plugins/LinuxVST/src/PurestWarm/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/PurestWarm/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Pyewacket/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Pyewacket/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/SideDull/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/SideDull/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Sidepass/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Sidepass/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Slew/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Slew/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Slew2/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Slew2/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/SlewOnly/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/SlewOnly/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/StarChild/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/StarChild/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Surge/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Surge/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/SurgeTide/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/SurgeTide/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Swell/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Swell/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/TapeDust/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/TapeDust/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Thunder/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Thunder/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/ToTape5/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/ToTape5/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/ToVinyl4/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/ToVinyl4/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/ToneSlant/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/ToneSlant/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/TransDesk/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/TransDesk/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/Tremolo/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/Tremolo/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/TubeDesk/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/TubeDesk/.vs/VSTProject/v14/.suo create mode 100755 plugins/LinuxVST/src/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/LinuxVST/src/VoiceOfTheStarship/.vs/VSTProject/v14/.suo mode change 100644 => 100755 plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp mode change 100644 => 100755 plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.h mode change 100644 => 100755 plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp mode change 100644 => 100755 plugins/MacAU/Acceleration/Acceleration.cpp mode change 100644 => 100755 plugins/MacAU/Acceleration/Acceleration.h mode change 100644 => 100755 plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.mode1v3 mode change 100644 => 100755 plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacAU/Acceleration/Acceleration.xcodeproj/project.pbxproj mode change 100644 => 100755 plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.mode1v3 mode change 100644 => 100755 plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/project.pbxproj create mode 100755 plugins/MacAU/DitherFloat/DitherFloat.cpp create mode 100755 plugins/MacAU/DitherFloat/DitherFloat.exp create mode 100755 plugins/MacAU/DitherFloat/DitherFloat.h create mode 100755 plugins/MacAU/DitherFloat/DitherFloat.r create mode 100755 plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.mode1v3 create mode 100755 plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser create mode 100755 plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3 create mode 100755 plugins/MacAU/DitherFloat/DitherFloat.xcodeproj/project.pbxproj create mode 100755 plugins/MacAU/DitherFloat/DitherFloatVersion.h create mode 100755 plugins/MacAU/DitherFloat/English.lproj/InfoPlist.strings create mode 100755 plugins/MacAU/DitherFloat/Info.plist create mode 100755 plugins/MacAU/DitherFloat/version.plist mode change 100644 => 100755 plugins/MacAU/GrooveWear/GrooveWear.cpp mode change 100644 => 100755 plugins/MacAU/GrooveWear/GrooveWear.h mode change 100644 => 100755 plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.mode1v3 mode change 100644 => 100755 plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/project.pbxproj mode change 100644 => 100755 plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.cpp mode change 100644 => 100755 plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.h mode change 100644 => 100755 plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.mode1v3 mode change 100644 => 100755 plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.pbxproj mode change 100644 => 100755 plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.cpp mode change 100644 => 100755 plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.h mode change 100644 => 100755 plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.mode1v3 mode change 100644 => 100755 plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.pbxproj mode change 100644 => 100755 plugins/MacAU/PurestDrive/PurestDrive.cpp mode change 100644 => 100755 plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).mode1v3 mode change 100644 => 100755 plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson (Christopher-Johnsons-MacBook-Pro-2's conflicted copy 2015-05-07).pbxuser mode change 100644 => 100755 plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/project.pbxproj mode change 100644 => 100755 plugins/MacAU/PurestGain/PurestGain.cpp mode change 100644 => 100755 plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.mode1v3 mode change 100644 => 100755 plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacAU/PurestGain/PurestGain.xcodeproj/project.pbxproj mode change 100644 => 100755 plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.mode1v3 mode change 100644 => 100755 plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/project.pbxproj mode change 100644 => 100755 plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.mode1v3 mode change 100644 => 100755 plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj mode change 100644 => 100755 plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata mode change 100644 => 100755 plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.mode1v3 mode change 100644 => 100755 plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.pbxuser mode change 100644 => 100755 plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme mode change 100644 => 100755 plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 "plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" mode change 100644 => 100755 plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata mode change 100644 => 100755 plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.mode1v3 mode change 100644 => 100755 plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.pbxuser mode change 100644 => 100755 plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme mode change 100644 => 100755 plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 "plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" create mode 100755 plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.pbxuser create mode 100755 plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/christopherjohnson.perspectivev3 create mode 100755 plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.pbxproj create mode 100755 plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100755 plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate create mode 100755 plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate create mode 100755 plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.mode1v3 create mode 100755 plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/spiadmin.pbxuser create mode 100755 plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme create mode 100755 plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100755 plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100755 "plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" create mode 100755 plugins/MacVST/DitherFloat/mac/Info.plist create mode 100755 plugins/MacVST/DitherFloat/mac/PkgInfo create mode 100755 plugins/MacVST/DitherFloat/mac/xcode_vst_prefix.h create mode 100755 plugins/MacVST/DitherFloat/source/DitherFloat.cpp create mode 100755 plugins/MacVST/DitherFloat/source/DitherFloat.h create mode 100755 plugins/MacVST/DitherFloat/source/DitherFloatProc.cpp mode change 100644 => 100755 plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/contents.xcworkspacedata mode change 100644 => 100755 plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.mode1v3 mode change 100644 => 100755 plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.pbxuser mode change 100644 => 100755 plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme mode change 100644 => 100755 plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 "plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" mode change 100644 => 100755 plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/contents.xcworkspacedata mode change 100644 => 100755 plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.mode1v3 mode change 100644 => 100755 plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.pbxuser mode change 100644 => 100755 plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme mode change 100644 => 100755 plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 "plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" mode change 100644 => 100755 plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/contents.xcworkspacedata mode change 100644 => 100755 plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.mode1v3 mode change 100644 => 100755 plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.pbxuser mode change 100644 => 100755 plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme mode change 100644 => 100755 plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 "plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" mode change 100644 => 100755 plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/contents.xcworkspacedata mode change 100644 => 100755 plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.mode1v3 mode change 100644 => 100755 plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.pbxuser mode change 100644 => 100755 plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme mode change 100644 => 100755 plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 "plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" mode change 100644 => 100755 plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata mode change 100644 => 100755 plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/PurestGain/PurestGain.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.mode1v3 mode change 100644 => 100755 plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.pbxuser mode change 100644 => 100755 plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme mode change 100644 => 100755 plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 "plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" mode change 100644 => 100755 plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/contents.xcworkspacedata mode change 100644 => 100755 plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.mode1v3 mode change 100644 => 100755 plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.pbxuser mode change 100644 => 100755 plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme mode change 100644 => 100755 plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 "plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" mode change 100644 => 100755 plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser mode change 100644 => 100755 plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 mode change 100644 => 100755 plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/contents.xcworkspacedata mode change 100644 => 100755 plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate mode change 100644 => 100755 plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.mode1v3 mode change 100644 => 100755 plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.pbxuser mode change 100644 => 100755 plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/Gain.xcscheme mode change 100644 => 100755 plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/christopherjohnson.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/xcschememanagement.plist mode change 100644 => 100755 "plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" mode change 100644 => 100755 plugins/WinVST/Acceleration/.vs/Console4Channel64/v14/.suo mode change 100644 => 100755 plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suo mode change 100644 => 100755 plugins/WinVST/Acceleration/Acceleration.cpp mode change 100644 => 100755 plugins/WinVST/Acceleration/Acceleration.h mode change 100644 => 100755 plugins/WinVST/Acceleration/AccelerationProc.cpp mode change 100644 => 100755 plugins/WinVST/Acceleration/VSTProject.sln mode change 100644 => 100755 plugins/WinVST/Acceleration/VSTProject.vcxproj mode change 100644 => 100755 plugins/WinVST/Acceleration/VSTProject.vcxproj.filters mode change 100644 => 100755 plugins/WinVST/Acceleration/VSTProject.vcxproj.user mode change 100644 => 100755 plugins/WinVST/Acceleration/vstplug.def mode change 100644 => 100755 plugins/WinVST/BitShiftGain/.vs/Console4Channel64/v14/.suo mode change 100644 => 100755 plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suo mode change 100644 => 100755 plugins/WinVST/BitShiftGain/BitShiftGain.cpp mode change 100644 => 100755 plugins/WinVST/BitShiftGain/BitShiftGain.h mode change 100644 => 100755 plugins/WinVST/BitShiftGain/BitShiftGainProc.cpp mode change 100644 => 100755 plugins/WinVST/BitShiftGain/VSTProject.sln mode change 100644 => 100755 plugins/WinVST/BitShiftGain/VSTProject.vcxproj mode change 100644 => 100755 plugins/WinVST/BitShiftGain/VSTProject.vcxproj.filters mode change 100644 => 100755 plugins/WinVST/BitShiftGain/VSTProject.vcxproj.user mode change 100644 => 100755 plugins/WinVST/BitShiftGain/vstplug.def create mode 100755 plugins/WinVST/DitherFloat/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/WinVST/DitherFloat/.vs/VSTProject/v14/.suo create mode 100755 plugins/WinVST/DitherFloat/DitherFloat.cpp create mode 100755 plugins/WinVST/DitherFloat/DitherFloat.h create mode 100755 plugins/WinVST/DitherFloat/DitherFloatProc.cpp create mode 100755 plugins/WinVST/DitherFloat/VSTProject.sln create mode 100755 plugins/WinVST/DitherFloat/VSTProject.vcxproj create mode 100755 plugins/WinVST/DitherFloat/VSTProject.vcxproj.filters create mode 100755 plugins/WinVST/DitherFloat/VSTProject.vcxproj.user create mode 100755 plugins/WinVST/DitherFloat/vstplug.def mode change 100644 => 100755 plugins/WinVST/GrooveWear/.vs/Console4Channel64/v14/.suo mode change 100644 => 100755 plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo mode change 100644 => 100755 plugins/WinVST/GrooveWear/GrooveWear.cpp mode change 100644 => 100755 plugins/WinVST/GrooveWear/GrooveWear.h mode change 100644 => 100755 plugins/WinVST/GrooveWear/GrooveWearProc.cpp create mode 100755 plugins/WinVST/GrooveWear/VSTProject.VC.db delete mode 100644 plugins/WinVST/GrooveWear/VSTProject.sln mode change 100644 => 100755 plugins/WinVST/GrooveWear/VSTProject.vcxproj mode change 100644 => 100755 plugins/WinVST/GrooveWear/VSTProject.vcxproj.filters mode change 100644 => 100755 plugins/WinVST/GrooveWear/VSTProject.vcxproj.user mode change 100644 => 100755 plugins/WinVST/GrooveWear/vstplug.def create mode 100755 plugins/WinVST/NC-17/.vs/Console4Channel64/v14/.suo create mode 100755 plugins/WinVST/NC-17/.vs/VSTProject/v14/.suo create mode 100755 plugins/WinVST/NC-17/NCSeventeen.cpp create mode 100755 plugins/WinVST/NC-17/NCSeventeen.h create mode 100755 plugins/WinVST/NC-17/NCSeventeenProc.cpp create mode 100755 plugins/WinVST/NC-17/VSTProject.sln create mode 100755 plugins/WinVST/NC-17/VSTProject.vcxproj create mode 100755 plugins/WinVST/NC-17/VSTProject.vcxproj.filters create mode 100755 plugins/WinVST/NC-17/VSTProject.vcxproj.user create mode 100755 plugins/WinVST/NC-17/vstplug.def mode change 100644 => 100755 plugins/WinVST/PurestConsoleBuss/.vs/Console4Channel64/v14/.suo mode change 100644 => 100755 plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suo mode change 100644 => 100755 plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.cpp mode change 100644 => 100755 plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.h mode change 100644 => 100755 plugins/WinVST/PurestConsoleBuss/PurestConsoleBussProc.cpp mode change 100644 => 100755 plugins/WinVST/PurestConsoleBuss/VSTProject.sln mode change 100644 => 100755 plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj mode change 100644 => 100755 plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.filters mode change 100644 => 100755 plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.user mode change 100644 => 100755 plugins/WinVST/PurestConsoleBuss/vstplug.def mode change 100644 => 100755 plugins/WinVST/PurestConsoleChannel/.vs/Console4Channel64/v14/.suo mode change 100644 => 100755 plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suo mode change 100644 => 100755 plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.cpp mode change 100644 => 100755 plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.h mode change 100644 => 100755 plugins/WinVST/PurestConsoleChannel/PurestConsoleChannelProc.cpp mode change 100644 => 100755 plugins/WinVST/PurestConsoleChannel/VSTProject.sln mode change 100644 => 100755 plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj mode change 100644 => 100755 plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.filters mode change 100644 => 100755 plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.user mode change 100644 => 100755 plugins/WinVST/PurestConsoleChannel/vstplug.def mode change 100644 => 100755 plugins/WinVST/PurestDrive/.vs/Console4Channel64/v14/.suo mode change 100644 => 100755 plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo mode change 100644 => 100755 plugins/WinVST/PurestDrive/PurestDrive.cpp mode change 100644 => 100755 plugins/WinVST/PurestDrive/PurestDrive.h mode change 100644 => 100755 plugins/WinVST/PurestDrive/PurestDriveProc.cpp mode change 100644 => 100755 plugins/WinVST/PurestDrive/VSTProject.sln mode change 100644 => 100755 plugins/WinVST/PurestDrive/VSTProject.vcxproj mode change 100644 => 100755 plugins/WinVST/PurestDrive/VSTProject.vcxproj.filters mode change 100644 => 100755 plugins/WinVST/PurestDrive/VSTProject.vcxproj.user mode change 100644 => 100755 plugins/WinVST/PurestDrive/vstplug.def mode change 100644 => 100755 plugins/WinVST/PurestGain/.vs/Console4Channel64/v14/.suo mode change 100644 => 100755 plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo mode change 100644 => 100755 plugins/WinVST/PurestGain/PurestGain.cpp mode change 100644 => 100755 plugins/WinVST/PurestGain/PurestGain.h mode change 100644 => 100755 plugins/WinVST/PurestGain/PurestGainProc.cpp mode change 100644 => 100755 plugins/WinVST/PurestGain/VSTProject.sln mode change 100644 => 100755 plugins/WinVST/PurestGain/VSTProject.vcxproj mode change 100644 => 100755 plugins/WinVST/PurestGain/VSTProject.vcxproj.filters mode change 100644 => 100755 plugins/WinVST/PurestGain/VSTProject.vcxproj.user mode change 100644 => 100755 plugins/WinVST/PurestGain/vstplug.def mode change 100644 => 100755 plugins/WinVST/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo mode change 100644 => 100755 plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suo mode change 100644 => 100755 plugins/WinVST/VoiceOfTheStarship/VSTProject.sln mode change 100644 => 100755 plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj mode change 100644 => 100755 plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.filters mode change 100644 => 100755 plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.user mode change 100644 => 100755 plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.cpp mode change 100644 => 100755 plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.h mode change 100644 => 100755 plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarshipProc.cpp mode change 100644 => 100755 plugins/WinVST/VoiceOfTheStarship/vstplug.def 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 Binary files /dev/null and b/plugins/LinuxVST/src/ADClip7/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/ADClip7/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/AQuickVoiceClip/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/AQuickVoiceClip/.vs/VSTProject/v14/.suo 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 old mode 100644 new mode 100755 index f20c8f2..b2721d9 --- 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 old mode 100644 new mode 100755 index a152e25..02a3760 --- 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 old mode 100644 new mode 100755 index 4785e37..0151dbe --- 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 Binary files /dev/null and b/plugins/LinuxVST/src/Air/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Air/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Average/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Average/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Bite/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Bite/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/BussColors4/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/BussColors4/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/CStrip/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/CStrip/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Capacitor/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Capacitor/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Channel4/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Channel4/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Chorus/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Chorus/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/ChorusEnsemble/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/ChorusEnsemble/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/ClipOnly/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/ClipOnly/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Console4Buss/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Console4Buss/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Console4Channel/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Console4Channel/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Console5Buss/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Console5Buss/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Console5Channel/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Console5Channel/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Console5DarkCh/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Console5DarkCh/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/DCVoltage/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/DCVoltage/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Density/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Density/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Desk/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Desk/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Desk4/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Desk4/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Distance/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Distance/.vs/VSTProject/v14/.suo 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 +#include +#include + +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 Binary files /dev/null and b/plugins/LinuxVST/src/Drive/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Drive/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/DustBunny/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/DustBunny/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/EdIsDim/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/EdIsDim/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Ensemble/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Ensemble/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/EveryTrim/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/EveryTrim/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/FathomFive/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/FathomFive/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Fracture/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Fracture/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/FromTape/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/FromTape/.vs/VSTProject/v14/.suo 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 old mode 100644 new mode 100755 index e553daa..cbe1fc5 --- 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 old mode 100644 new mode 100755 index 7b933c2..4bf9745 --- 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 old mode 100644 new mode 100755 index a22f6df..e663203 --- 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 Binary files /dev/null and b/plugins/LinuxVST/src/GuitarConditioner/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/GuitarConditioner/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/HermeTrim/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/HermeTrim/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Hermepass/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Hermepass/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/HighImpact/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/HighImpact/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Highpass/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Highpass/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Hombre/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Hombre/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/IronOxide5/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/IronOxide5/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/IronOxideClassic/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/IronOxideClassic/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Logical4/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Logical4/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Loud/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Loud/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Lowpass/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Lowpass/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Melt/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Melt/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/MidSide/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/MidSide/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Noise/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Noise/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/PhaseNudge/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/PhaseNudge/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Point/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Point/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/PowerSag/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/PowerSag/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Pressure4/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Pressure4/.vs/VSTProject/v14/.suo 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 old mode 100644 new mode 100755 index ed0b223..2d8e619 --- 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 old mode 100644 new mode 100755 index 0d237ec..51495fc --- 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 old mode 100644 new mode 100755 index c06258a..6211eeb --- 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 old mode 100644 new mode 100755 index b9f3e04..35649a6 --- 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 old mode 100644 new mode 100755 index c0a1648..51e728f --- 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 old mode 100644 new mode 100755 index 630cba7..2fc513a --- 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 old mode 100644 new mode 100755 index e2451fe..a1d9264 --- 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 old mode 100644 new mode 100755 index 1f5b349..abcd65b --- 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 old mode 100644 new mode 100755 index e453883..f5cc804 --- 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 Binary files /dev/null and b/plugins/LinuxVST/src/PurestEcho/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/PurestEcho/.vs/VSTProject/v14/.suo 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 old mode 100644 new mode 100755 index 3091a12..b1b77fe --- 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 old mode 100644 new mode 100755 index 7869425..9e2baea --- 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 old mode 100644 new mode 100755 index 38f2849..4aa6d96 --- 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 Binary files /dev/null and b/plugins/LinuxVST/src/PurestWarm/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/PurestWarm/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Pyewacket/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Pyewacket/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/SideDull/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/SideDull/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Sidepass/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Sidepass/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Slew/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Slew/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Slew2/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Slew2/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/SlewOnly/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/SlewOnly/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/StarChild/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/StarChild/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Surge/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Surge/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/SurgeTide/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/SurgeTide/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Swell/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Swell/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/TapeDust/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/TapeDust/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Thunder/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Thunder/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/ToTape5/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/ToTape5/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/ToVinyl4/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/ToVinyl4/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/ToneSlant/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/ToneSlant/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/TransDesk/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/TransDesk/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Tremolo/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/Tremolo/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/TubeDesk/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/TubeDesk/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/LinuxVST/src/VoiceOfTheStarship/.vs/VSTProject/v14/.suo differ diff --git a/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp b/plugins/LinuxVST/src/VoiceOfTheStarship/VoiceOfTheStarship.cpp old mode 100644 new mode 100755 index c30bd47..19f1d94 --- 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 old mode 100644 new mode 100755 index febb344..519923b --- 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 old mode 100644 new mode 100755 index 32979d0..bbb14fa --- 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 599 170 841 654 0 0 1440 878 + 391 159 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -342,7 +340,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - ADClip7.h + ADClip7.cpp PBXSplitModuleInNavigatorKey Split0 @@ -350,16 +348,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - ADClip7.h + ADClip7.cpp _historyCapacity 0 bookmark - 8B79CD0220114E0500E8A187 + 8B79273321F33979006E9731 history 8BAC117C1F8245C00066CBCE - 8B80DAAF1F83179100B72A72 - 8B7B31211F8EA92200DC6305 + 8BBB330321C4563C00825986 + 8B79272821F33919006E9731 SplitCount @@ -373,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 126}} + {{0, 0}, {531, 92}} RubberWindowFrame - 599 170 841 654 0 0 1440 878 + 391 159 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 126pt + 92pt Proportion - 482pt + 516pt Tabs @@ -398,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 455}} - RubberWindowFrame - 599 170 841 654 0 0 1440 878 + {{10, 27}, {531, 489}} Module XCDetailModule @@ -454,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 379}} + {{10, 27}, {531, 489}} + RubberWindowFrame + 391 159 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -482,11 +480,11 @@ TableOfContents - 8B79CD0320114E0500E8A187 + 8B79273421F33979006E9731 1CA23ED40692098700951B8B - 8B79CD0420114E0500E8A187 + 8B79273521F33979006E9731 8BD7274A1D46E5A5000176F0 - 8B79CD0520114E0500E8A187 + 8B79273621F33979006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +657,7 @@ StatusbarIsVisible TimeStamp - 538004997.98427904 + 569588089.57457805 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -676,10 +674,11 @@ 5 WindowOrderList + 8B79273721F33979006E9731 /Users/christopherjohnson/Desktop/MacAU/ADClip7/ADClip7.xcodeproj WindowString - 599 170 841 654 0 0 1440 878 + 391 159 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 841 - 841 + 653 + 653 Perspectives @@ -324,7 +324,7 @@ 288 RubberWindowFrame - 775 349 653 504 0 0 1440 878 + 597 292 653 504 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +352,10 @@ _historyCapacity 0 bookmark - 8B15DB8E21742E37007AD769 + 8B79275021F339F0006E9731 history - 8BE627BC215F0C7700E4E476 + 8B15DB8E21742E37007AD769 SplitCount @@ -371,7 +371,7 @@ Frame {{0, 0}, {343, 0}} RubberWindowFrame - 775 349 653 504 0 0 1440 878 + 597 292 653 504 0 0 1440 878 Module PBXNavigatorGroup @@ -395,8 +395,6 @@ Frame {{10, 27}, {343, 431}} - RubberWindowFrame - 775 349 653 504 0 0 1440 878 Module XCDetailModule @@ -450,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {343, 431}} + RubberWindowFrame + 597 292 653 504 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +478,11 @@ TableOfContents - 8B15DB7F21741FEB007AD769 + 8B79274221F339AE006E9731 1CA23ED40692098700951B8B - 8B15DB8021741FEB007AD769 + 8B79274321F339AE006E9731 8BD7274A1D46E5A5000176F0 - 8B15DB8121741FEB007AD769 + 8B79274421F339AE006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -655,7 +655,7 @@ StatusbarIsVisible TimeStamp - 561262135.87675905 + 569588208.91309297 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,7 +675,7 @@ /Users/christopherjohnson/Desktop/MacAU/ADT/ADT.xcodeproj WindowString - 775 349 653 504 0 0 1440 878 + 597 292 653 504 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -352,11 +350,10 @@ _historyCapacity 0 bookmark - 8B9D72B61F7F1114007AB60F + 8B79277E21F33BC7006E9731 history - 8B65E4DA1EFF50F700DF9573 - 8B9D72231F7EFB95007AB60F + 8B9D72B61F7F1114007AB60F SplitCount @@ -370,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {567, 13}} + {{0, 0}, {567, 0}} RubberWindowFrame 218 365 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -395,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {567, 401}} - RubberWindowFrame - 218 365 810 487 0 0 1440 878 + {{10, 27}, {567, 414}} Module XCDetailModule @@ -451,7 +446,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {567, 414}} + RubberWindowFrame + 218 365 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +476,11 @@ TableOfContents - 8B9D72B71F7F1114007AB60F + 8B79277F21F33BC7006E9731 1CA23ED40692098700951B8B - 8B9D72B81F7F1114007AB60F + 8B79278021F33BC7006E9731 8B81AD171E85459D00889355 - 8B9D72B91F7F1114007AB60F + 8B79278121F33BC7006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +633,7 @@ StatusbarIsVisible TimeStamp - 528421140.86927599 + 569588679.18826604 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,7 +650,6 @@ 5 WindowOrderList - 8B9D72BA1F7F1114007AB60F /Users/christopherjohnson/Desktop/MacAU/AQuickVoiceClip/AQuickVoiceClip.xcodeproj WindowString diff --git a/plugins/MacAU/Acceleration/Acceleration.cpp b/plugins/MacAU/Acceleration/Acceleration.cpp old mode 100644 new mode 100755 index d389d62..3fe259b --- 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 old mode 100644 new mode 100755 index 57d3b4b..ba5bfd4 --- 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 old mode 100644 new mode 100755 diff --git a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.pbxuser old mode 100644 new mode 100755 index f49c30b..0c19d54 --- 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 old mode 100644 new mode 100755 index 2851941..f284420 --- a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 583 224 841 654 0 0 1440 878 + 354 224 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -354,11 +352,11 @@ _historyCapacity 0 bookmark - 8B4E5812201C02EE00B5DC2A + 8B79271721F3384E006E9731 history 8B6FC0BF20114A1C003CA5F7 - 8B79CCF320114DBD00E8A187 + 8B79271221F3383E006E9731 SplitCount @@ -372,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 202}} + {{0, 0}, {531, 188}} RubberWindowFrame - 583 224 841 654 0 0 1440 878 + 354 224 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 202pt + 188pt Proportion - 406pt + 420pt Tabs @@ -397,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 379}} - RubberWindowFrame - 583 224 841 654 0 0 1440 878 + {{10, 27}, {531, 393}} Module XCDetailModule @@ -453,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {531, 393}} + RubberWindowFrame + 354 224 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -481,11 +479,11 @@ TableOfContents - 8B4E5813201C02EE00B5DC2A + 8B79271821F3384E006E9731 1CA23ED40692098700951B8B - 8B4E5814201C02EE00B5DC2A + 8B79271921F3384E006E9731 8BD7274A1D46E5A5000176F0 - 8B4E5815201C02EE00B5DC2A + 8B79271A21F3384E006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +656,7 @@ StatusbarIsVisible TimeStamp - 538706670.20774806 + 569587790.455778 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,11 +673,10 @@ 5 WindowOrderList - 8B4E5816201C02EE00B5DC2A /Users/christopherjohnson/Desktop/MacAU/Acceleration/Acceleration.xcodeproj WindowString - 583 224 841 654 0 0 1440 878 + 354 224 841 654 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacAU/Acceleration/Acceleration.xcodeproj/project.pbxproj b/plugins/MacAU/Acceleration/Acceleration.xcodeproj/project.pbxproj old mode 100644 new mode 100755 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 @@ _historyCapacity 0 bookmark - 8B9D72A71F7F10F4007AB60F + 8B79276821F33AE6006E9731 history 8B9F0C261EB403E000D3B900 - 8B9D72161F7EFB8B007AB60F + 8B79276221F33AB6006E9731 SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 32}} + {{0, 0}, {603, 13}} RubberWindowFrame 484 346 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 32pt + 13pt Proportion - 409pt + 428pt Tabs @@ -395,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} - RubberWindowFrame - 484 346 810 487 0 0 1440 878 + {{10, 27}, {603, 401}} Module XCDetailModule @@ -451,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} + {{10, 27}, {603, 401}} + RubberWindowFrame + 484 346 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +479,11 @@ TableOfContents - 8B9D72A81F7F10F4007AB60F + 8B79276921F33AE6006E9731 1CA23ED40692098700951B8B - 8B9D72A91F7F10F4007AB60F + 8B79276A21F33AE6006E9731 8BDB25A91EAA638A001F42B2 - 8B9D72AA1F7F10F4007AB60F + 8B79276B21F33AE6006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 528421108.41774899 + 569588454.36706197 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,7 +653,7 @@ 5 WindowOrderList - 8B9D72AB1F7F10F4007AB60F + 8B79276C21F33AE6006E9731 /Users/christopherjohnson/Desktop/MacAU/Air/Air.xcodeproj WindowString 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -302,9 +300,6 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 - 2 - 1 0 @@ -326,7 +321,7 @@ 288 RubberWindowFrame - 597 180 841 654 0 0 1440 878 + 434 184 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -354,11 +349,12 @@ _historyCapacity 0 bookmark - 8BC5CF4B2093F4B70058B257 + 8B7927A221F33C4A006E9731 history 8B7A85312054728D0074B00C - 8BC5CF4A2093F4B70058B257 + 8B7927A021F33C4A006E9731 + 8B7927A121F33C4A006E9731 SplitCount @@ -372,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 142}} + {{0, 0}, {531, 126}} RubberWindowFrame - 597 180 841 654 0 0 1440 878 + 434 184 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 142pt + 126pt Proportion - 466pt + 482pt Tabs @@ -397,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 439}} - RubberWindowFrame - 597 180 841 654 0 0 1440 878 + {{10, 27}, {531, 455}} Module XCDetailModule @@ -453,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {531, 455}} + RubberWindowFrame + 434 184 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -481,11 +477,11 @@ TableOfContents - 8BC5CF4C2093F4B70058B257 + 8B7927A321F33C4A006E9731 1CA23ED40692098700951B8B - 8BC5CF4D2093F4B70058B257 + 8B7927A421F33C4A006E9731 8BD7274A1D46E5A5000176F0 - 8BC5CF4E2093F4B70058B257 + 8B7927A521F33C4A006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +654,7 @@ StatusbarIsVisible TimeStamp - 546567351.06036103 + 569588810.27972102 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,11 +671,11 @@ 5 WindowOrderList - 8BC5CF4F2093F4B70058B257 + 8B7927A621F33C4A006E9731 /Users/christopherjohnson/Desktop/MacAU/AtmosphereBuss/AtmosphereBuss.xcodeproj WindowString - 597 180 841 654 0 0 1440 878 + 434 184 841 654 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 599 209 841 654 0 0 1440 878 + 472 198 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -342,7 +340,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - AtmosphereChannel.h + AtmosphereChannel.cpp PBXSplitModuleInNavigatorKey Split0 @@ -350,16 +348,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - AtmosphereChannel.h + AtmosphereChannel.cpp _historyCapacity 0 bookmark - 8BC5CF522093F4BA0058B257 + 8B7927B821F33C9F006E9731 history 8B2BAFD320548396002C5203 - 8BC5CF502093F4BA0058B257 - 8BC5CF512093F4BA0058B257 + 8BFBE901209D18FF00E1438C + 8B7927B321F33C89006E9731 SplitCount @@ -373,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 158}} + {{0, 0}, {531, 92}} RubberWindowFrame - 599 209 841 654 0 0 1440 878 + 472 198 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 158pt + 92pt Proportion - 450pt + 516pt Tabs @@ -398,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 423}} - RubberWindowFrame - 599 209 841 654 0 0 1440 878 + {{10, 27}, {531, 489}} Module XCDetailModule @@ -454,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {531, 489}} + RubberWindowFrame + 472 198 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -482,11 +480,11 @@ TableOfContents - 8BC5CF532093F4BA0058B257 + 8B7927B921F33C9F006E9731 1CA23ED40692098700951B8B - 8BC5CF542093F4BA0058B257 + 8B7927BA21F33C9F006E9731 8BD7274A1D46E5A5000176F0 - 8BC5CF552093F4BA0058B257 + 8B7927BB21F33C9F006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +657,7 @@ StatusbarIsVisible TimeStamp - 546567354.06319106 + 569588895.18574297 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -679,7 +677,7 @@ /Users/christopherjohnson/Desktop/MacAU/AtmosphereChannel/AtmosphereChannel.xcodeproj WindowString - 599 209 841 654 0 0 1440 878 + 472 198 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 623 315 810 487 0 0 1440 878 + 0 312 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,11 +350,11 @@ _historyCapacity 0 bookmark - 8BC5CEBB208D734C0058B257 + 8B7927CE21F33D9D006E9731 history 8BC5CC27208D3AE60058B257 - 8BC5CCC3208D4FDB0058B257 + 8B7927C921F33D8C006E9731 SplitCount @@ -370,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {603, 13}} RubberWindowFrame - 623 315 810 487 0 0 1440 878 + 0 312 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 13pt Proportion - 372pt + 428pt Tabs @@ -395,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 401}} Module XCDetailModule @@ -449,9 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 401}} RubberWindowFrame - 623 315 810 487 0 0 1440 878 + 0 312 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +477,11 @@ TableOfContents - 8BC5CC15208D39550058B257 + 8B7927CF21F33D9D006E9731 1CA23ED40692098700951B8B - 8BC5CC16208D39550058B257 + 8B7927D021F33D9D006E9731 8B0C0F5D201157B700BC8782 - 8BC5CC17208D39550058B257 + 8B7927D121F33D9D006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +634,7 @@ StatusbarIsVisible TimeStamp - 546141004.69631898 + 569589149.88835204 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -656,7 +654,7 @@ /Users/christopherjohnson/Desktop/MacAU/Aura/Aura.xcodeproj WindowString - 623 315 810 487 0 0 1440 878 + 0 312 810 487 0 0 1440 878 WindowToolsV3 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 @@ OpenEditors - + + + Content + + PBXProjectModuleGUID + 8B7927E721F33E0C006E9731 + PBXProjectModuleLabel + Average.cpp + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 8B7927E821F33E0C006E9731 + PBXProjectModuleLabel + Average.cpp + _historyCapacity + 0 + bookmark + 8B7927E921F33E0C006E9731 + history + + 8B7927DA21F33DD5006E9731 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {909, 741}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 360 96 909 782 0 0 1440 878 + + + PerspectiveWidths 810 @@ -256,8 +297,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +363,7 @@ 185 RubberWindowFrame - 612 196 810 487 0 0 1440 878 + 456 228 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,11 +391,11 @@ _historyCapacity 0 bookmark - 8BFDB0072139DDE90079F90D + 8B7927E321F33E0C006E9731 history 8B7BA53D1DAD4A33007C127E - 8B9D72C51F7F1129007AB60F + 8BFDB0072139DDE90079F90D SplitCount @@ -372,7 +411,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 612 196 810 487 0 0 1440 878 + 456 228 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -396,8 +435,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 612 196 810 487 0 0 1440 878 Module XCDetailModule @@ -451,7 +488,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 456 228 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +518,11 @@ TableOfContents - 8BFDB0082139DDE90079F90D + 8B7927E421F33E0C006E9731 1CA23ED40692098700951B8B - 8BFDB0092139DDE90079F90D + 8B7927E521F33E0C006E9731 8B9E5A3F1DAAD3C800A9546F - 8BFDB00A2139DDE90079F90D + 8B7927E621F33E0C006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +675,7 @@ StatusbarIsVisible TimeStamp - 557440489.96798897 + 569589260.26626098 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +692,11 @@ 5 WindowOrderList - 8BFDB00B2139DDE90079F90D + 8B7927E721F33E0C006E9731 /Users/christopherjohnson/Desktop/MacAU/Average/Average.xcodeproj WindowString - 612 196 810 487 0 0 1440 878 + 456 228 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 609 213 752 636 0 0 1440 878 + 401 223 752 636 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8B15DC7921789307007AD769 + 8B7927FD21F33F8B006E9731 history - 8B15DC7821789307007AD769 + 8B7927F821F33F7A006E9731 SplitCount @@ -369,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {545, 162}} + {{0, 0}, {545, 131}} RubberWindowFrame - 609 213 752 636 0 0 1440 878 + 401 223 752 636 0 0 1440 878 Module PBXNavigatorGroup Proportion - 162pt + 131pt Proportion - 428pt + 459pt Tabs @@ -394,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {545, 401}} - RubberWindowFrame - 609 213 752 636 0 0 1440 878 + {{10, 27}, {545, 432}} Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 27}, {545, 386}} + {{10, 27}, {545, 432}} + RubberWindowFrame + 401 223 752 636 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8B15DC7A21789307007AD769 + 8B7927FE21F33F8B006E9731 1CA23ED40692098700951B8B - 8B15DC7B21789307007AD769 + 8B7927FF21F33F8B006E9731 8B2720742173B3CC00396442 - 8B15DC7C21789307007AD769 + 8B79280021F33F8B006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 561550087.85150504 + 569589643.413149 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +650,10 @@ 5 WindowOrderList - 8B15DC7D21789307007AD769 /Users/christopherjohnson/Desktop/MacAU/BassKit/BassKit.xcodeproj WindowString - 609 213 752 636 0 0 1440 878 + 401 223 752 636 0 0 1440 878 WindowToolsV3 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 @@ 185 RubberWindowFrame - 586 327 810 487 0 0 1440 878 + 490 321 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,11 +352,11 @@ _historyCapacity 0 bookmark - 8BBD1982210557560015A233 + 8B79283421F34111006E9731 history 8B12BE4E210416FD00EB8D52 - 8B12BE50210416FD00EB8D52 + 8B79282221F340F9006E9731 SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 51}} + {{0, 0}, {603, 13}} RubberWindowFrame - 586 327 810 487 0 0 1440 878 + 490 321 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 51pt + 13pt Proportion - 390pt + 428pt Tabs @@ -395,9 +395,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} + {{10, 27}, {603, 401}} RubberWindowFrame - 586 327 810 487 0 0 1440 878 + 490 321 810 487 0 0 1440 878 Module XCDetailModule @@ -479,11 +479,11 @@ TableOfContents - 8BBD1983210557560015A233 + 8B79283521F34111006E9731 1CA23ED40692098700951B8B - 8BBD1984210557560015A233 + 8B79283621F34111006E9731 8BB8B7DD2103C66400751000 - 8BBD1985210557560015A233 + 8B79283721F34111006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 553998166.45384705 + 569590033.70359504 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +653,10 @@ 5 WindowOrderList - 8BBD1986210557560015A233 /Users/christopherjohnson/Desktop/MacAU/BitGlitter/BitGlitter.xcodeproj WindowString - 586 327 810 487 0 0 1440 878 + 490 321 810 487 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.mode1v3 old mode 100644 new mode 100755 diff --git a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.pbxuser old mode 100644 new mode 100755 index 0c60c13..5c6dcd3 --- 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 old mode 100644 new mode 100755 index d55ef4a..4adf5a4 --- a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 @@ -325,7 +325,7 @@ 288 RubberWindowFrame - 657 93 776 778 0 0 1440 878 + 559 100 776 778 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,12 +353,12 @@ _historyCapacity 0 bookmark - 8B9D72E51F7F11AB007AB60F + 8B79284721F34140006E9731 history 8B9E7F221DDE37D5006035FA 8B84C3201F06FE8A00F360EE - 8B9D636E1F7C82E9007AB60F + 8B79244F21F12F5D006E9731 SplitCount @@ -372,18 +372,18 @@ GeometryConfiguration Frame - {{0, 0}, {466, 325}} + {{0, 0}, {466, 301}} RubberWindowFrame - 657 93 776 778 0 0 1440 878 + 559 100 776 778 0 0 1440 878 Module PBXNavigatorGroup Proportion - 325pt + 301pt Proportion - 407pt + 431pt Tabs @@ -397,9 +397,9 @@ GeometryConfiguration Frame - {{10, 27}, {466, 380}} + {{10, 27}, {466, 404}} RubberWindowFrame - 657 93 776 778 0 0 1440 878 + 559 100 776 778 0 0 1440 878 Module XCDetailModule @@ -481,11 +481,11 @@ TableOfContents - 8B9D72E61F7F11AB007AB60F + 8B79284821F34140006E9731 1CA23ED40692098700951B8B - 8B9D72E71F7F11AB007AB60F + 8B79284921F34140006E9731 8BD7274A1D46E5A5000176F0 - 8B9D72E81F7F11AB007AB60F + 8B79284A21F34140006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +658,7 @@ StatusbarIsVisible TimeStamp - 528421291.05933303 + 569590080.12127101 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,11 +675,10 @@ 5 WindowOrderList - 8B9D72E91F7F11AB007AB60F /Users/christopherjohnson/Desktop/MacAU/BitShiftGain/BitShiftGain.xcodeproj WindowString - 657 93 776 778 0 0 1440 878 + 559 100 776 778 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/project.pbxproj b/plugins/MacAU/BitShiftGain/BitShiftGain.xcodeproj/project.pbxproj old mode 100644 new mode 100755 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 612 285 810 487 0 0 1440 878 + 476 284 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8B9D72D41F7F114A007AB60F + 8B79281521F34076006E9731 history - 8B9D63401F7C8264007AB60F + 8B79281021F3405A006E9731 SplitCount @@ -369,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 102}} + {{0, 0}, {603, 86}} RubberWindowFrame - 612 285 810 487 0 0 1440 878 + 476 284 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 102pt + 86pt Proportion - 339pt + 355pt Tabs @@ -394,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 312}} - RubberWindowFrame - 612 285 810 487 0 0 1440 878 + {{10, 27}, {603, 328}} Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 328}} + RubberWindowFrame + 476 284 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8B9D72D51F7F114A007AB60F + 8B79281621F34076006E9731 1CA23ED40692098700951B8B - 8B9D72D61F7F114A007AB60F + 8B79281721F34076006E9731 8BDB25E81EAA6D6E001F42B2 - 8B9D72D71F7F114A007AB60F + 8B79281821F34076006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 528421194.64885902 + 569589878.38768005 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +650,10 @@ 5 WindowOrderList - 8B9D72D81F7F114A007AB60F /Users/christopherjohnson/Desktop/MacAU/Bite/Bite.xcodeproj WindowString - 612 285 810 487 0 0 1440 878 + 476 284 810 487 0 0 1440 878 WindowToolsV3 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 @@ _historyCapacity 0 bookmark - 8B9D72F41F7F11CA007AB60F + 8B79285A21F341B0006E9731 history 8B753DE91E4005E400347157 - 8B9D637D1F7C82F6007AB60F + 8B9D72F41F7F11CA007AB60F SplitCount @@ -371,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 216}} + {{0, 0}, {531, 202}} RubberWindowFrame 599 205 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 216pt + 202pt Proportion - 392pt + 406pt Tabs @@ -396,7 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 365}} + {{10, 27}, {531, 379}} RubberWindowFrame 599 205 841 654 0 0 1440 878 @@ -480,11 +480,11 @@ TableOfContents - 8B9D72F51F7F11CA007AB60F + 8B79285B21F341B0006E9731 1CA23ED40692098700951B8B - 8B9D72F61F7F11CA007AB60F + 8B79285C21F341B0006E9731 8BD7274A1D46E5A5000176F0 - 8B9D72F71F7F11CA007AB60F + 8B79285D21F341B0006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +657,7 @@ StatusbarIsVisible TimeStamp - 528421322.85982102 + 569590192.67660701 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,7 +674,6 @@ 5 WindowOrderList - 8B9D72F81F7F11CA007AB60F /Users/christopherjohnson/Desktop/MacAU/BuildATPDF/BuildATPDF.xcodeproj WindowString 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -353,12 +351,12 @@ _historyCapacity 0 bookmark - 8B9D73051F7F11E3007AB60F + 8B79287021F3422D006E9731 history 8B48B64B1EE21C9100BCF3D0 8B9D73031F7F11E3007AB60F - 8B9D73041F7F11E3007AB60F + 8B79286B21F34214006E9731 SplitCount @@ -372,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {416, 139}} + {{0, 0}, {416, 124}} RubberWindowFrame 541 301 726 510 0 0 1440 878 Module PBXNavigatorGroup Proportion - 139pt + 124pt Proportion - 325pt + 340pt Tabs @@ -397,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {416, 298}} - RubberWindowFrame - 541 301 726 510 0 0 1440 878 + {{10, 27}, {416, 313}} Module XCDetailModule @@ -453,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {416, 399}} + {{10, 27}, {416, 313}} + RubberWindowFrame + 541 301 726 510 0 0 1440 878 Module PBXBuildResultsModule @@ -481,11 +479,11 @@ TableOfContents - 8B9D73061F7F11E3007AB60F + 8B79287121F3422D006E9731 1CA23ED40692098700951B8B - 8B9D73071F7F11E3007AB60F + 8B79287221F3422D006E9731 8BD7274A1D46E5A5000176F0 - 8B9D73081F7F11E3007AB60F + 8B79287321F3422D006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +656,7 @@ StatusbarIsVisible TimeStamp - 528421347.61386502 + 569590317.82425797 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,7 +673,6 @@ 5 WindowOrderList - 8B9D73091F7F11E3007AB60F /Users/christopherjohnson/Desktop/MacAU/BussColors4/BussColors4.xcodeproj WindowString 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 628 380 810 487 0 0 1440 878 + 447 360 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,11 +350,11 @@ _historyCapacity 0 bookmark - 8BE626D321596F6E00E4E476 + 8B79288621F342C1006E9731 history 8BE626A621596E0600E4E476 - 8BE626D221596F6E00E4E476 + 8B79288121F342AF006E9731 SplitCount @@ -370,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 32}} + {{0, 0}, {603, 13}} RubberWindowFrame - 628 380 810 487 0 0 1440 878 + 447 360 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 32pt + 13pt Proportion - 409pt + 428pt Tabs @@ -395,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} - RubberWindowFrame - 628 380 810 487 0 0 1440 878 + {{10, 27}, {603, 401}} Module XCDetailModule @@ -451,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 401}} + RubberWindowFrame + 447 360 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +477,11 @@ TableOfContents - 8BE626D421596F6E00E4E476 + 8B79288721F342C1006E9731 1CA23ED40692098700951B8B - 8BE626D521596F6E00E4E476 + 8B79288821F342C1006E9731 8B7FDBEA1F85C96D00A80060 - 8BE626D621596F6E00E4E476 + 8B79288921F342C1006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -656,7 +654,7 @@ StatusbarIsVisible TimeStamp - 559509358.82003796 + 569590465.72403705 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -673,11 +671,10 @@ 5 WindowOrderList - 8BE626D721596F6E00E4E476 /Users/christopherjohnson/Desktop/MacAU/ButterComp/ButterComp.xcodeproj WindowString - 628 380 810 487 0 0 1440 878 + 447 360 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 662 164 841 654 0 0 1440 878 + 456 186 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -354,12 +352,12 @@ _historyCapacity 0 bookmark - 8B42FD84216056480092969A + 8B79289B21F34328006E9731 history 8BE6255F2157A02A00E4E476 8B42FD41216050B10092969A - 8B42FD83216056480092969A + 8B79289621F34318006E9731 SplitCount @@ -373,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 126}} + {{0, 0}, {531, 109}} RubberWindowFrame - 662 164 841 654 0 0 1440 878 + 456 186 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 126pt + 109pt Proportion - 482pt + 499pt Tabs @@ -398,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 455}} - RubberWindowFrame - 662 164 841 654 0 0 1440 878 + {{10, 27}, {531, 472}} Module XCDetailModule @@ -454,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 393}} + {{10, 27}, {531, 472}} + RubberWindowFrame + 456 186 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -482,11 +480,11 @@ TableOfContents - 8B42FD85216056480092969A + 8B79289C21F34328006E9731 1CA23ED40692098700951B8B - 8B42FD86216056480092969A + 8B79289D21F34328006E9731 8BD7274A1D46E5A5000176F0 - 8B42FD87216056480092969A + 8B79289E21F34328006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +657,7 @@ StatusbarIsVisible TimeStamp - 559961672.53862405 + 569590568.39095497 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -676,11 +674,10 @@ 5 WindowOrderList - 8B42FD88216056480092969A /Users/christopherjohnson/Desktop/MacAU/ButterComp2/ButterComp2.xcodeproj WindowString - 662 164 841 654 0 0 1440 878 + 456 186 841 654 0 0 1440 878 WindowToolsV3 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 @@ OpenEditors - - - Content - - PBXProjectModuleGUID - 8B4E57BA201BF00900B5DC2A - PBXProjectModuleLabel - C5RawBuss.cpp - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 8B4E57BB201BF00900B5DC2A - PBXProjectModuleLabel - C5RawBuss.cpp - _historyCapacity - 0 - bookmark - 8B4E57BC201BF00900B5DC2A - history - - 8B4E57B0201BE78F00B5DC2A - - - SplitCount - 1 - - StatusBarVisibility - - - Geometry - - Frame - {{0, 20}, {923, 731}} - PBXModuleWindowStatusBarHidden2 - - RubberWindowFrame - -64 106 923 772 0 0 1440 878 - - - + PerspectiveWidths - 810 - 810 + 682 + 682 Perspectives @@ -297,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -367,7 +324,7 @@ 288 RubberWindowFrame - 719 408 682 464 0 0 1440 878 + 598 397 682 464 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -395,10 +352,10 @@ _historyCapacity 0 bookmark - 8B4E57B9201BF00900B5DC2A + 8B7928B121F343BF006E9731 history - 8B4E55B3201BC48D00B5DC2A + 8B7928AC21F343AD006E9731 SplitCount @@ -412,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {372, 39}} + {{0, 0}, {372, 20}} RubberWindowFrame - 719 408 682 464 0 0 1440 878 + 598 397 682 464 0 0 1440 878 Module PBXNavigatorGroup Proportion - 39pt + 20pt Proportion - 379pt + 398pt Tabs @@ -437,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {372, 352}} - RubberWindowFrame - 719 408 682 464 0 0 1440 878 + {{10, 27}, {372, 371}} Module XCDetailModule @@ -493,7 +448,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {372, 371}} + RubberWindowFrame + 598 397 682 464 0 0 1440 878 Module PBXBuildResultsModule @@ -521,11 +478,11 @@ TableOfContents - 8B4E5791201BE4FE00B5DC2A + 8B7928B221F343BF006E9731 1CA23ED40692098700951B8B - 8B4E5792201BE4FE00B5DC2A + 8B7928B321F343BF006E9731 8BD7274A1D46E5A5000176F0 - 8B4E5793201BE4FE00B5DC2A + 8B7928B421F343BF006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -698,7 +655,7 @@ StatusbarIsVisible TimeStamp - 538701833.475577 + 569590719.21111 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -715,11 +672,10 @@ 5 WindowOrderList - 8B4E57BA201BF00900B5DC2A /Users/christopherjohnson/Desktop/MacAU/C5RawBuss/C5RawBuss.xcodeproj WindowString - 719 408 682 464 0 0 1440 878 + 598 397 682 464 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 841 - 841 + 694 + 694 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -302,7 +300,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 3 + 4 2 1 0 @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 721 122 694 488 0 0 1440 878 + 490 149 694 488 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -342,7 +340,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - C5RawChannel.cpp + C5RawChannel.h PBXSplitModuleInNavigatorKey Split0 @@ -350,15 +348,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - C5RawChannel.cpp + C5RawChannel.h _historyCapacity 0 bookmark - 8B44C16F20548F6200B1360B + 8B7928C721F3442D006E9731 history 8B44C16D20548F6200B1360B - 8B44C16E20548F6200B1360B + 8BE625CC2157ABD800E4E476 + 8B7928C221F3441D006E9731 SplitCount @@ -372,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {384, 45}} + {{0, 0}, {384, 6}} RubberWindowFrame - 721 122 694 488 0 0 1440 878 + 490 149 694 488 0 0 1440 878 Module PBXNavigatorGroup Proportion - 45pt + 6pt Proportion - 397pt + 436pt Tabs @@ -397,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {384, 370}} - RubberWindowFrame - 721 122 694 488 0 0 1440 878 + {{10, 27}, {384, 409}} Module XCDetailModule @@ -453,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {384, 409}} + RubberWindowFrame + 490 149 694 488 0 0 1440 878 Module PBXBuildResultsModule @@ -481,11 +480,11 @@ TableOfContents - 8B44C17020548F6200B1360B + 8B7928C821F3442D006E9731 1CA23ED40692098700951B8B - 8B44C17120548F6200B1360B + 8B7928C921F3442D006E9731 8BD7274A1D46E5A5000176F0 - 8B44C17220548F6200B1360B + 8B7928CA21F3442D006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +657,7 @@ StatusbarIsVisible TimeStamp - 542412642.174927 + 569590829.86194801 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,11 +674,10 @@ 5 WindowOrderList - 8B44C17320548F6200B1360B /Users/christopherjohnson/Desktop/MacAU/C5RawChannel/C5RawChannel.xcodeproj WindowString - 721 122 694 488 0 0 1440 878 + 490 149 694 488 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 619 317 810 487 0 0 1440 878 + 471 312 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8BE626752159682E00E4E476 + 8B792A1C21F357E5006E9731 history - 8BE626742159682E00E4E476 + 8B792A1221F357B8006E9731 SplitCount @@ -369,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame - 619 317 810 487 0 0 1440 878 + 471 312 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -394,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} - RubberWindowFrame - 619 317 810 487 0 0 1440 878 + {{10, 27}, {603, 297}} Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 471 312 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8BE626762159682E00E4E476 + 8B792A1D21F357E5006E9731 1CA23ED40692098700951B8B - 8BE626772159682E00E4E476 + 8B792A1E21F357E5006E9731 8BB5DCD21FBCB6E7008B4570 - 8BE626782159682E00E4E476 + 8B792A1F21F357E5006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 559507502.89647996 + 569595877.85073602 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,10 +650,11 @@ 5 WindowOrderList + 8B792A2021F357E5006E9731 /Users/christopherjohnson/Desktop/MacAU/CStrip/CStrip.xcodeproj WindowString - 619 317 810 487 0 0 1440 878 + 471 312 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 810 - 810 + 841 + 841 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -301,7 +299,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -325,7 +323,7 @@ 288 RubberWindowFrame - 573 188 841 654 0 0 1440 878 + 493 190 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,11 +351,11 @@ _historyCapacity 0 bookmark - 8B6692B61FB1BDCA007B3434 + 8B7928DE21F344CC006E9731 history 8B558E341E54FD3900D04D0B - 8B6692B51FB1BDCA007B3434 + 8B7928D921F344BA006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 92}} + {{0, 0}, {531, 74}} RubberWindowFrame - 573 188 841 654 0 0 1440 878 + 493 190 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 92pt + 74pt Proportion - 516pt + 534pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 489}} - RubberWindowFrame - 573 188 841 654 0 0 1440 878 + {{10, 27}, {531, 507}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {531, 507}} + RubberWindowFrame + 493 190 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8B6692B71FB1BDCA007B3434 + 8B7928DF21F344CC006E9731 1CA23ED40692098700951B8B - 8B6692B81FB1BDCA007B3434 + 8B7928E021F344CC006E9731 8BD7274A1D46E5A5000176F0 - 8B6692B91FB1BDCA007B3434 + 8B7928E121F344CC006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +655,7 @@ StatusbarIsVisible TimeStamp - 531742154.04575902 + 569590988.98670805 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,11 +672,10 @@ 5 WindowOrderList - 8B6692BA1FB1BDCA007B3434 /Users/christopherjohnson/Desktop/MacAU/Capacitor/Capacitor.xcodeproj WindowString - 573 188 841 654 0 0 1440 878 + 493 190 841 654 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 592 182 841 654 0 0 1440 878 + 463 218 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -354,12 +352,12 @@ _historyCapacity 0 bookmark - 8BBD18F5210547560015A233 + 8B79291421F3461E006E9731 history 8BB8B7512103B13800751000 8B97541F2103D42D00A4FFA3 - 8BBD18BF2105439F0015A233 + 8B79290F21F3460C006E9731 SplitCount @@ -373,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 173}} + {{0, 0}, {531, 142}} RubberWindowFrame - 592 182 841 654 0 0 1440 878 + 463 218 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 173pt + 142pt Proportion - 435pt + 466pt Tabs @@ -398,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 408}} - RubberWindowFrame - 592 182 841 654 0 0 1440 878 + {{10, 27}, {531, 439}} Module XCDetailModule @@ -454,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {531, 439}} + RubberWindowFrame + 463 218 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -482,11 +480,11 @@ TableOfContents - 8BBD18F6210547560015A233 + 8B79291521F3461E006E9731 1CA23ED40692098700951B8B - 8BBD18F7210547560015A233 + 8B79291621F3461E006E9731 8BD7274A1D46E5A5000176F0 - 8BBD18F8210547560015A233 + 8B79291721F3461E006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +657,7 @@ StatusbarIsVisible TimeStamp - 553994070.73831797 + 569591326.09985697 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -676,11 +674,10 @@ 5 WindowOrderList - 8BBD18F9210547560015A233 /Users/christopherjohnson/Desktop/MacAU/Channel6/Channel6.xcodeproj WindowString - 592 182 841 654 0 0 1440 878 + 463 218 841 654 0 0 1440 878 WindowToolsV3 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -324,7 +324,7 @@ 185 RubberWindowFrame - 630 329 810 487 0 0 1440 878 + 473 332 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,11 +352,11 @@ _historyCapacity 0 bookmark - 8B36C9E21F94D13C003BE0C9 + 8B79293221F346AC006E9731 history 8BCF321C1F4E492C00632CB6 - 8B9D733F1F7F1245007AB60F + 8B79292521F34676006E9731 SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 32}} + {{0, 0}, {603, 13}} RubberWindowFrame - 630 329 810 487 0 0 1440 878 + 473 332 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 32pt + 13pt Proportion - 409pt + 428pt Tabs @@ -395,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} - RubberWindowFrame - 630 329 810 487 0 0 1440 878 + {{10, 27}, {603, 401}} Module XCDetailModule @@ -451,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 401}} + RubberWindowFrame + 473 332 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +479,11 @@ TableOfContents - 8B36C9E31F94D13C003BE0C9 + 8B79293321F346AC006E9731 1CA23ED40692098700951B8B - 8B36C9E41F94D13C003BE0C9 + 8B79293421F346AC006E9731 8BCFBD371E6DE48D0046F93B - 8B36C9E51F94D13C003BE0C9 + 8B79293521F346AC006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 529846588.24690598 + 569591468.25551903 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +653,10 @@ 5 WindowOrderList - 8B36C9E61F94D13C003BE0C9 /Users/christopherjohnson/Desktop/MacAU/Chorus/Chorus.xcodeproj WindowString - 630 329 810 487 0 0 1440 878 + 473 332 810 487 0 0 1440 878 WindowToolsV3 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 @@ 218 RubberWindowFrame - 616 217 810 487 0 0 1440 878 + 457 305 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -342,7 +342,7 @@ PBXProjectModuleGUID 8B8847271F206D6800E13453 PBXProjectModuleLabel - ChorusEnsemble.h + ChorusEnsemble.exp PBXSplitModuleInNavigatorKey Split0 @@ -350,15 +350,14 @@ PBXProjectModuleGUID 8B8847281F206D6800E13453 PBXProjectModuleLabel - ChorusEnsemble.h + ChorusEnsemble.exp _historyCapacity 0 bookmark - 8B9D734E1F7F1296007AB60F + 8B79294D21F34765006E9731 history 8B8847291F206D6800E13453 - 8B88472A1F206D6800E13453 SplitCount @@ -374,7 +373,7 @@ Frame {{0, 0}, {570, 0}} RubberWindowFrame - 616 217 810 487 0 0 1440 878 + 457 305 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -398,8 +397,6 @@ Frame {{10, 27}, {570, 414}} - RubberWindowFrame - 616 217 810 487 0 0 1440 878 Module XCDetailModule @@ -453,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {570, 312}} + {{10, 27}, {570, 414}} + RubberWindowFrame + 457 305 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -481,11 +480,11 @@ TableOfContents - 8B9D734F1F7F1296007AB60F + 8B79294E21F34765006E9731 1CA23ED40692098700951B8B - 8B9D73501F7F1296007AB60F + 8B79294F21F34765006E9731 8B8847271F206D6800E13453 - 8B9D73511F7F1296007AB60F + 8B79295021F34765006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -638,7 +637,7 @@ StatusbarIsVisible TimeStamp - 528421526.378672 + 569591653.62024701 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -655,11 +654,11 @@ 5 WindowOrderList - 8B9D73521F7F1296007AB60F + 8B79295121F34765006E9731 /Users/christopherjohnson/Desktop/MacAU/ChorusEnsemble/ChorusEnsemble.xcodeproj WindowString - 616 217 810 487 0 0 1440 878 + 457 305 810 487 0 0 1440 878 WindowToolsV3 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 @@ 288 RubberWindowFrame - 586 185 841 654 0 0 1440 878 + 513 205 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,13 +353,13 @@ _historyCapacity 0 bookmark - 8BE9F8701F8EA4A0009702A4 + 8B79296121F347C4006E9731 history 8BCA0F671D87688800A4EFAF 8B1E10641D87858F0016BF5B 8B1E10651D87858F0016BF5B - 8B9D735D1F7F9736007AB60F + 8BE9F8701F8EA4A0009702A4 SplitCount @@ -373,18 +373,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 216}} + {{0, 0}, {531, 202}} RubberWindowFrame - 586 185 841 654 0 0 1440 878 + 513 205 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 216pt + 202pt Proportion - 392pt + 406pt Tabs @@ -398,9 +398,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 365}} + {{10, 27}, {531, 379}} RubberWindowFrame - 586 185 841 654 0 0 1440 878 + 513 205 841 654 0 0 1440 878 Module XCDetailModule @@ -482,11 +482,11 @@ TableOfContents - 8BE9F8711F8EA4A0009702A4 + 8B79296221F347C4006E9731 1CA23ED40692098700951B8B - 8BE9F8721F8EA4A0009702A4 + 8B79296321F347C4006E9731 8BD7274A1D46E5A5000176F0 - 8BE9F8731F8EA4A0009702A4 + 8B79296421F347C4006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +659,7 @@ StatusbarIsVisible TimeStamp - 529441952.39161801 + 569591748.91110599 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -676,11 +676,11 @@ 5 WindowOrderList - 8BE9F8741F8EA4A0009702A4 + 8B79296521F347C4006E9731 /Users/christopherjohnson/Desktop/MacAU/ClipOnly/ClipOnly.xcodeproj WindowString - 586 185 841 654 0 0 1440 878 + 513 205 841 654 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 631 363 810 487 0 0 1440 878 + 470 336 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -340,7 +338,7 @@ PBXProjectModuleGUID 8B049F931D109A8900F78DCA PBXProjectModuleLabel - Console4Buss.cpp + Console4Buss.h PBXSplitModuleInNavigatorKey Split0 @@ -348,15 +346,15 @@ PBXProjectModuleGUID 8B049F941D109A8900F78DCA PBXProjectModuleLabel - Console4Buss.cpp + Console4Buss.h _historyCapacity 0 bookmark - 8B484E2A1FC73D0300977397 + 8B79297D21F34A7F006E9731 history - 8B484E281FC73D0300977397 - 8B484E291FC73D0300977397 + 8B79297721F34A6E006E9731 + 8B79297821F34A6E006E9731 SplitCount @@ -370,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {603, 51}} RubberWindowFrame - 631 363 810 487 0 0 1440 878 + 470 336 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 51pt Proportion - 372pt + 390pt Tabs @@ -395,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} - RubberWindowFrame - 631 363 810 487 0 0 1440 878 + {{10, 27}, {603, 363}} Module XCDetailModule @@ -451,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 363}} + RubberWindowFrame + 470 336 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +477,11 @@ TableOfContents - 8B484E2B1FC73D0300977397 + 8B79296E21F349E0006E9731 1CA23ED40692098700951B8B - 8B484E2C1FC73D0300977397 + 8B79296F21F349E0006E9731 8B049F931D109A8900F78DCA - 8B484E2D1FC73D0300977397 + 8B79297021F349E0006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +634,7 @@ StatusbarIsVisible TimeStamp - 533150979.70890802 + 569592447.53790605 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -656,7 +654,7 @@ /Users/christopherjohnson/Desktop/MacAU/Console4Buss/Console4Buss.xcodeproj WindowString - 631 363 810 487 0 0 1440 878 + 470 336 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 199 RubberWindowFrame - 629 366 810 487 0 0 1440 878 + 484 362 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,13 +350,13 @@ _historyCapacity 0 bookmark - 8B484F201FCB6ADC00977397 + 8B79299121F34AF7006E9731 history 8B6F9BCA1D4A913400B449D5 8B484F0F1FCB69BE00977397 8B484F1F1FCB6ADC00977397 - 8B6F9B891D4A8A2400B449D5 + 8B79298C21F34AE6006E9731 SplitCount @@ -372,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {589, 96}} + {{0, 0}, {589, 80}} RubberWindowFrame - 629 366 810 487 0 0 1440 878 + 484 362 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 96pt + 80pt Proportion - 345pt + 361pt Tabs @@ -397,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {589, 318}} - RubberWindowFrame - 629 366 810 487 0 0 1440 878 + {{10, 27}, {589, 334}} Module XCDetailModule @@ -453,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {589, 334}} + RubberWindowFrame + 484 362 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -481,11 +479,11 @@ TableOfContents - 8B484F211FCB6ADC00977397 + 8B79299221F34AF7006E9731 1CA23ED40692098700951B8B - 8B484F221FCB6ADC00977397 + 8B79299321F34AF7006E9731 8B049F641D108FA800F78DCA - 8B484F231FCB6ADC00977397 + 8B79299421F34AF7006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -638,7 +636,7 @@ StatusbarIsVisible TimeStamp - 533424860.76372099 + 569592567.96526098 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -658,7 +656,7 @@ /Users/christopherjohnson/Desktop/MacAU/Console4Channel/Console4Channel.xcodeproj WindowString - 629 366 810 487 0 0 1440 878 + 484 362 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 841 - 841 + 705 + 705 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -325,7 +323,7 @@ 288 RubberWindowFrame - 710 433 705 445 0 0 1440 878 + 539 403 705 445 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -341,7 +339,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - Console5Buss.cpp + Console5Buss.h PBXSplitModuleInNavigatorKey Split0 @@ -349,16 +347,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - Console5Buss.cpp + Console5Buss.h _historyCapacity 0 bookmark - 8B4E5591201BC43400B5DC2A + 8B7929A821F34F7F006E9731 history 8BBE44D71FE5EAC70022E6F7 - 8B95A7D820006AC3007183A2 - 8B4E5566201BC09200B5DC2A + 8B7929A221F34F6F006E9731 + 8B7929A321F34F6F006E9731 SplitCount @@ -372,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {395, 0}} + {{0, 0}, {395, 120}} RubberWindowFrame - 710 433 705 445 0 0 1440 878 + 539 403 705 445 0 0 1440 878 Module PBXNavigatorGroup Proportion - 0pt + 120pt Proportion - 399pt + 279pt Tabs @@ -397,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {395, 372}} - RubberWindowFrame - 710 433 705 445 0 0 1440 878 + {{10, 27}, {395, 252}} Module XCDetailModule @@ -453,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {395, 252}} + RubberWindowFrame + 539 403 705 445 0 0 1440 878 Module PBXBuildResultsModule @@ -481,11 +479,11 @@ TableOfContents - 8B4E5592201BC43400B5DC2A + 8B7929A921F34F7F006E9731 1CA23ED40692098700951B8B - 8B4E5593201BC43400B5DC2A + 8B7929AA21F34F7F006E9731 8BD7274A1D46E5A5000176F0 - 8B4E5594201BC43400B5DC2A + 8B7929AB21F34F7F006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +656,7 @@ StatusbarIsVisible TimeStamp - 538690612.183846 + 569593727.64458299 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -678,7 +676,7 @@ /Users/christopherjohnson/Desktop/MacAU/Console5Buss/Console5Buss.xcodeproj WindowString - 710 433 705 445 0 0 1440 878 + 539 403 705 445 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 841 - 841 + 817 + 817 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -325,7 +323,7 @@ 288 RubberWindowFrame - 596 381 817 431 0 0 1440 878 + 533 389 817 431 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,11 +351,11 @@ _historyCapacity 0 bookmark - 8B8D6A19207ABF300029B7B0 + 8B7929BE21F353E2006E9731 history 8B050BAA206487EB00700365 - 8B8D6A18207ABF300029B7B0 + 8B7929B921F353D1006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {507, 53}} + {{0, 0}, {507, 35}} RubberWindowFrame - 596 381 817 431 0 0 1440 878 + 533 389 817 431 0 0 1440 878 Module PBXNavigatorGroup Proportion - 53pt + 35pt Proportion - 332pt + 350pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {507, 305}} - RubberWindowFrame - 596 381 817 431 0 0 1440 878 + {{10, 27}, {507, 323}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {507, 323}} + RubberWindowFrame + 533 389 817 431 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8B8D6A1A207ABF300029B7B0 + 8B7929BF21F353E2006E9731 1CA23ED40692098700951B8B - 8B8D6A1B207ABF300029B7B0 + 8B7929C021F353E2006E9731 8BD7274A1D46E5A5000176F0 - 8B8D6A1C207ABF300029B7B0 + 8B7929C121F353E2006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +655,7 @@ StatusbarIsVisible TimeStamp - 544915248.23002303 + 569594850.24200404 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -677,7 +675,7 @@ /Users/christopherjohnson/Desktop/MacAU/Console5Channel/Console5Channel.xcodeproj WindowString - 596 381 817 431 0 0 1440 878 + 533 389 817 431 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 20 224 841 654 0 0 1440 878 + 55 218 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -354,10 +352,10 @@ _historyCapacity 0 bookmark - 8B4D27592002BF690051360A + 8B7929D421F35450006E9731 history - 8B95A7E020006AC9007183A2 + 8B7929CF21F3543F006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 229}} + {{0, 0}, {531, 216}} RubberWindowFrame - 20 224 841 654 0 0 1440 878 + 55 218 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 229pt + 216pt Proportion - 379pt + 392pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 352}} - RubberWindowFrame - 20 224 841 654 0 0 1440 878 + {{10, 27}, {531, 365}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {531, 365}} + RubberWindowFrame + 55 218 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8B4D275A2002BF690051360A + 8B7929D521F35450006E9731 1CA23ED40692098700951B8B - 8B4D275B2002BF690051360A + 8B7929D621F35450006E9731 8BD7274A1D46E5A5000176F0 - 8B4D275C2002BF690051360A + 8B7929D721F35450006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +655,7 @@ StatusbarIsVisible TimeStamp - 537050985.45516396 + 569594960.15694499 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,11 +672,10 @@ 5 WindowOrderList - 8B4D275D2002BF690051360A /Users/christopherjohnson/Desktop/MacAU/Console5DarkCh/Console5DarkCh.xcodeproj WindowString - 20 224 841 654 0 0 1440 878 + 55 218 841 654 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 476 182 841 654 0 0 1440 878 + 398 187 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -342,7 +340,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - CrunchyGrooveWear.h + CrunchyGrooveWear.cpp PBXSplitModuleInNavigatorKey Split0 @@ -350,15 +348,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - CrunchyGrooveWear.h + CrunchyGrooveWear.cpp _historyCapacity 0 bookmark - 8B1A6DF8204CA7FC009DEEA1 + 8B7929EB21F356E6006E9731 history 8B181BD6204CA7CC00516BEE - 8B181BD8204CA7CC00516BEE + 8B9D5E35207AB7DF00C332E2 + 8B7929E621F356D5006E9731 SplitCount @@ -372,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 158}} + {{0, 0}, {531, 109}} RubberWindowFrame - 476 182 841 654 0 0 1440 878 + 398 187 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 158pt + 109pt Proportion - 450pt + 499pt Tabs @@ -397,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 423}} - RubberWindowFrame - 476 182 841 654 0 0 1440 878 + {{10, 27}, {531, 472}} Module XCDetailModule @@ -453,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 365}} + {{10, 27}, {531, 472}} + RubberWindowFrame + 398 187 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -481,11 +480,11 @@ TableOfContents - 8B1A6DF5204CA7FC009DEEA1 + 8B7929EC21F356E6006E9731 1CA23ED40692098700951B8B - 8B1A6DF6204CA7FC009DEEA1 + 8B7929ED21F356E6006E9731 8BD7274A1D46E5A5000176F0 - 8B1A6DF7204CA7FC009DEEA1 + 8B7929EE21F356E6006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +657,7 @@ StatusbarIsVisible TimeStamp - 541894652.77613103 + 569595622.14955699 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -678,7 +677,7 @@ /Users/christopherjohnson/Desktop/MacAU/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj WindowString - 476 182 841 654 0 0 1440 878 + 398 187 841 654 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 708 184 841 654 0 0 1440 878 + 463 195 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -354,10 +352,10 @@ _historyCapacity 0 bookmark - 8BBB350621C472FB00825986 + 8B792A0121F35748006E9731 history - 8BBB31EA21BDBFE700825986 + 8B7929FC21F35738006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 229}} + {{0, 0}, {531, 216}} RubberWindowFrame - 708 184 841 654 0 0 1440 878 + 463 195 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 229pt + 216pt Proportion - 379pt + 392pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 352}} - RubberWindowFrame - 708 184 841 654 0 0 1440 878 + {{10, 27}, {531, 365}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {531, 365}} + RubberWindowFrame + 463 195 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8BBB350721C472FC00825986 + 8B792A0221F35748006E9731 1CA23ED40692098700951B8B - 8BBB350821C472FC00825986 + 8B792A0321F35748006E9731 8BD7274A1D46E5A5000176F0 - 8BBB350921C472FC00825986 + 8B792A0421F35748006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +655,7 @@ StatusbarIsVisible TimeStamp - 566522619.99816501 + 569595720.77537096 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,11 +672,10 @@ 5 WindowOrderList - 8BBB350A21C472FC00825986 /Users/christopherjohnson/Desktop/MacAU/Crystal/Crystal.xcodeproj WindowString - 708 184 841 654 0 0 1440 878 + 463 195 841 654 0 0 1440 878 WindowToolsV3 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 @@ 288 RubberWindowFrame - 592 163 841 654 0 0 1440 878 + 481 181 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,13 +353,13 @@ _historyCapacity 0 bookmark - 8B9D738A1F7F978A007AB60F + 8B792A3021F35DE0006E9731 history 8BD4F5F01E6E13CD00288155 8BD4F6011E6E155D00288155 8BD4F6021E6E155D00288155 - 8B9D64111F7C844B007AB60F + 8B9D738A1F7F978A007AB60F SplitCount @@ -373,18 +373,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 216}} + {{0, 0}, {531, 202}} RubberWindowFrame - 592 163 841 654 0 0 1440 878 + 481 181 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 216pt + 202pt Proportion - 392pt + 406pt Tabs @@ -398,9 +398,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 365}} + {{10, 27}, {531, 379}} RubberWindowFrame - 592 163 841 654 0 0 1440 878 + 481 181 841 654 0 0 1440 878 Module XCDetailModule @@ -482,11 +482,11 @@ TableOfContents - 8B9D738B1F7F978A007AB60F + 8B792A3121F35DE0006E9731 1CA23ED40692098700951B8B - 8B9D738C1F7F978A007AB60F + 8B792A3221F35DE0006E9731 8BD7274A1D46E5A5000176F0 - 8B9D738D1F7F978A007AB60F + 8B792A3321F35DE0006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +659,7 @@ StatusbarIsVisible TimeStamp - 528455562.74837202 + 569597408.43308794 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -676,11 +676,10 @@ 5 WindowOrderList - 8B9D738E1F7F978A007AB60F /Users/christopherjohnson/Desktop/MacAU/DCVoltage/DCVoltage.xcodeproj WindowString - 592 163 841 654 0 0 1440 878 + 481 181 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 841 - 841 + 700 + 700 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 807 197 700 649 0 0 1440 878 + 562 202 700 649 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -354,10 +352,10 @@ _historyCapacity 0 bookmark - 8B15DCF1217AA138007AD769 + 8B792A4621F35E3B006E9731 history - 8B42FC5121604F050092969A + 8B792A4121F35E2C006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {390, 197}} + {{0, 0}, {390, 183}} RubberWindowFrame - 807 197 700 649 0 0 1440 878 + 562 202 700 649 0 0 1440 878 Module PBXNavigatorGroup Proportion - 197pt + 183pt Proportion - 406pt + 420pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {390, 379}} - RubberWindowFrame - 807 197 700 649 0 0 1440 878 + {{10, 27}, {390, 393}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 352}} + {{10, 27}, {390, 393}} + RubberWindowFrame + 562 202 700 649 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8B15DCC9217A9CFD007AD769 + 8B792A4721F35E3B006E9731 1CA23ED40692098700951B8B - 8B15DCCA217A9CFD007AD769 + 8B792A4821F35E3B006E9731 8BD7274A1D46E5A5000176F0 - 8B15DCCB217A9CFD007AD769 + 8B792A4921F35E3B006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +655,7 @@ StatusbarIsVisible TimeStamp - 561684792.65047503 + 569597499.49246502 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -677,7 +675,7 @@ /Users/christopherjohnson/Desktop/MacAU/DeEss/DeEss.xcodeproj WindowString - 807 197 700 649 0 0 1440 878 + 562 202 700 649 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 614 318 810 487 0 0 1440 878 + 516 329 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,11 +350,11 @@ _historyCapacity 0 bookmark - 8B9754332103D44500A4FFA3 + 8B792A7821F35F77006E9731 history 8B7E3E4320A68C5B00482CB5 - 8BB8B6DD21039A3300751000 + 8B792A7321F35F66006E9731 SplitCount @@ -370,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 86}} + {{0, 0}, {603, 69}} RubberWindowFrame - 614 318 810 487 0 0 1440 878 + 516 329 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 86pt + 69pt Proportion - 355pt + 372pt Tabs @@ -395,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} - RubberWindowFrame - 614 318 810 487 0 0 1440 878 + {{10, 27}, {603, 345}} Module XCDetailModule @@ -451,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 312}} + {{10, 27}, {603, 345}} + RubberWindowFrame + 516 329 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +477,11 @@ TableOfContents - 8B9754342103D44500A4FFA3 + 8B792A7921F35F77006E9731 1CA23ED40692098700951B8B - 8B9754352103D44500A4FFA3 + 8B792A7A21F35F77006E9731 8B8D69E4207ABD0F0029B7B0 - 8B9754362103D44500A4FFA3 + 8B792A7B21F35F77006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +634,7 @@ StatusbarIsVisible TimeStamp - 553899077.362046 + 569597815.38705599 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +651,10 @@ 5 WindowOrderList - 8B9754372103D44500A4FFA3 /Users/christopherjohnson/Desktop/MacAU/DeRez/DeRez.xcodeproj WindowString - 614 318 810 487 0 0 1440 878 + 516 329 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -300,7 +300,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 5 2 1 0 @@ -324,7 +324,7 @@ 185 RubberWindowFrame - 619 361 810 487 0 0 1440 878 + 482 370 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +352,10 @@ _historyCapacity 0 bookmark - 8B241C8921015F29001BBF7E + 8B792A5D21F35ED5006E9731 history - 8BC5CD4B208D59FB0058B257 + 8B792A5721F35EBB006E9731 SplitCount @@ -369,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 102}} + {{0, 0}, {603, 86}} RubberWindowFrame - 619 361 810 487 0 0 1440 878 + 482 370 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 102pt + 86pt Proportion - 339pt + 355pt Tabs @@ -394,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 312}} - RubberWindowFrame - 619 361 810 487 0 0 1440 878 + {{10, 27}, {603, 328}} Module XCDetailModule @@ -450,7 +448,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 328}} + RubberWindowFrame + 482 370 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +478,11 @@ TableOfContents - 8B241C8A21015F29001BBF7E + 8B792A5E21F35ED5006E9731 1CA23ED40692098700951B8B - 8B241C8B21015F29001BBF7E + 8B792A5F21F35ED5006E9731 8BE3FF9D1DAAD40200A5AAF5 - 8B241C8C21015F29001BBF7E + 8B792A6021F35ED5006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +635,7 @@ StatusbarIsVisible TimeStamp - 553738025.40924096 + 569597652.99950302 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,10 +652,11 @@ 5 WindowOrderList + 8B792A6121F35ED5006E9731 /Users/christopherjohnson/Desktop/MacAU/Density/Density.xcodeproj WindowString - 619 361 810 487 0 0 1440 878 + 482 370 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 531 308 810 487 0 0 1440 878 + 516 308 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8B9D73AA1F7F984A007AB60F + 8B792A8E21F35FEC006E9731 history - 8B9D64341F7C8495007AB60F + 8B792A8921F35FDB006E9731 SplitCount @@ -369,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {603, 51}} RubberWindowFrame - 531 308 810 487 0 0 1440 878 + 516 308 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 51pt Proportion - 372pt + 390pt Tabs @@ -394,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} - RubberWindowFrame - 531 308 810 487 0 0 1440 878 + {{10, 27}, {603, 363}} Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 363}} + RubberWindowFrame + 516 308 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8B9D73AB1F7F984A007AB60F + 8B792A8F21F35FEC006E9731 1CA23ED40692098700951B8B - 8B9D73AC1F7F984A007AB60F + 8B792A9021F35FEC006E9731 8B3ED5371DDE6344004F9D64 - 8B9D73AD1F7F984A007AB60F + 8B792A9121F35FEC006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 528455754.98853803 + 569597932.88541305 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +650,10 @@ 5 WindowOrderList - 8B9D73AE1F7F984A007AB60F /Users/christopherjohnson/Desktop/MacAU/Desk/Desk.xcodeproj WindowString - 531 308 810 487 0 0 1440 878 + 516 308 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -325,7 +323,7 @@ 288 RubberWindowFrame - 599 190 841 654 0 0 1440 878 + 487 206 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,10 +351,10 @@ _historyCapacity 0 bookmark - 8B9D73B91F7F9867007AB60F + 8B792AA421F36073006E9731 history - 8B9D64451F7C84BA007AB60F + 8B792A9F21F36063006E9731 SplitCount @@ -370,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 188}} + {{0, 0}, {531, 173}} RubberWindowFrame - 599 190 841 654 0 0 1440 878 + 487 206 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 188pt + 173pt Proportion - 420pt + 435pt Tabs @@ -395,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 393}} - RubberWindowFrame - 599 190 841 654 0 0 1440 878 + {{10, 27}, {531, 408}} Module XCDetailModule @@ -451,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {531, 408}} + RubberWindowFrame + 487 206 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +477,11 @@ TableOfContents - 8B9D73BA1F7F9867007AB60F + 8B792AA521F36073006E9731 1CA23ED40692098700951B8B - 8B9D73BB1F7F9867007AB60F + 8B792AA621F36073006E9731 8BD7274A1D46E5A5000176F0 - 8B9D73BC1F7F9867007AB60F + 8B792AA721F36073006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -656,7 +654,7 @@ StatusbarIsVisible TimeStamp - 528455783.26185501 + 569598067.29641104 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -673,11 +671,10 @@ 5 WindowOrderList - 8B9D73BD1F7F9867007AB60F /Users/christopherjohnson/Desktop/MacAU/Desk4/Desk4.xcodeproj WindowString - 599 190 841 654 0 0 1440 878 + 487 206 841 654 0 0 1440 878 WindowToolsV3 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 5 2 1 0 @@ -324,7 +324,7 @@ 185 RubberWindowFrame - 630 345 810 487 0 0 1440 878 + 493 340 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,11 +352,11 @@ _historyCapacity 0 bookmark - 8B904D1120A44D87008CBAD8 + 8B792ABB21F36103006E9731 history 8B904CF820A44C4B008CBAD8 - 8B904D1020A44D87008CBAD8 + 8B792AB521F360EC006E9731 SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 51}} + {{0, 0}, {603, 32}} RubberWindowFrame - 630 345 810 487 0 0 1440 878 + 493 340 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 51pt + 32pt Proportion - 390pt + 409pt Tabs @@ -395,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} - RubberWindowFrame - 630 345 810 487 0 0 1440 878 + {{10, 27}, {603, 382}} Module XCDetailModule @@ -451,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 382}} + RubberWindowFrame + 493 340 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +479,11 @@ TableOfContents - 8B904D1220A44D87008CBAD8 + 8B792ABC21F36103006E9731 1CA23ED40692098700951B8B - 8B904D1320A44D87008CBAD8 + 8B792ABD21F36103006E9731 8BC5212E1DB3E2E500E72CD6 - 8B904D1420A44D87008CBAD8 + 8B792ABE21F36103006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 547638663.51005495 + 569598211.72343302 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +653,11 @@ 5 WindowOrderList - 8B904D1520A44D87008CBAD8 + 8B792ABF21F36103006E9731 /Users/christopherjohnson/Desktop/MacAU/Distance/Distance.xcodeproj WindowString - 630 345 810 487 0 0 1440 878 + 493 340 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 576 144 841 654 0 0 1440 878 + 487 174 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -354,13 +352,13 @@ _historyCapacity 0 bookmark - 8B7E3D4520A64FFD00482CB5 + 8B792AD221F3616C006E9731 history 8B904DA120A465EC008CBAD8 8B7E3D4220A64FFD00482CB5 8B7E3D4320A64FFD00482CB5 - 8B7E3D4420A64FFD00482CB5 + 8B792ACD21F3615C006E9731 SplitCount @@ -374,18 +372,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 202}} + {{0, 0}, {531, 188}} RubberWindowFrame - 576 144 841 654 0 0 1440 878 + 487 174 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 202pt + 188pt Proportion - 406pt + 420pt Tabs @@ -399,9 +397,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 379}} - RubberWindowFrame - 576 144 841 654 0 0 1440 878 + {{10, 27}, {531, 393}} Module XCDetailModule @@ -455,7 +451,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {531, 393}} + RubberWindowFrame + 487 174 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -483,11 +481,11 @@ TableOfContents - 8B7E3D4620A64FFD00482CB5 + 8B792AD321F3616C006E9731 1CA23ED40692098700951B8B - 8B7E3D4720A64FFD00482CB5 + 8B792AD421F3616C006E9731 8BD7274A1D46E5A5000176F0 - 8B7E3D4820A64FFD00482CB5 + 8B792AD521F3616C006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -660,7 +658,7 @@ StatusbarIsVisible TimeStamp - 547770365.68357301 + 569598316.742221 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -680,7 +678,7 @@ /Users/christopherjohnson/Desktop/MacAU/Distance2/Distance2.xcodeproj WindowString - 576 144 841 654 0 0 1440 878 + 487 174 841 654 0 0 1440 878 WindowToolsV3 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 + +#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 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1v3 + FavBarConfig + + PBXProjectModuleGUID + 8BD3CCBC148831C90062E48C + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1v3 + MajorVersion + 33 + MinorVersion + 0 + Name + Default + Notifications + + OpenEditors + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-combo-popup + action + build + debugger-enable-breakpoints + get-info + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + BecomeActive + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 089C166AFE841209C02AAC07 + 08FB77ADFE841716C02AAC07 + 8BA05AEB0720742700365D66 + 1C37FBAC04509CD000000102 + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 20 + 19 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 445}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 463}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 203 321 788 504 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 203pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + MyNewFile14.java + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + MyNewFile14.java + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {580, 269}} + RubberWindowFrame + 203 321 788 504 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 269pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 274}, {580, 189}} + RubberWindowFrame + 203 321 788 504 0 0 1440 878 + + Module + XCDetailModule + Proportion + 189pt + + + Proportion + 580pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 8B563EC9161B5E170067FE32 + 1CE0B1FE06471DED0097A5F4 + 8B563ECA161B5E170067FE32 + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.shortV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 2 + Type + Perspectives + UpdateMessage + 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 '%@'? + WindowJustification + 5 + WindowOrderList + + 8BD3CCBD148831C90062E48C + /Developer/Library/Xcode/Project Templates/System Plug-in/Audio Unit Effect/Audio Unit Effect/StarterAU.xcodeproj + + WindowString + 203 321 788 504 0 0 1440 878 + WindowToolsV3 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {500, 218}} + RubberWindowFrame + 668 222 500 500 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 218pt + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{0, 223}, {500, 236}} + RubberWindowFrame + 668 222 500 500 0 0 1440 878 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 459pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 8BD3CCBD148831C90062E48C + 8B563ECB161B5E170067FE32 + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowContentMinSize + 486 300 + WindowString + 668 222 500 500 0 0 1440 878 + WindowToolGUID + 8BD3CCBD148831C90062E48C + WindowToolIsVisible + + + + Identifier + windowTool.debugger + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {317, 164}} + {{317, 0}, {377, 164}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {694, 164}} + {{0, 164}, {694, 216}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleDrawerSize + {100, 120} + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {694, 380}} + RubberWindowFrame + 321 238 694 422 0 0 1440 878 + + Module + PBXDebugSessionModule + Proportion + 100% + + + Proportion + 100% + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CD10A99069EF8BA00B06720 + 1C0AD2AB069F1E9B00FABCE6 + 1C162984064C10D400B95A72 + 1C0AD2AC069F1E9B00FABCE6 + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 321 238 694 422 0 0 1440 878 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + 0 + + + Identifier + windowTool.find + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD0528D0623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {781, 167}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 50% + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{8, 0}, {773, 254}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 50% + + + Proportion + 428pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D57069F1CE1000CFCEE + 1C530D58069F1CE1000CFCEE + 1C530D59069F1CE1000CFCEE + 1CDD528C0622207200134675 + 1C530D5A069F1CE1000CFCEE + 1CE0B1FE06471DED0097A5F4 + 1CD0528E0623707200166675 + + WindowString + 62 385 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + MENUSEPARATOR + + + Identifier + windowTool.debuggerConsole + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {650, 250}} + RubberWindowFrame + 516 632 650 250 0 0 1680 1027 + + Module + PBXDebugCLIModule + Proportion + 209pt + + + Proportion + 209pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAAD065D492600B07095 + 1C78EAAE065D492600B07095 + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 650 41 650 250 0 0 1280 1002 + WindowToolGUID + 1C78EAAD065D492600B07095 + WindowToolIsVisible + 0 + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.0950012207031 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + Identifier + windowTool.breakpoints + IsVertical + 0 + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 0 + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CDDB66807F98D9800BB5817 + 1CDDB66907F98D9800BB5817 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 315 424 744 409 0 0 1440 878 + WindowToolGUID + 1CDDB66807F98D9800BB5817 + WindowToolIsVisible + 1 + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + 0 + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + 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 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + AIODescriptionKey + DockingSystemVisible + + Extension + perspectivev3 + FavBarConfig + + PBXProjectModuleGUID + 8BD7274F1D46E5A5000176F0 + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.defaultV3 + MajorVersion + 34 + MinorVersion + 0 + Name + All-In-One + Notifications + + + XCObserverAutoDisconnectKey + + XCObserverDefintionKey + + PBXStatusErrorsKey + 0 + + XCObserverFactoryKey + XCPerspectivesSpecificationIdentifier + XCObserverGUIDKey + XCObserverProjectIdentifier + XCObserverNotificationKey + PBXStatusBuildStateMessageNotification + XCObserverTargetKey + XCMainBuildResultsModuleGUID + XCObserverTriggerKey + awakenModuleWithObserver: + XCObserverValidationKey + + PBXStatusErrorsKey + 2 + + + + OpenEditors + + PerspectiveWidths + + 841 + 841 + + Perspectives + + + ChosenToolbarItems + + XCToolbarPerspectiveControl + NSToolbarSeparatorItem + active-combo-popup + action + NSToolbarFlexibleSpaceItem + debugger-enable-breakpoints + build-and-go + com.apple.ide.PBXToolbarStopButton + get-info + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.project + IsVertical + + Layout + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CA23ED40692098700951B8B + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 288 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 089C166AFE841209C02AAC07 + 08FB77ADFE841716C02AAC07 + 8BA05A56072072A900365D66 + 089C167CFE841241C02AAC07 + 1C37FBAC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 4 + 2 + 1 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {288, 595}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + + GeometryConfiguration + + Frame + {{0, 0}, {305, 613}} + GroupTreeTableConfiguration + + MainColumn + 288 + + RubberWindowFrame + 566 208 841 654 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 305pt + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 8BD7274A1D46E5A5000176F0 + PBXProjectModuleLabel + DitherFloat.cpp + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 8BD7274B1D46E5A5000176F0 + PBXProjectModuleLabel + DitherFloat.cpp + _historyCapacity + 0 + bookmark + 8BEF85AD21F6801300FEF113 + history + + 8BEF85AB21F6801300FEF113 + 8BEF85AC21F6801300FEF113 + + + SplitCount + 1 + + StatusBarVisibility + + XCSharingToken + com.apple.Xcode.CommonNavigatorGroupSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {531, 413}} + RubberWindowFrame + 566 208 841 654 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 413pt + + + Proportion + 195pt + Tabs + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA23EDF0692099D00951B8B + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{10, 27}, {531, 168}} + RubberWindowFrame + 566 208 841 654 0 0 1440 878 + + Module + XCDetailModule + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA23EE00692099D00951B8B + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{10, 31}, {603, 297}} + + Module + PBXProjectFindModule + + + ContentConfiguration + + PBXCVSModuleFilterTypeKey + 1032 + PBXProjectModuleGUID + 1CA23EE10692099D00951B8B + PBXProjectModuleLabel + SCM Results + + GeometryConfiguration + + Frame + {{10, 31}, {603, 297}} + + Module + PBXCVSModule + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + XCBuildResultsTrigger_Collapse + 1023 + XCBuildResultsTrigger_Open + 1012 + + GeometryConfiguration + + Frame + {{10, 27}, {531, 365}} + + Module + PBXBuildResultsModule + + + + + Proportion + 531pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDockableTabModule + XCDetailModule + PBXProjectFindModule + PBXCVSModule + PBXBuildResultsModule + + TableOfContents + + 8BEF85AE21F6801300FEF113 + 1CA23ED40692098700951B8B + 8BEF85AF21F6801300FEF113 + 8BD7274A1D46E5A5000176F0 + 8BEF85B021F6801300FEF113 + 1CA23EDF0692099D00951B8B + 1CA23EE00692099D00951B8B + 1CA23EE10692099D00951B8B + XCMainBuildResultsModuleGUID + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ChosenToolbarItems + + XCToolbarPerspectiveControl + NSToolbarSeparatorItem + active-combo-popup + NSToolbarFlexibleSpaceItem + debugger-enable-breakpoints + build-and-go + com.apple.ide.PBXToolbarStopButton + debugger-restart-executable + debugger-pause + debugger-step-over + debugger-step-into + debugger-step-out + NSToolbarFlexibleSpaceItem + servicesModulebreakpoints + debugger-show-console-window + + ControllerClassBaseName + PBXDebugSessionModule + IconName + DebugTabIcon + Identifier + perspective.debug + IsVertical + + Layout + + + ContentConfiguration + + PBXProjectModuleGUID + 1CCC7628064C1048000F2A68 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {424, 270}} + + Module + PBXDebugCLIModule + Proportion + 270pt + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {395, 214}} + {{395, 0}, {415, 214}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {810, 214}} + {{0, 214}, {810, 227}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1CCC7629064C1048000F2A68 + PBXProjectModuleLabel + Debug + + GeometryConfiguration + + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 5}, {810, 441}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 120 + Value + 85 + Summary + 185 + + Frame + {{395, 0}, {415, 214}} + + + Module + PBXDebugSessionModule + Proportion + 441pt + + + Name + Debug + ServiceClasses + + XCModuleDock + PBXDebugCLIModule + PBXDebugSessionModule + PBXDebugProcessAndThreadModule + PBXDebugProcessViewModule + PBXDebugThreadViewModule + PBXDebugStackFrameViewModule + PBXNavigatorGroup + + TableOfContents + + 8B79259B21F28381006E9731 + 1CCC7628064C1048000F2A68 + 1CCC7629064C1048000F2A68 + 8B79259C21F28381006E9731 + 8B79259D21F28381006E9731 + 8B79259E21F28381006E9731 + 8B79259F21F28381006E9731 + 8B7925A021F28381006E9731 + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.debugV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecification.xcperspec' + StatusbarIsVisible + + TimeStamp + 569802771.16773605 + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 2 + Type + Perspectives + UpdateMessage + + WindowJustification + 5 + WindowOrderList + + /Users/christopherjohnson/Desktop/MacAU/DitherFloat/DitherFloat.xcodeproj + + WindowString + 566 208 841 654 0 0 1440 878 + WindowToolsV3 + + + Identifier + windowTool.debugger + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {317, 164}} + {{317, 0}, {377, 164}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {694, 164}} + {{0, 164}, {694, 216}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleDrawerSize + {100, 120} + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {694, 380}} + RubberWindowFrame + 321 238 694 422 0 0 1440 878 + + Module + PBXDebugSessionModule + Proportion + 100% + + + Proportion + 100% + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CD10A99069EF8BA00B06720 + 1C0AD2AB069F1E9B00FABCE6 + 1C162984064C10D400B95A72 + 1C0AD2AC069F1E9B00FABCE6 + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 321 238 694 422 0 0 1440 878 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + 0 + + + Identifier + windowTool.build + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD052900623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {500, 215}} + RubberWindowFrame + 192 257 500 500 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 218pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + + GeometryConfiguration + + Frame + {{0, 222}, {500, 236}} + RubberWindowFrame + 192 257 500 500 0 0 1280 1002 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 458pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAA5065D492600B07095 + 1C78EAA6065D492600B07095 + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowString + 192 257 500 500 0 0 1280 1002 + + + Identifier + windowTool.find + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD0528D0623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {781, 167}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 50% + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{8, 0}, {773, 254}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 50% + + + Proportion + 428pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D57069F1CE1000CFCEE + 1C530D58069F1CE1000CFCEE + 1C530D59069F1CE1000CFCEE + 1CDD528C0622207200134675 + 1C530D5A069F1CE1000CFCEE + 1CE0B1FE06471DED0097A5F4 + 1CD0528E0623707200166675 + + WindowString + 62 385 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + Identifier + windowTool.debuggerConsole + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {700, 358}} + RubberWindowFrame + 149 87 700 400 0 0 1440 878 + + Module + PBXDebugCLIModule + Proportion + 358pt + + + Proportion + 358pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D5B069F1CE1000CFCEE + 1C530D5C069F1CE1000CFCEE + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 149 87 440 400 0 0 1440 878 + WindowToolGUID + 1C530D5B069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.09500122070312 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scmV3 + WindowString + 743 379 452 308 0 0 1280 1002 + + + Identifier + windowTool.breakpoints + IsVertical + 0 + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 0 + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CDDB66807F98D9800BB5817 + 1CDDB66907F98D9800BB5817 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 315 424 744 409 0 0 1440 878 + WindowToolGUID + 1CDDB66807F98D9800BB5817 + WindowToolIsVisible + 1 + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 166pt + + + Proportion + 166pt + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + 0 + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {369, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {616, 353}} + MembersFrame + {{0, 105}, {369, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 94 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 597 125 616 374 0 0 1280 1002 + + Module + PBXClassBrowserModule + Proportion + 354pt + + + Proportion + 354pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C78EABA065D492600B07095 + 1C78EABB065D492600B07095 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 597 125 616 374 0 0 1280 1002 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + 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 = ""; }; + 3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAVectorUnit.cpp; sourceTree = ""; }; + 3EEA126C089847F5002C6BFC /* CAVectorUnit.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAVectorUnit.h; sourceTree = ""; }; + 3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAVectorUnitTypes.h; sourceTree = ""; }; + 8B5C7FBF076FB2C200A15F61 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; + 8BA05A660720730100365D66 /* DitherFloat.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = DitherFloat.cpp; sourceTree = ""; }; + 8BA05A670720730100365D66 /* DitherFloat.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = DitherFloat.exp; sourceTree = ""; }; + 8BA05A680720730100365D66 /* DitherFloat.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = DitherFloat.r; sourceTree = ""; }; + 8BA05A690720730100365D66 /* DitherFloatVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DitherFloatVersion.h; sourceTree = ""; }; + 8BA05A7F072073D200365D66 /* AUBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUBase.cpp; sourceTree = ""; }; + 8BA05A80072073D200365D66 /* AUBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUBase.h; sourceTree = ""; }; + 8BA05A81072073D200365D66 /* AUDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUDispatch.cpp; sourceTree = ""; }; + 8BA05A82072073D200365D66 /* AUDispatch.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUDispatch.h; sourceTree = ""; }; + 8BA05A83072073D200365D66 /* AUInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUInputElement.cpp; sourceTree = ""; }; + 8BA05A84072073D200365D66 /* AUInputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUInputElement.h; sourceTree = ""; }; + 8BA05A85072073D200365D66 /* AUOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputElement.cpp; sourceTree = ""; }; + 8BA05A86072073D200365D66 /* AUOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUOutputElement.h; sourceTree = ""; }; + 8BA05A87072073D200365D66 /* AUResources.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = AUResources.r; sourceTree = ""; }; + 8BA05A88072073D200365D66 /* AUScopeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUScopeElement.cpp; sourceTree = ""; }; + 8BA05A89072073D200365D66 /* AUScopeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUScopeElement.h; sourceTree = ""; }; + 8BA05A8A072073D200365D66 /* ComponentBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentBase.cpp; sourceTree = ""; }; + 8BA05A8B072073D200365D66 /* ComponentBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ComponentBase.h; sourceTree = ""; }; + 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUEffectBase.cpp; sourceTree = ""; }; + 8BA05A9B072073D200365D66 /* AUEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUEffectBase.h; sourceTree = ""; }; + 8BA05AA7072073D200365D66 /* AUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUBuffer.cpp; sourceTree = ""; }; + 8BA05AA8072073D200365D66 /* AUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUBuffer.h; sourceTree = ""; }; + 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUDebugDispatcher.cpp; sourceTree = ""; }; + 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUDebugDispatcher.h; sourceTree = ""; }; + 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUInputFormatConverter.h; sourceTree = ""; }; + 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUSilentTimeout.h; sourceTree = ""; }; + 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUTimestampGenerator.h; sourceTree = ""; }; + 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayout.cpp; sourceTree = ""; }; + 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAAudioChannelLayout.h; sourceTree = ""; }; + 8BA05AE10720742100365D66 /* CAMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAMutex.cpp; sourceTree = ""; }; + 8BA05AE20720742100365D66 /* CAMutex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAMutex.h; sourceTree = ""; }; + 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamBasicDescription.cpp; sourceTree = ""; }; + 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAStreamBasicDescription.h; sourceTree = ""; }; + 8BA05AF9072074E100365D66 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; + 8BA05AFA072074E100365D66 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = ""; }; + 8BA05B01072074F900365D66 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; + 8BA05B050720754400365D66 /* CAAUParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUParameter.cpp; sourceTree = ""; }; + 8BA05B060720754400365D66 /* CAAUParameter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAAUParameter.h; sourceTree = ""; }; + 8BC6025B073B072D006C4272 /* DitherFloat.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DitherFloat.h; sourceTree = ""; }; + 8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 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 = ""; + }; + 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 = ""; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 8D01CCD10486CAD60068D4B7 /* Info.plist */, + 089C167DFE841241C02AAC07 /* InfoPlist.strings */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77ADFE841716C02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 8BA05A56072072A900365D66 /* AU Source */, + 8BA05AEB0720742700365D66 /* PublicUtility */, + 8BA05A7D072073D200365D66 /* AUPublic */, + ); + name = Source; + sourceTree = ""; + }; + 19C28FB4FE9D528D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D01CCD20486CAD60068D4B7 /* DitherFloat.component */, + ); + name = Products; + sourceTree = ""; + }; + 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 = ""; + }; + 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 = ""; + }; + 8BA05A99072073D200365D66 /* OtherBases */ = { + isa = PBXGroup; + children = ( + 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */, + 8BA05A9B072073D200365D66 /* AUEffectBase.h */, + ); + path = OtherBases; + sourceTree = ""; + }; + 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 = ""; + }; + 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 = ""; + }; +/* 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 Binary files /dev/null and b/plugins/MacAU/DitherFloat/English.lproj/InfoPlist.strings 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 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + com.airwindows.audiounit.${PRODUCT_NAME:identifier} + CFBundleName + ${PROJECTNAMEASIDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + DthX + CFBundleVersion + 1.0 + CSResourcesFileMapped + + + 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 @@ + + + + + BuildVersion + 3 + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1.0 + ProjectName + ${EXECUTABLE_NAME} + SourceVersion + 590000 + + 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 @@ OpenEditors - - - Content - - PBXProjectModuleGUID - 8BBB303C21B70E4F00825986 - PBXProjectModuleLabel - DitherMeDiskers.cpp - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 8BBB303D21B70E4F00825986 - PBXProjectModuleLabel - DitherMeDiskers.cpp - _historyCapacity - 0 - bookmark - 8BBB32A621C4509A00825986 - history - - 8BBB304421B70E5D00825986 - - - SplitCount - 1 - - StatusBarVisibility - - - Geometry - - Frame - {{0, 20}, {1129, 737}} - PBXModuleWindowStatusBarHidden2 - - RubberWindowFrame - 15 95 1129 778 0 0 1440 878 - - - + PerspectiveWidths 841 @@ -297,6 +256,8 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -365,7 +326,7 @@ 288 RubberWindowFrame - 16 205 841 654 0 0 1440 878 + 67 204 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -393,10 +354,10 @@ _historyCapacity 0 bookmark - 8BBB32A221C4509A00825986 + 8B792AF321F36563006E9731 history - 8BBB329D21C4508800825986 + 8BBB32A221C4509A00825986 SplitCount @@ -410,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 229}} + {{0, 0}, {531, 216}} RubberWindowFrame - 16 205 841 654 0 0 1440 878 + 67 204 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 229pt + 216pt Proportion - 379pt + 392pt Tabs @@ -435,7 +396,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 352}} + {{10, 27}, {531, 365}} + RubberWindowFrame + 67 204 841 654 0 0 1440 878 Module XCDetailModule @@ -490,8 +453,6 @@ Frame {{10, 27}, {531, 352}} - RubberWindowFrame - 16 205 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -519,11 +480,11 @@ TableOfContents - 8BBB32A321C4509A00825986 + 8B792AF421F36563006E9731 1CA23ED40692098700951B8B - 8BBB32A421C4509A00825986 + 8B792AF521F36563006E9731 8BD7274A1D46E5A5000176F0 - 8BBB32A521C4509A00825986 + 8B792AF621F36563006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -696,7 +657,7 @@ StatusbarIsVisible TimeStamp - 566513818.26343 + 569599331.99398303 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -713,11 +674,10 @@ 5 WindowOrderList - 8BBB303C21B70E4F00825986 /Users/christopherjohnson/Desktop/MacAU/DitherMeDiskers/DitherMeDiskers.xcodeproj WindowString - 16 205 841 654 0 0 1440 878 + 67 204 841 654 0 0 1440 878 WindowToolsV3 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -354,11 +354,11 @@ _historyCapacity 0 bookmark - 8BBB32D021C4524300825986 + 8B792B0821F365A0006E9731 history 8B416D5621B6000500DD5013 - 8BBB329121C4504400825986 + 8B792B0221F3657A006E9731 SplitCount @@ -372,18 +372,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 158}} + {{0, 0}, {531, 109}} RubberWindowFrame 594 193 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 158pt + 109pt Proportion - 450pt + 499pt Tabs @@ -397,9 +397,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 423}} - RubberWindowFrame - 594 193 841 654 0 0 1440 878 + {{10, 27}, {531, 472}} Module XCDetailModule @@ -453,7 +451,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 408}} + {{10, 27}, {531, 472}} + RubberWindowFrame + 594 193 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -481,11 +481,11 @@ TableOfContents - 8BBB32D121C4524300825986 + 8B792B0921F365A0006E9731 1CA23ED40692098700951B8B - 8BBB32D221C4524300825986 + 8B792B0A21F365A0006E9731 8BD7274A1D46E5A5000176F0 - 8BBB32D321C4524300825986 + 8B792B0B21F365A0006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +658,7 @@ StatusbarIsVisible TimeStamp - 566514243.55308604 + 569599392.67723703 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -350,11 +352,11 @@ _historyCapacity 0 bookmark - 8B913FEB213DC5A500BA6EEC + 8B792AE321F361B2006E9731 history 8B913FA3213DBD2F00BA6EEC - 8B913FE1213DC54C00BA6EEC + 8B913FEB213DC5A500BA6EEC SplitCount @@ -368,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {603, 51}} RubberWindowFrame 468 237 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 51pt Proportion - 372pt + 390pt Tabs @@ -393,7 +395,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 363}} + RubberWindowFrame + 468 237 810 487 0 0 1440 878 Module XCDetailModule @@ -448,8 +452,6 @@ Frame {{10, 27}, {603, 345}} - RubberWindowFrame - 468 237 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -477,11 +479,11 @@ TableOfContents - 8B913FB1213DC48A00BA6EEC + 8B792AE421F361B2006E9731 1CA23ED40692098700951B8B - 8B913FB2213DC48A00BA6EEC + 8B792AE521F361B2006E9731 8B9E7EE61DDE28AC006035FA - 8B913FB3213DC48A00BA6EEC + 8B792AE621F361B2006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +636,7 @@ StatusbarIsVisible TimeStamp - 557696421.06510198 + 569598386.47118104 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode 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 @@ 288 RubberWindowFrame - 328 180 841 654 0 0 1440 878 + 19 213 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -341,7 +341,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - DoublePaulVersion.h + DoublePaul.cpp PBXSplitModuleInNavigatorKey Split0 @@ -349,17 +349,17 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - DoublePaulVersion.h + DoublePaul.cpp _historyCapacity 0 bookmark - 8B9D73DB1F7F98B0007AB60F + 8B792B1921F365CE006E9731 history 8B753DD21E4005B300347157 8BB6DE001E5A8BDB00F3CD1D - 8BB6DE011E5A8BDB00F3CD1D - 8B9D64691F7C8512007AB60F + 8B913F30213DB8AA00BA6EEC + 8B913FCD213DC4EE00BA6EEC SplitCount @@ -373,18 +373,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 202}} + {{0, 0}, {531, 158}} RubberWindowFrame - 328 180 841 654 0 0 1440 878 + 19 213 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 202pt + 158pt Proportion - 406pt + 450pt Tabs @@ -398,9 +398,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 379}} + {{10, 27}, {531, 423}} RubberWindowFrame - 328 180 841 654 0 0 1440 878 + 19 213 841 654 0 0 1440 878 Module XCDetailModule @@ -482,11 +482,11 @@ TableOfContents - 8B9D73DC1F7F98B0007AB60F + 8B792B1A21F365CE006E9731 1CA23ED40692098700951B8B - 8B9D73DD1F7F98B0007AB60F + 8B792B1B21F365CE006E9731 8BD7274A1D46E5A5000176F0 - 8B9D73DE1F7F98B0007AB60F + 8B792B1C21F365CE006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +659,7 @@ StatusbarIsVisible TimeStamp - 528455856.515679 + 569599438.68596196 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -676,11 +676,10 @@ 5 WindowOrderList - 8B9D73DF1F7F98B0007AB60F /Users/christopherjohnson/Desktop/MacAU/DoublePaul/DoublePaul.xcodeproj WindowString - 328 180 841 654 0 0 1440 878 + 19 213 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -300,7 +298,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 5 2 1 0 @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 624 381 810 487 0 0 1440 878 + 511 370 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,11 +350,11 @@ _historyCapacity 0 bookmark - 8BE626162157B2BF00E4E476 + 8B792B3021F36679006E9731 history 8B3D790A1DB4057D00247AD5 - 8BE626152157B2BF00E4E476 + 8B792B2A21F36661006E9731 SplitCount @@ -370,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame - 624 381 810 487 0 0 1440 878 + 511 370 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -395,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} - RubberWindowFrame - 624 381 810 487 0 0 1440 878 + {{10, 27}, {603, 297}} Module XCDetailModule @@ -451,7 +447,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 511 370 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +477,11 @@ TableOfContents - 8BE626172157B2BF00E4E476 + 8B792B3121F36679006E9731 1CA23ED40692098700951B8B - 8BE626182157B2BF00E4E476 + 8B792B3221F36679006E9731 8BE3FFB51DAAD42E00A5AAF5 - 8BE626192157B2BF00E4E476 + 8B792B3321F36679006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +634,7 @@ StatusbarIsVisible TimeStamp - 559395519.27228796 + 569599609.11398804 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,10 +651,11 @@ 5 WindowOrderList + 8B792B3421F36679006E9731 /Users/christopherjohnson/Desktop/MacAU/Drive/Drive.xcodeproj WindowString - 624 381 810 487 0 0 1440 878 + 511 370 810 487 0 0 1440 878 WindowToolsV3 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -324,7 +324,7 @@ 185 RubberWindowFrame - 618 344 810 487 0 0 1440 878 + 526 350 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -340,7 +340,7 @@ PBXProjectModuleGUID 8BBDB99F208BFC67006F0D04 PBXProjectModuleLabel - DrumSlam.cpp + DrumSlam.h PBXSplitModuleInNavigatorKey Split0 @@ -348,15 +348,16 @@ PBXProjectModuleGUID 8BBDB9A0208BFC67006F0D04 PBXProjectModuleLabel - DrumSlam.cpp + DrumSlam.h _historyCapacity 0 bookmark - 8B7E3F3020A72F9500482CB5 + 8B792B5221F36735006E9731 history 8B7E3F2E20A72F9500482CB5 - 8B7E3F2F20A72F9500482CB5 + 8B792B4421F36707006E9731 + 8B792B4521F36707006E9731 SplitCount @@ -370,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame - 618 344 810 487 0 0 1440 878 + 526 350 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -395,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} - RubberWindowFrame - 618 344 810 487 0 0 1440 878 + {{10, 27}, {603, 297}} Module XCDetailModule @@ -451,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 526 350 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +480,11 @@ TableOfContents - 8B7E3F3120A72F9500482CB5 + 8B792B4721F36707006E9731 1CA23ED40692098700951B8B - 8B7E3F3220A72F9500482CB5 + 8B792B4821F36707006E9731 8BBDB99F208BFC67006F0D04 - 8B7E3F3320A72F9500482CB5 + 8B792B4921F36707006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +637,7 @@ StatusbarIsVisible TimeStamp - 547827605.06235003 + 569599797.07027304 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -656,7 +657,7 @@ /Users/christopherjohnson/Desktop/MacAU/DrumSlam/DrumSlam.xcodeproj WindowString - 618 344 810 487 0 0 1440 878 + 526 350 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 824 324 573 517 0 0 1440 878 + 506 318 573 517 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8B15DC9D217A9A34007AD769 + 8B792B6521F37044006E9731 history - 8B15DBE021788E16007AD769 + 8B792B6021F37032006E9731 SplitCount @@ -369,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {366, 119}} + {{0, 0}, {366, 103}} RubberWindowFrame - 824 324 573 517 0 0 1440 878 + 506 318 573 517 0 0 1440 878 Module PBXNavigatorGroup Proportion - 119pt + 103pt Proportion - 352pt + 368pt Tabs @@ -394,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {366, 325}} - RubberWindowFrame - 824 324 573 517 0 0 1440 878 + {{10, 27}, {366, 341}} Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 27}, {366, 282}} + {{10, 27}, {366, 341}} + RubberWindowFrame + 506 318 573 517 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8B15DC9E217A9A34007AD769 + 8B792B6621F37044006E9731 1CA23ED40692098700951B8B - 8B15DC9F217A9A34007AD769 + 8B792B6721F37044006E9731 8B27205C2173B3A600396442 - 8B15DCA0217A9A34007AD769 + 8B792B6821F37044006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 561682996.86381996 + 569602116.17734897 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -655,7 +653,7 @@ /Users/christopherjohnson/Desktop/MacAU/DubCenter/DubCenter.xcodeproj WindowString - 824 324 573 517 0 0 1440 878 + 506 318 573 517 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 625 371 810 487 0 0 1440 878 + 412 359 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8B42FE3F21698BC50092969A + 8B792B7A21F3709C006E9731 history - 8B42FE3E21698BC50092969A + 8B792B7521F3708C006E9731 SplitCount @@ -369,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 69}} RubberWindowFrame - 625 371 810 487 0 0 1440 878 + 412 359 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 69pt Proportion - 324pt + 372pt Tabs @@ -394,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} - RubberWindowFrame - 625 371 810 487 0 0 1440 878 + {{10, 27}, {603, 345}} Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 345}} + RubberWindowFrame + 412 359 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8B42FE4021698BC50092969A + 8B792B7B21F3709C006E9731 1CA23ED40692098700951B8B - 8B42FE4121698BC50092969A + 8B792B7C21F3709C006E9731 8BE6256A2157A03900E4E476 - 8B42FE4221698BC50092969A + 8B792B7D21F3709C006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 560565189.36784196 + 569602204.74752998 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +650,11 @@ 5 WindowOrderList - 8B42FE4321698BC50092969A + 8B792B7E21F3709C006E9731 /Users/christopherjohnson/Desktop/MacAU/DubSub/DubSub.xcodeproj WindowString - 625 371 810 487 0 0 1440 878 + 412 359 810 487 0 0 1440 878 WindowToolsV3 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -324,7 +324,7 @@ 185 RubberWindowFrame - 630 291 810 487 0 0 1440 878 + 444 300 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +352,10 @@ _historyCapacity 0 bookmark - 8B9D73FD1F7F9959007AB60F + 8B792B8D21F37127006E9731 history - 8B9D648D1F7C8584007AB60F + 8B9D73FD1F7F9959007AB60F SplitCount @@ -369,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 102}} + {{0, 0}, {603, 86}} RubberWindowFrame - 630 291 810 487 0 0 1440 878 + 444 300 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 102pt + 86pt Proportion - 339pt + 355pt Tabs @@ -394,9 +394,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 312}} + {{10, 27}, {603, 328}} RubberWindowFrame - 630 291 810 487 0 0 1440 878 + 444 300 810 487 0 0 1440 878 Module XCDetailModule @@ -478,11 +478,11 @@ TableOfContents - 8B9D73FE1F7F9959007AB60F + 8B792B8E21F37127006E9731 1CA23ED40692098700951B8B - 8B9D73FF1F7F9959007AB60F + 8B792B8F21F37127006E9731 8BAC230D1F1EA30C009C635C - 8B9D74001F7F9959007AB60F + 8B792B9021F37127006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528456025.40104002 + 569602343.09456503 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +652,10 @@ 5 WindowOrderList - 8B9D74011F7F9959007AB60F /Users/christopherjohnson/Desktop/MacAU/DustBunny/DustBunny.xcodeproj WindowString - 630 291 810 487 0 0 1440 878 + 444 300 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -300,7 +300,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 3 + 4 2 1 0 @@ -324,7 +324,7 @@ 185 RubberWindowFrame - 626 361 810 487 0 0 1440 878 + 497 289 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -363,7 +363,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 626 361 810 487 0 0 1440 878 + 497 289 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -387,8 +387,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 626 361 810 487 0 0 1440 878 Module XCDetailModule @@ -442,7 +440,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 497 289 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -470,11 +470,11 @@ TableOfContents - 8B181AEC204C940200516BEE + 8B792BFF21F41480006E9731 1CA23ED40692098700951B8B - 8B181AED204C940200516BEE + 8B792C0021F41480006E9731 8BCA70302027EDF000D92BAD - 8B181AEE204C940200516BEE + 8B792C0121F41480006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -627,7 +627,7 @@ StatusbarIsVisible TimeStamp - 541889538.11759806 + 569644160.89823198 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -644,10 +644,11 @@ 5 WindowOrderList + 8B792C0221F41480006E9731 /Users/christopherjohnson/Desktop/MacAU/EQ/EQ.xcodeproj WindowString - 626 361 810 487 0 0 1440 878 + 497 289 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 622 330 810 487 0 0 1440 878 + 457 331 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8B9D740C1F7F99CD007AB60F + 8B792BA321F371D7006E9731 history - 8B9D649D1F7C85BA007AB60F + 8B792B9E21F371C6006E9731 SplitCount @@ -369,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 86}} + {{0, 0}, {603, 69}} RubberWindowFrame - 622 330 810 487 0 0 1440 878 + 457 331 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 86pt + 69pt Proportion - 355pt + 372pt Tabs @@ -394,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} - RubberWindowFrame - 622 330 810 487 0 0 1440 878 + {{10, 27}, {603, 345}} Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 345}} + RubberWindowFrame + 457 331 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8B9D740D1F7F99CD007AB60F + 8B792BA421F371D7006E9731 1CA23ED40692098700951B8B - 8B9D740E1F7F99CD007AB60F + 8B792BA521F371D7006E9731 8B753E4E1E40210F00347157 - 8B9D740F1F7F99CD007AB60F + 8B792BA621F371D7006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 528456141.63520998 + 569602519.02649903 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +650,10 @@ 5 WindowOrderList - 8B9D74101F7F99CD007AB60F /Users/christopherjohnson/Desktop/MacAU/EdIsDim/EdIsDim.xcodeproj WindowString - 622 330 810 487 0 0 1440 878 + 457 331 810 487 0 0 1440 878 WindowToolsV3 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 @@ Dock - BecomeActive - ContentConfiguration PBXProjectModuleGUID @@ -352,12 +350,12 @@ _historyCapacity 0 bookmark - 8BC009F320436BB300304BC7 + 8B792BBB21F37261006E9731 history 8BCEFB832042DD54002E8187 8BCEFBA32043656D002E8187 - 8BC009F220436BB300304BC7 + 8B792BB621F37247006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 306}} + {{0, 0}, {603, 94}} RubberWindowFrame 442 380 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 306pt + 94pt Proportion - 135pt + 347pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 108}} - RubberWindowFrame - 442 380 810 487 0 0 1440 878 + {{10, 27}, {603, 114}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 320}} + RubberWindowFrame + 442 380 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8BC009F420436BB300304BC7 + 8B792BBC21F37261006E9731 1CA23ED40692098700951B8B - 8BC009F520436BB300304BC7 + 8B792BBD21F37261006E9731 8BCA6F152027DB6B00D92BAD - 8BC009F620436BB300304BC7 + 8B792BBE21F37261006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -637,7 +635,7 @@ StatusbarIsVisible TimeStamp - 541289395.77599096 + 569602657.83772898 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 618 342 810 487 0 0 1440 878 + 475 322 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,12 +350,12 @@ _historyCapacity 0 bookmark - 8B7E3EE420A720D100482CB5 + 8B792BD121F372CE006E9731 history 8B7E3EE120A720D100482CB5 8B7E3EE220A720D100482CB5 - 8B7E3EE320A720D100482CB5 + 8B792BCC21F372B8006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 102}} RubberWindowFrame - 618 342 810 487 0 0 1440 878 + 475 322 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 102pt Proportion - 324pt + 339pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} - RubberWindowFrame - 618 342 810 487 0 0 1440 878 + {{10, 27}, {603, 312}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 312}} + RubberWindowFrame + 475 322 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8B7E3EE520A720D100482CB5 + 8B792BD221F372CE006E9731 1CA23ED40692098700951B8B - 8B7E3EE620A720D100482CB5 + 8B792BD321F372CE006E9731 8B7E3C2F20A5148000482CB5 - 8B7E3EE720A720D100482CB5 + 8B792BD421F372CE006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -637,7 +635,7 @@ StatusbarIsVisible TimeStamp - 547823825.49813604 + 569602766.40819299 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -657,7 +655,7 @@ /Users/christopherjohnson/Desktop/MacAU/Energy/Energy.xcodeproj WindowString - 618 342 810 487 0 0 1440 878 + 475 322 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -300,7 +298,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 618 373 810 487 0 0 1440 878 + 501 374 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8B4C96561F94E0EC00064452 + 8B792BE821F37401006E9731 history - 8B4C96551F94E0EC00064452 + 8B792BE321F373ED006E9731 SplitCount @@ -369,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 86}} + {{0, 0}, {603, 69}} RubberWindowFrame - 618 373 810 487 0 0 1440 878 + 501 374 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 86pt + 69pt Proportion - 355pt + 372pt Tabs @@ -394,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} - RubberWindowFrame - 618 373 810 487 0 0 1440 878 + {{10, 27}, {603, 345}} Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 345}} + RubberWindowFrame + 501 374 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8B4C96571F94E0EC00064452 + 8B792BE921F37401006E9731 1CA23ED40692098700951B8B - 8B4C96581F94E0EC00064452 + 8B792BEA21F37401006E9731 8B7FDBCE1F85C8E400A80060 - 8B4C96591F94E0EC00064452 + 8B792BEB21F37401006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 529850604.37639201 + 569603073.27928698 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +650,10 @@ 5 WindowOrderList - 8B4C965A1F94E0EC00064452 /Users/christopherjohnson/Desktop/MacAU/Ensemble/Ensemble.xcodeproj WindowString - 618 373 810 487 0 0 1440 878 + 501 374 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -325,7 +325,7 @@ 185 RubberWindowFrame - 610 324 810 487 0 0 1440 878 + 507 328 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,10 +353,10 @@ _historyCapacity 0 bookmark - 8BFDAF84213714150079F90D + 8B792C1621F41559006E9731 history - 8B67C6D91FA1721B008C64D6 + 8B792C1021F4152A006E9731 SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 86}} + {{0, 0}, {603, 69}} RubberWindowFrame - 610 324 810 487 0 0 1440 878 + 507 328 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 86pt + 69pt Proportion - 355pt + 372pt Tabs @@ -395,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} - RubberWindowFrame - 610 324 810 487 0 0 1440 878 + {{10, 27}, {603, 345}} Module XCDetailModule @@ -451,7 +449,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 345}} + RubberWindowFrame + 507 328 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +479,11 @@ TableOfContents - 8BFDAF85213714150079F90D + 8B792C1721F41559006E9731 1CA23ED40692098700951B8B - 8BFDAF86213714150079F90D + 8B792C1821F41559006E9731 8B753E6F1E40231800347157 - 8BFDAF87213714150079F90D + 8B792C1921F41559006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 557257749.03621697 + 569644377.55946004 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,10 +653,11 @@ 5 WindowOrderList + 8B792C1A21F41559006E9731 /Users/christopherjohnson/Desktop/MacAU/EveryTrim/EveryTrim.xcodeproj WindowString - 610 324 810 487 0 0 1440 878 + 507 328 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -325,7 +323,7 @@ 185 RubberWindowFrame - 506 355 810 487 0 0 1440 878 + 457 343 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,11 +351,11 @@ _historyCapacity 0 bookmark - 8B9D741B1F7F99FC007AB60F + 8B792C2D21F416C5006E9731 history 8B5E540B1D629899009FEF76 - 8B9D64B81F7C86FC007AB60F + 8B792C2821F416B3006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 51}} + {{0, 0}, {603, 32}} RubberWindowFrame - 506 355 810 487 0 0 1440 878 + 457 343 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 51pt + 32pt Proportion - 390pt + 409pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} - RubberWindowFrame - 506 355 810 487 0 0 1440 878 + {{10, 27}, {603, 382}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 382}} + RubberWindowFrame + 457 343 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8B9D741C1F7F99FC007AB60F + 8B792C2E21F416C5006E9731 1CA23ED40692098700951B8B - 8B9D741D1F7F99FC007AB60F + 8B792C2F21F416C5006E9731 8B5E54091D629899009FEF76 - 8B9D741E1F7F99FC007AB60F + 8B792C3021F416C5006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -637,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528456188.63718599 + 569644741.719468 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -654,11 +652,10 @@ 5 WindowOrderList - 8B9D741F1F7F99FC007AB60F /Users/christopherjohnson/Desktop/MacAU/FathomFive/FathomFive.xcodeproj WindowString - 506 355 810 487 0 0 1440 878 + 457 343 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 745 315 810 487 0 0 1440 878 + 517 310 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,11 +350,11 @@ _historyCapacity 0 bookmark - 8B15DD2C217AA6B4007AD769 + 8B792C4321F4194B006E9731 history 8BE625F22157B1F000E4E476 - 8BE6261E2157B2E800E4E476 + 8B792C3E21F4179E006E9731 SplitCount @@ -370,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 102}} RubberWindowFrame - 745 315 810 487 0 0 1440 878 + 517 310 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 102pt Proportion - 324pt + 339pt Tabs @@ -395,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} - RubberWindowFrame - 745 315 810 487 0 0 1440 878 + {{10, 27}, {603, 312}} Module XCDetailModule @@ -451,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 312}} + RubberWindowFrame + 517 310 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +477,11 @@ TableOfContents - 8B15DD08217AA44C007AD769 + 8B792C4421F4194B006E9731 1CA23ED40692098700951B8B - 8B15DD09217AA44C007AD769 + 8B792C4521F4194B006E9731 8BE625F02157B1F000E4E476 - 8B15DD0A217AA44C007AD769 + 8B792C4621F4194B006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +634,7 @@ StatusbarIsVisible TimeStamp - 561686196.25954103 + 569645387.98353899 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -656,7 +654,7 @@ /Users/christopherjohnson/Desktop/MacAU/Floor/Floor.xcodeproj WindowString - 745 315 810 487 0 0 1440 878 + 517 310 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -300,7 +300,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 5 2 1 0 @@ -324,7 +324,7 @@ 185 RubberWindowFrame - 362 267 810 487 0 0 1440 878 + 431 299 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -340,7 +340,7 @@ PBXProjectModuleGUID 8B9CE5211DFF96EB00A5DC6F PBXProjectModuleLabel - + Fracture.cpp PBXSplitModuleInNavigatorKey Split0 @@ -348,7 +348,15 @@ PBXProjectModuleGUID 8B9CE5221DFF96EB00A5DC6F PBXProjectModuleLabel - + Fracture.cpp + _historyCapacity + 0 + bookmark + 8B792C5B21F41AB6006E9731 + history + + 8B792C5521F41A58006E9731 + SplitCount 1 @@ -361,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 0}} + {{0, 0}, {603, 132}} RubberWindowFrame - 362 267 810 487 0 0 1440 878 + 431 299 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 0pt + 132pt Proportion - 441pt + 309pt Tabs @@ -386,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} - RubberWindowFrame - 362 267 810 487 0 0 1440 878 + {{10, 27}, {603, 282}} Module XCDetailModule @@ -442,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 282}} + RubberWindowFrame + 431 299 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -470,11 +478,11 @@ TableOfContents - 8B9D742C1F7F9A57007AB60F + 8B792C5C21F41AB6006E9731 1CA23ED40692098700951B8B - 8B9D742D1F7F9A57007AB60F + 8B792C5D21F41AB6006E9731 8B9CE5211DFF96EB00A5DC6F - 8B9D742E1F7F9A57007AB60F + 8B792C5E21F41AB6006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -627,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528456279.90402597 + 569645750.04603803 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -644,11 +652,10 @@ 5 WindowOrderList - 8B9D742F1F7F9A57007AB60F /Users/christopherjohnson/Desktop/MacAU/Fracture/Fracture.xcodeproj WindowString - 362 267 810 487 0 0 1440 878 + 431 299 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -341,7 +339,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - FromTape.h + Info.plist PBXSplitModuleInNavigatorKey Split0 @@ -349,15 +347,14 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - FromTape.h + Info.plist _historyCapacity 0 bookmark - 8B9D743A1F7F9A77007AB60F + 8B792C7021F41F11006E9731 history 8B8845F81F20429900E13453 - 8B2B77731F6D6F8D00A2CD5B SplitCount @@ -397,8 +394,6 @@ Frame {{10, 27}, {531, 581}} - RubberWindowFrame - 187 187 841 654 0 0 1440 878 Module XCDetailModule @@ -452,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 525}} + {{10, 27}, {531, 581}} + RubberWindowFrame + 187 187 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +477,11 @@ TableOfContents - 8B9D743B1F7F9A77007AB60F + 8B792C7121F41F11006E9731 1CA23ED40692098700951B8B - 8B9D743C1F7F9A77007AB60F + 8B792C7221F41F11006E9731 8BD7274A1D46E5A5000176F0 - 8B9D743D1F7F9A77007AB60F + 8B792C7321F41F11006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +654,7 @@ StatusbarIsVisible TimeStamp - 528456311.18495703 + 569646865.43937504 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,7 +671,6 @@ 5 WindowOrderList - 8B9D743E1F7F9A77007AB60F /Users/christopherjohnson/Desktop/MacAU/FromTape/FromTape.xcodeproj WindowString 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 @@ 288 RubberWindowFrame - 622 458 815 376 0 0 1440 878 + 491 452 815 376 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,11 +352,11 @@ _historyCapacity 0 bookmark - 8B020A3621B354DE00952287 + 8B792C8121F41F65006E9731 history 8B0209B221B3258000952287 - 8B0209B421B3258000952287 + 8B416D4621B5FDC600DD5013 SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {505, 84}} + {{0, 0}, {505, 51}} RubberWindowFrame - 622 458 815 376 0 0 1440 878 + 491 452 815 376 0 0 1440 878 Module PBXNavigatorGroup Proportion - 84pt + 51pt Proportion - 246pt + 279pt Tabs @@ -395,9 +395,9 @@ GeometryConfiguration Frame - {{10, 27}, {505, 219}} + {{10, 27}, {505, 252}} RubberWindowFrame - 622 458 815 376 0 0 1440 878 + 491 452 815 376 0 0 1440 878 Module XCDetailModule @@ -451,7 +451,7 @@ GeometryConfiguration Frame - {{10, 27}, {505, 303}} + {{10, 27}, {505, 235}} Module PBXBuildResultsModule @@ -479,11 +479,11 @@ TableOfContents - 8B020A3721B354DE00952287 + 8B792C8221F41F65006E9731 1CA23ED40692098700951B8B - 8B020A3821B354DE00952287 + 8B792C8321F41F65006E9731 8BCAE2B921B0AD04005A3737 - 8B020A3921B354DE00952287 + 8B792C8421F41F65006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 565400798.62677002 + 569646949.70571005 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +653,10 @@ 5 WindowOrderList - 8B020A3A21B354DE00952287 /Users/christopherjohnson/Desktop/MacAU/Gatelinked/Gatelinked.xcodeproj WindowString - 622 458 815 376 0 0 1440 878 + 491 452 815 376 0 0 1440 878 WindowToolsV3 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 @@ OpenEditors - - - Content - - PBXProjectModuleGUID - 8B416D3221B5FD3000DD5013 - PBXProjectModuleLabel - Gatelope.cpp - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 8B416D3321B5FD3000DD5013 - PBXProjectModuleLabel - Gatelope.cpp - _historyCapacity - 0 - bookmark - 8B416D3421B5FD3000DD5013 - history - - 8B416D2421B5EF2500DD5013 - - - SplitCount - 1 - - StatusBarVisibility - - - Geometry - - Frame - {{0, 20}, {1129, 737}} - PBXModuleWindowStatusBarHidden2 - - RubberWindowFrame - 15 95 1129 778 0 0 1440 878 - - - + PerspectiveWidths 815 @@ -365,7 +324,7 @@ 288 RubberWindowFrame - 46 385 815 372 0 0 1440 878 + 278 409 815 372 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -393,11 +352,11 @@ _historyCapacity 0 bookmark - 8B416D2E21B5FD3000DD5013 + 8B792C9521F420BF006E9731 history 8B0209A521B3215F00952287 - 8B416D2921B5FD1F00DD5013 + 8B792C9021F41F9A006E9731 SplitCount @@ -411,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {505, 67}} + {{0, 0}, {505, 50}} RubberWindowFrame - 46 385 815 372 0 0 1440 878 + 278 409 815 372 0 0 1440 878 Module PBXNavigatorGroup Proportion - 67pt + 50pt Proportion - 259pt + 276pt Tabs @@ -436,7 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {505, 232}} + {{10, 27}, {505, 249}} Module XCDetailModule @@ -490,9 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {505, 232}} + {{10, 27}, {505, 249}} RubberWindowFrame - 46 385 815 372 0 0 1440 878 + 278 409 815 372 0 0 1440 878 Module PBXBuildResultsModule @@ -520,11 +479,11 @@ TableOfContents - 8B416D2F21B5FD3000DD5013 + 8B792C9621F420BF006E9731 1CA23ED40692098700951B8B - 8B416D3021B5FD3000DD5013 + 8B792C9721F420BF006E9731 8BD7274A1D46E5A5000176F0 - 8B416D3121B5FD3000DD5013 + 8B792C9821F420BF006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -697,7 +656,7 @@ StatusbarIsVisible TimeStamp - 565574960.58745801 + 569647295.48975003 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -714,11 +673,10 @@ 5 WindowOrderList - 8B416D3221B5FD3000DD5013 /Users/christopherjohnson/Desktop/MacAU/Gatelope/Gatelope.xcodeproj WindowString - 46 385 815 372 0 0 1440 878 + 278 409 815 372 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 619 304 810 487 0 0 1440 878 + 478 304 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8BC5D0B7209410C50058B257 + 8B792CAC21F42187006E9731 history - 8BC5D0B6209410C50058B257 + 8B792CA721F42166006E9731 SplitCount @@ -369,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame - 619 304 810 487 0 0 1440 878 + 478 304 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -394,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} - RubberWindowFrame - 619 304 810 487 0 0 1440 878 + {{10, 27}, {603, 297}} Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 478 304 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8BC5D0B8209410C50058B257 + 8B792CAD21F42187006E9731 1CA23ED40692098700951B8B - 8BC5D0B9209410C50058B257 + 8B792CAE21F42187006E9731 8B8D6996207ABA9A0029B7B0 - 8BC5D0BA209410C50058B257 + 8B792CAF21F42187006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 546574533.255705 + 569647495.88627398 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +650,10 @@ 5 WindowOrderList - 8BC5D0BB209410C50058B257 /Users/christopherjohnson/Desktop/MacAU/Golem/Golem.xcodeproj WindowString - 619 304 810 487 0 0 1440 878 + 478 304 810 487 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacAU/GrooveWear/GrooveWear.cpp b/plugins/MacAU/GrooveWear/GrooveWear.cpp old mode 100644 new mode 100755 index baf7ac4..62c9634 --- 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 old mode 100644 new mode 100755 index b9e7722..5f86da8 --- 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 old mode 100644 new mode 100755 diff --git a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.pbxuser old mode 100644 new mode 100755 index bdb3283..1980dfa --- 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 old mode 100644 new mode 100755 index a0182a0..3db790a --- a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -302,7 +300,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 603 113 841 654 0 0 1440 878 + 442 219 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -342,7 +340,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - GrooveWear.h + GrooveWear.cpp PBXSplitModuleInNavigatorKey Split0 @@ -350,16 +348,17 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - GrooveWear.h + GrooveWear.cpp _historyCapacity 0 bookmark - 8B4E5435201BA7FC00B5DC2A + 8B792CC221F422B5006E9731 history 8B0E2BD7201B927800943268 8B0E2BD8201B927800943268 - 8B4E5400201BA1BA00B5DC2A + 8B181B43204CA16500516BEE + 8B792CBD21F42257006E9731 SplitCount @@ -373,18 +372,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 142}} + {{0, 0}, {531, 109}} RubberWindowFrame - 603 113 841 654 0 0 1440 878 + 442 219 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 142pt + 109pt Proportion - 466pt + 499pt Tabs @@ -398,9 +397,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 439}} - RubberWindowFrame - 603 113 841 654 0 0 1440 878 + {{10, 27}, {531, 472}} Module XCDetailModule @@ -454,7 +451,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 365}} + {{10, 27}, {531, 472}} + RubberWindowFrame + 442 219 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -482,11 +481,11 @@ TableOfContents - 8B4E540C201BA27000B5DC2A + 8B792CC321F422B5006E9731 1CA23ED40692098700951B8B - 8B4E540D201BA27000B5DC2A + 8B792CC421F422B5006E9731 8BD7274A1D46E5A5000176F0 - 8B4E540E201BA27000B5DC2A + 8B792CC521F422B5006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +658,7 @@ StatusbarIsVisible TimeStamp - 538683388.29162097 + 569647797.66937697 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -679,7 +678,7 @@ /Users/christopherjohnson/Desktop/MacAU/GrooveWear/GrooveWear.xcodeproj WindowString - 603 113 841 654 0 0 1440 878 + 442 219 841 654 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/project.pbxproj b/plugins/MacAU/GrooveWear/GrooveWear.xcodeproj/project.pbxproj old mode 100644 new mode 100755 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 @@ PerspectiveWidths - 810 - 810 + 841 + 841 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -325,7 +323,7 @@ 288 RubberWindowFrame - 598 208 841 654 0 0 1440 878 + 455 207 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,13 +351,13 @@ _historyCapacity 0 bookmark - 8B9D74491F7F9ACF007AB60F + 8B792CD921F42423006E9731 history 8BC032BB1D6667CB0039F36E 8B3BE93A1D667DD60098F86C 8B3BE93B1D667DD60098F86C - 8B9D64EE1F7C8859007AB60F + 8B792CD321F42407006E9731 SplitCount @@ -373,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 216}} + {{0, 0}, {531, 202}} RubberWindowFrame - 598 208 841 654 0 0 1440 878 + 455 207 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 216pt + 202pt Proportion - 392pt + 406pt Tabs @@ -398,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 365}} - RubberWindowFrame - 598 208 841 654 0 0 1440 878 + {{10, 27}, {531, 379}} Module XCDetailModule @@ -454,7 +450,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {531, 379}} + RubberWindowFrame + 455 207 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -482,11 +480,11 @@ TableOfContents - 8B9D744A1F7F9ACF007AB60F + 8B792CDA21F42423006E9731 1CA23ED40692098700951B8B - 8B9D744B1F7F9ACF007AB60F + 8B792CDB21F42423006E9731 8BD7274A1D46E5A5000176F0 - 8B9D744C1F7F9ACF007AB60F + 8B792CDC21F42423006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +657,7 @@ StatusbarIsVisible TimeStamp - 528456399.548949 + 569648163.99752402 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -676,11 +674,11 @@ 5 WindowOrderList - 8B9D744D1F7F9ACF007AB60F + 8B792CDD21F42424006E9731 /Users/christopherjohnson/Desktop/MacAU/GuitarConditioner/GuitarConditioner.xcodeproj WindowString - 598 208 841 654 0 0 1440 878 + 455 207 841 654 0 0 1440 878 WindowToolsV3 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 5 + 4 2 1 0 @@ -324,7 +324,7 @@ 185 RubberWindowFrame - 627 370 810 487 0 0 1440 878 + 501 353 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +352,10 @@ _historyCapacity 0 bookmark - 8B181A0D204B961F00516BEE + 8B792CF121F425DC006E9731 history - 8B1819FB204B936300516BEE + 8B792CEB21F425BC006E9731 SplitCount @@ -369,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame - 627 370 810 487 0 0 1440 878 + 501 353 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -394,7 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 297}} Module XCDetailModule @@ -448,9 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 297}} RubberWindowFrame - 627 370 810 487 0 0 1440 878 + 501 353 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +478,11 @@ TableOfContents - 8B181A0E204B961F00516BEE + 8B792CF221F425DC006E9731 1CA23ED40692098700951B8B - 8B181A0F204B961F00516BEE + 8B792CF321F425DC006E9731 8BCA6FBD2027E68400D92BAD - 8B181A10204B961F00516BEE + 8B792CF421F425DC006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +635,7 @@ StatusbarIsVisible TimeStamp - 541824543.72034597 + 569648604.79217398 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +652,11 @@ 5 WindowOrderList - 8B181A11204B961F00516BEE + 8B792CF521F425DC006E9731 /Users/christopherjohnson/Desktop/MacAU/HardVacuum/HardVacuum.xcodeproj WindowString - 627 370 810 487 0 0 1440 878 + 501 353 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -301,7 +299,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 7 + 4 2 1 0 @@ -325,7 +323,7 @@ 185 RubberWindowFrame - 610 324 810 487 0 0 1440 878 + 483 338 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,10 +351,10 @@ _historyCapacity 0 bookmark - 8BB5DD3E1FBCE0D8008B4570 + 8B792D2D21F42744006E9731 history - 8BB5DCFB1FBCDFA9008B4570 + 8B792D2821F42723006E9731 SplitCount @@ -370,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {603, 51}} RubberWindowFrame - 610 324 810 487 0 0 1440 878 + 483 338 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 51pt Proportion - 372pt + 390pt Tabs @@ -395,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} - RubberWindowFrame - 610 324 810 487 0 0 1440 878 + {{10, 27}, {603, 363}} Module XCDetailModule @@ -451,7 +447,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 363}} + RubberWindowFrame + 483 338 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +477,11 @@ TableOfContents - 8BB5DD3F1FBCE0D8008B4570 + 8B792D2E21F42744006E9731 1CA23ED40692098700951B8B - 8BB5DD401FBCE0D8008B4570 + 8B792D2F21F42744006E9731 8B753E6F1E40231800347157 - 8BB5DD411FBCE0D8008B4570 + 8B792D3021F42744006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +634,7 @@ StatusbarIsVisible TimeStamp - 532472024.21283603 + 569648964.14450204 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +651,10 @@ 5 WindowOrderList - 8BB5DD421FBCE0D8008B4570 /Users/christopherjohnson/Desktop/MacAU/HermeTrim/HermeTrim.xcodeproj WindowString - 610 324 810 487 0 0 1440 878 + 483 338 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -325,7 +323,7 @@ 288 RubberWindowFrame - 599 176 841 654 0 0 1440 878 + 471 176 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,10 +351,10 @@ _historyCapacity 0 bookmark - 8B9D74581F7F9AF1007AB60F + 8B792D1021F42698006E9731 history - 8B9D64FF1F7C889C007AB60F + 8B792D0521F4265D006E9731 SplitCount @@ -370,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 202}} + {{0, 0}, {531, 188}} RubberWindowFrame - 599 176 841 654 0 0 1440 878 + 471 176 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 202pt + 188pt Proportion - 406pt + 420pt Tabs @@ -395,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 379}} - RubberWindowFrame - 599 176 841 654 0 0 1440 878 + {{10, 27}, {531, 393}} Module XCDetailModule @@ -451,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {531, 393}} + RubberWindowFrame + 471 176 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +477,11 @@ TableOfContents - 8B9D74591F7F9AF1007AB60F + 8B792D1121F42698006E9731 1CA23ED40692098700951B8B - 8B9D745A1F7F9AF1007AB60F + 8B792D1221F42698006E9731 8BD7274A1D46E5A5000176F0 - 8B9D745B1F7F9AF1007AB60F + 8B792D1321F42698006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -534,12 +532,12 @@ GeometryConfiguration Frame - {{0, 0}, {810, 0}} + {{0, 0}, {424, 270}} Module PBXDebugCLIModule Proportion - 0pt + 270pt ContentConfiguration @@ -632,14 +630,14 @@ TableOfContents - 8BD727EC1D46ECF1000176F0 + 8B792D1421F42698006E9731 1CCC7628064C1048000F2A68 1CCC7629064C1048000F2A68 - 8BD727ED1D46ECF1000176F0 - 8BD727EE1D46ECF1000176F0 - 8BD727EF1D46ECF1000176F0 - 8BD727F01D46ECF1000176F0 - 8BD727E71D46ECD9000176F0 + 8B792D1521F42698006E9731 + 8B792D1621F42698006E9731 + 8B792D1721F42698006E9731 + 8B792D1821F42698006E9731 + 8B792D1921F42698006E9731 ToolbarConfigUserDefaultsMinorVersion 2 @@ -656,7 +654,7 @@ StatusbarIsVisible TimeStamp - 528456433.21989697 + 569648792.66830301 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -673,11 +671,11 @@ 5 WindowOrderList - 8B9D745C1F7F9AF1007AB60F + 8B792D1A21F42698006E9731 /Users/christopherjohnson/Desktop/MacAU/Hermepass/Hermepass.xcodeproj WindowString - 599 176 841 654 0 0 1440 878 + 471 176 841 654 0 0 1440 878 WindowToolsV3 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 @@ _historyCapacity 0 bookmark - 8B9D74691F7F9B39007AB60F + 8B792D3921F4276D006E9731 history 8B9E7FA51DDE554B006035FA - 8B9D65101F7C88C6007AB60F + 8B9D74691F7F9B39007AB60F SplitCount @@ -371,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 173}} + {{0, 0}, {531, 158}} RubberWindowFrame 599 149 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 173pt + 158pt Proportion - 435pt + 450pt Tabs @@ -396,7 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 408}} + {{10, 27}, {531, 423}} RubberWindowFrame 599 149 841 654 0 0 1440 878 @@ -480,11 +480,11 @@ TableOfContents - 8B9D746A1F7F9B39007AB60F + 8B792D3A21F4276D006E9731 1CA23ED40692098700951B8B - 8B9D746B1F7F9B39007AB60F + 8B792D3B21F4276D006E9731 8BD7274A1D46E5A5000176F0 - 8B9D746C1F7F9B39007AB60F + 8B792D3C21F4276D006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +657,7 @@ StatusbarIsVisible TimeStamp - 528456505.919761 + 569649005.97733605 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,7 +674,7 @@ 5 WindowOrderList - 8B9D746D1F7F9B39007AB60F + 8B792D3D21F4276D006E9731 /Users/christopherjohnson/Desktop/MacAU/HighGlossDither/HighGlossDither.xcodeproj WindowString 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 589 316 810 487 0 0 1440 878 + 493 322 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,12 +350,12 @@ _historyCapacity 0 bookmark - 8B9D74781F7F9B7D007AB60F + 8B792D5021F427E4006E9731 history 8BD4F5C21E6E137800288155 8BD4F5C31E6E137800288155 - 8B9D65211F7C8934007AB60F + 8B792D4B21F427D4006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 253}} + {{0, 0}, {603, 244}} RubberWindowFrame - 589 316 810 487 0 0 1440 878 + 493 322 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 253pt + 244pt Proportion - 188pt + 197pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 161}} - RubberWindowFrame - 589 316 810 487 0 0 1440 878 + {{10, 27}, {603, 170}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 170}} + RubberWindowFrame + 493 322 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8B9D74791F7F9B7D007AB60F + 8B792D5121F427E4006E9731 1CA23ED40692098700951B8B - 8B9D747A1F7F9B7D007AB60F + 8B792D5221F427E4006E9731 8B753F071E4027BF00347157 - 8B9D747B1F7F9B7D007AB60F + 8B792D5321F427E4006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -637,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528456573.47978503 + 569649124.25200295 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -654,11 +652,10 @@ 5 WindowOrderList - 8B9D747C1F7F9B7D007AB60F /Users/christopherjohnson/Desktop/MacAU/HighImpact/HighImpact.xcodeproj WindowString - 589 316 810 487 0 0 1440 878 + 493 322 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 626 387 810 487 0 0 1440 878 + 369 385 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,13 +350,13 @@ _historyCapacity 0 bookmark - 8B9D74871F7F9B9C007AB60F + 8B792D6621F428CA006E9731 history 8B22B1581DB190F20075D7AA 8B22B1591DB190F20075D7AA 8B22B15A1DB190F20075D7AA - 8B9D65321F7C8976007AB60F + 8B792D6121F428B9006E9731 SplitCount @@ -372,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 264}} + {{0, 0}, {603, 256}} RubberWindowFrame - 626 387 810 487 0 0 1440 878 + 369 385 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 264pt + 256pt Proportion - 177pt + 185pt Tabs @@ -397,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 150}} - RubberWindowFrame - 626 387 810 487 0 0 1440 878 + {{10, 27}, {603, 158}} Module XCDetailModule @@ -453,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} + {{10, 27}, {603, 158}} + RubberWindowFrame + 369 385 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -481,11 +479,11 @@ TableOfContents - 8B9D74881F7F9B9C007AB60F + 8B792D6721F428CA006E9731 1CA23ED40692098700951B8B - 8B9D74891F7F9B9C007AB60F + 8B792D6821F428CA006E9731 8BC032A31D66648E0039F36E - 8B9D748A1F7F9B9C007AB60F + 8B792D6921F428CA006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -638,7 +636,7 @@ StatusbarIsVisible TimeStamp - 528456604.44275099 + 569649354.665344 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -655,11 +653,10 @@ 5 WindowOrderList - 8B9D748B1F7F9B9C007AB60F /Users/christopherjohnson/Desktop/MacAU/Highpass/Highpass.xcodeproj WindowString - 626 387 810 487 0 0 1440 878 + 369 385 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 630 297 810 487 0 0 1440 878 + 455 313 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8B9D74961F7F9BB0007AB60F + 8B792D7F21F4297F006E9731 history - 8B9D65431F7C899F007AB60F + 8B9D74961F7F9BB0007AB60F SplitCount @@ -371,7 +369,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 630 297 810 487 0 0 1440 878 + 455 313 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -395,8 +393,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 630 297 810 487 0 0 1440 878 Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 455 313 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8B9D74971F7F9BB0007AB60F + 8B792D7221F428E1006E9731 1CA23ED40692098700951B8B - 8B9D74981F7F9BB0007AB60F + 8B792D7321F428E1006E9731 8BAC23231F1EA3AC009C635C - 8B9D74991F7F9BB0007AB60F + 8B792D7421F428E1006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 528456624.78481799 + 569649535.57319403 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +650,10 @@ 5 WindowOrderList - 8B9D749A1F7F9BB0007AB60F /Users/christopherjohnson/Desktop/MacAU/Hombre/Hombre.xcodeproj WindowString - 630 297 810 487 0 0 1440 878 + 455 313 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 841 - 841 + 826 + 826 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -325,7 +323,7 @@ 288 RubberWindowFrame - 607 110 826 502 0 0 1440 878 + 386 241 826 502 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,10 +351,10 @@ _historyCapacity 0 bookmark - 8B9D74A51F7F9BC2007AB60F + 8B792D9121F42A46006E9731 history - 8B9D65541F7C89D7007AB60F + 8B9D74A51F7F9BC2007AB60F SplitCount @@ -372,7 +370,7 @@ Frame {{0, 0}, {516, 0}} RubberWindowFrame - 607 110 826 502 0 0 1440 878 + 386 241 826 502 0 0 1440 878 Module PBXNavigatorGroup @@ -396,8 +394,6 @@ Frame {{10, 27}, {516, 429}} - RubberWindowFrame - 607 110 826 502 0 0 1440 878 Module XCDetailModule @@ -451,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {516, 429}} + RubberWindowFrame + 386 241 826 502 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +477,11 @@ TableOfContents - 8B9D74A61F7F9BC2007AB60F + 8B792D9221F42A46006E9731 1CA23ED40692098700951B8B - 8B9D74A71F7F9BC2007AB60F + 8B792D9321F42A46006E9731 8BD7274A1D46E5A5000176F0 - 8B9D74A81F7F9BC2007AB60F + 8B792D9421F42A46006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -656,7 +654,7 @@ StatusbarIsVisible TimeStamp - 528456642.85610998 + 569649734.80982804 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -673,11 +671,10 @@ 5 WindowOrderList - 8B9D74A91F7F9BC2007AB60F /Users/christopherjohnson/Desktop/MacAU/IronOxide5/IronOxide5.xcodeproj WindowString - 607 110 826 502 0 0 1440 878 + 386 241 826 502 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 810 - 810 + 841 + 841 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -301,7 +299,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -353,11 +351,11 @@ _historyCapacity 0 bookmark - 8B9D74B41F7F9BE8007AB60F + 8B792DA721F42AD9006E9731 history 8BCB78421ED90EBD001D6861 - 8B9D65651F7C8A00007AB60F + 8B792DA221F42AC7006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 188}} + {{0, 0}, {531, 173}} RubberWindowFrame 396 187 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 188pt + 173pt Proportion - 420pt + 435pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 393}} - RubberWindowFrame - 396 187 841 654 0 0 1440 878 + {{10, 27}, {531, 408}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {531, 408}} + RubberWindowFrame + 396 187 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8B9D74B51F7F9BE8007AB60F + 8B792DA821F42AD9006E9731 1CA23ED40692098700951B8B - 8B9D74B61F7F9BE8007AB60F + 8B792DA921F42AD9006E9731 8BD7274A1D46E5A5000176F0 - 8B9D74B71F7F9BE8007AB60F + 8B792DAA21F42AD9006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +655,7 @@ StatusbarIsVisible TimeStamp - 528456680.36902398 + 569649881.95772898 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,7 +672,6 @@ 5 WindowOrderList - 8B9D74B81F7F9BE8007AB60F /Users/christopherjohnson/Desktop/MacAU/IronOxideClassic/IronOxideClassic.xcodeproj WindowString 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 @@ 185 RubberWindowFrame - 630 344 810 487 0 0 1440 878 + 489 322 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -341,23 +341,13 @@ PBXProjectModuleGUID 8BAC22EC1F1EA26E009C635C PBXProjectModuleLabel - Logical4.h + <No Editor> PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID 8BAC22ED1F1EA26E009C635C - PBXProjectModuleLabel - Logical4.h - _historyCapacity - 0 - bookmark - 8B9D74C31F7F9C65007AB60F - history - - 8B9D65761F7C8A4B007AB60F - SplitCount 1 @@ -372,7 +362,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 630 344 810 487 0 0 1440 878 + 489 322 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -396,8 +386,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 630 344 810 487 0 0 1440 878 Module XCDetailModule @@ -451,7 +439,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 489 322 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +469,11 @@ TableOfContents - 8B9D74C41F7F9C65007AB60F + 8B792DC121F42BF4006E9731 1CA23ED40692098700951B8B - 8B9D74C51F7F9C65007AB60F + 8B792DC221F42BF4006E9731 8BAC22EC1F1EA26E009C635C - 8B9D74C61F7F9C65007AB60F + 8B792DC321F42BF4006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528456805.22078699 + 569650164.73212397 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +643,10 @@ 5 WindowOrderList - 8B9D74C71F7F9C65007AB60F /Users/christopherjohnson/Desktop/MacAU/Logical4/Logical4.xcodeproj WindowString - 630 344 810 487 0 0 1440 878 + 489 322 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -352,11 +350,11 @@ _historyCapacity 0 bookmark - 8B904D5920A4584C008CBAD8 + 8B792DD721F42C90006E9731 history 8B9F0C141EB4035300D3B900 - 8B904D5820A4584C008CBAD8 + 8B792DD221F42C71006E9731 SplitCount @@ -370,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 51}} + {{0, 0}, {603, 32}} RubberWindowFrame 337 373 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 51pt + 32pt Proportion - 390pt + 409pt Tabs @@ -395,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} - RubberWindowFrame - 337 373 810 487 0 0 1440 878 + {{10, 27}, {603, 382}} Module XCDetailModule @@ -451,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 382}} + RubberWindowFrame + 337 373 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +477,11 @@ TableOfContents - 8B904D5A20A4584C008CBAD8 + 8B792DD821F42C90006E9731 1CA23ED40692098700951B8B - 8B904D5B20A4584C008CBAD8 + 8B792DD921F42C90006E9731 8BDB26991EAA805E001F42B2 - 8B904D5C20A4584C008CBAD8 + 8B792DDA21F42C90006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +634,7 @@ StatusbarIsVisible TimeStamp - 547641420.42251396 + 569650320.319924 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,7 +651,6 @@ 5 WindowOrderList - 8B904D5D20A4584C008CBAD8 /Users/christopherjohnson/Desktop/MacAU/Loud/Loud.xcodeproj WindowString 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 548 245 810 487 0 0 1440 878 + 445 250 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,12 +350,12 @@ _historyCapacity 0 bookmark - 8B9D74E11F7F9CD5007AB60F + 8B792DED21F42D64006E9731 history 8B22B12A1DB18F4E0075D7AA 8B22B12B1DB18F4E0075D7AA - 8B9D65961F7C8AEB007AB60F + 8B792DE821F42D38006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 325}} + {{0, 0}, {603, 146}} RubberWindowFrame - 548 245 810 487 0 0 1440 878 + 445 250 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 325pt + 146pt Proportion - 116pt + 295pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 89}} - RubberWindowFrame - 548 245 810 487 0 0 1440 878 + {{10, 27}, {603, 95}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 268}} + RubberWindowFrame + 445 250 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8B9D74E21F7F9CD5007AB60F + 8B792DEE21F42D64006E9731 1CA23ED40692098700951B8B - 8B9D74E31F7F9CD5007AB60F + 8B792DEF21F42D64006E9731 8B48C3411DAAD496009A0ADD - 8B9D74E41F7F9CD5007AB60F + 8B792DF021F42D64006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -637,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528456917.709867 + 569650532.61439598 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -654,11 +652,10 @@ 5 WindowOrderList - 8B9D74E51F7F9CD5007AB60F /Users/christopherjohnson/Desktop/MacAU/Lowpass/Lowpass.xcodeproj WindowString - 548 245 810 487 0 0 1440 878 + 445 250 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -325,7 +323,7 @@ 288 RubberWindowFrame - 599 164 841 654 0 0 1440 878 + 461 194 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,12 +351,12 @@ _historyCapacity 0 bookmark - 8B9D74F01F7F9D02007AB60F + 8B792E0421F42E5D006E9731 history 8B3483971E27D980007B1BF6 8B4296221E6DCF55007D8787 - 8B9D65A91F7C8B27007AB60F + 8B792DFF21F42E3C006E9731 SplitCount @@ -372,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 216}} + {{0, 0}, {531, 202}} RubberWindowFrame - 599 164 841 654 0 0 1440 878 + 461 194 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 216pt + 202pt Proportion - 392pt + 406pt Tabs @@ -397,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 365}} - RubberWindowFrame - 599 164 841 654 0 0 1440 878 + {{10, 27}, {531, 379}} Module XCDetailModule @@ -453,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {531, 379}} + RubberWindowFrame + 461 194 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -481,11 +479,11 @@ TableOfContents - 8B9D74F11F7F9D02007AB60F + 8B792E0521F42E5D006E9731 1CA23ED40692098700951B8B - 8B9D74F21F7F9D02007AB60F + 8B792E0621F42E5D006E9731 8BD7274A1D46E5A5000176F0 - 8B9D74F31F7F9D02007AB60F + 8B792E0721F42E5D006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +656,7 @@ StatusbarIsVisible TimeStamp - 528456962.27142799 + 569650781.22719395 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,11 +673,10 @@ 5 WindowOrderList - 8B9D74F41F7F9D02007AB60F /Users/christopherjohnson/Desktop/MacAU/Melt/Melt.xcodeproj WindowString - 599 164 841 654 0 0 1440 878 + 461 194 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 612 261 810 487 0 0 1440 878 + 444 290 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8B9D74FF1F7F9D7C007AB60F + 8B792E1B21F42F3C006E9731 history - 8B9D65B91F7C8B49007AB60F + 8B792E1621F42F27006E9731 SplitCount @@ -369,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {603, 51}} RubberWindowFrame - 612 261 810 487 0 0 1440 878 + 444 290 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 51pt Proportion - 372pt + 390pt Tabs @@ -394,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} - RubberWindowFrame - 612 261 810 487 0 0 1440 878 + {{10, 27}, {603, 363}} Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 363}} + RubberWindowFrame + 444 290 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8B9D75001F7F9D7C007AB60F + 8B792E1C21F42F3C006E9731 1CA23ED40692098700951B8B - 8B9D75011F7F9D7C007AB60F + 8B792E1D21F42F3C006E9731 8B753E6F1E40231800347157 - 8B9D75021F7F9D7C007AB60F + 8B792E1E21F42F3C006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 528457084.46547401 + 569651004.49607897 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +650,10 @@ 5 WindowOrderList - 8B9D75031F7F9D7C007AB60F /Users/christopherjohnson/Desktop/MacAU/MidSide/MidSide.xcodeproj WindowString - 612 261 810 487 0 0 1440 878 + 444 290 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -300,7 +298,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 613 385 810 487 0 0 1440 878 + 460 371 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8B6692BF1FB1BEBD007B3434 + 8B792E3221F43005006E9731 history - 8B66929D1FA3B6DF007B3434 + 8B792E2D21F42FE2006E9731 SplitCount @@ -369,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {603, 51}} RubberWindowFrame - 613 385 810 487 0 0 1440 878 + 460 371 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 51pt Proportion - 372pt + 390pt Tabs @@ -394,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} - RubberWindowFrame - 613 385 810 487 0 0 1440 878 + {{10, 27}, {603, 363}} Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 363}} + RubberWindowFrame + 460 371 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8B6692C01FB1BEBD007B3434 + 8B792E3321F43005006E9731 1CA23ED40692098700951B8B - 8B6692C11FB1BEBD007B3434 + 8B792E3421F43005006E9731 8B67C76A1FA2B03A008C64D6 - 8B6692C21FB1BEBD007B3434 + 8B792E3521F43005006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 531742397.05920899 + 569651205.03675902 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +650,10 @@ 5 WindowOrderList - 8B6692C31FB1BEBD007B3434 /Users/christopherjohnson/Desktop/MacAU/NCSeventeen/NCSeventeen.xcodeproj WindowString - 613 385 810 487 0 0 1440 878 + 460 371 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 614 382 810 487 0 0 1440 878 + 455 339 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -363,7 +361,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 614 382 810 487 0 0 1440 878 + 455 339 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -387,8 +385,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 614 382 810 487 0 0 1440 878 Module XCDetailModule @@ -442,7 +438,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 455 339 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -470,11 +468,11 @@ TableOfContents - 8BA11D6C20155F6900D31247 + 8B792E4721F430DD006E9731 1CA23ED40692098700951B8B - 8BA11D6D20155F6900D31247 + 8B792E4821F430DD006E9731 8B6FC0582010B87E003CA5F7 - 8BA11D6E20155F6900D31247 + 8B792E4921F430DD006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -627,7 +625,7 @@ StatusbarIsVisible TimeStamp - 538274889.58884597 + 569651421.60977602 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -647,7 +645,7 @@ /Users/christopherjohnson/Desktop/MacAU/Noise/Noise.xcodeproj WindowString - 614 382 810 487 0 0 1440 878 + 455 339 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 605 353 810 487 0 0 1440 878 + 474 350 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8B181A99204C8C0B00516BEE + 8B792E5D21F4318F006E9731 history - 8B18199D204B916F00516BEE + 8B792E5721F4316F006E9731 SplitCount @@ -369,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 102}} RubberWindowFrame - 605 353 810 487 0 0 1440 878 + 474 350 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 102pt Proportion - 324pt + 339pt Tabs @@ -394,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} - RubberWindowFrame - 605 353 810 487 0 0 1440 878 + {{10, 27}, {603, 312}} Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 312}} + RubberWindowFrame + 474 350 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8B181A9A204C8C0B00516BEE + 8B792E5E21F4318F006E9731 1CA23ED40692098700951B8B - 8B181A9B204C8C0B00516BEE + 8B792E5F21F4318F006E9731 8BCA70082027EAB800D92BAD - 8B181A9C204C8C0B00516BEE + 8B792E6021F4318F006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 541887499.900267 + 569651599.64848602 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,10 +650,11 @@ 5 WindowOrderList + 8B792E6121F4318F006E9731 /Users/christopherjohnson/Desktop/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj WindowString - 605 353 810 487 0 0 1440 878 + 474 350 810 487 0 0 1440 878 WindowToolsV3 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 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - NotJustAnotherCDVersion.h + NotJustAnotherCD.cpp PBXSplitModuleInNavigatorKey Split0 @@ -349,15 +349,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - NotJustAnotherCDVersion.h + NotJustAnotherCD.cpp _historyCapacity 0 bookmark - 8B9D752B1F7F9E40007AB60F + 8BAF09C721E6BA6000C38394 history 8B5B839E1E419C8A00ECA542 - 8B9D65E71F7C8B79007AB60F + 8BBB307421B7EF7400825986 + 8BBB307621B7EF7400825986 SplitCount @@ -371,18 +372,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 229}} + {{0, 0}, {531, 188}} RubberWindowFrame 405 167 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 229pt + 188pt Proportion - 379pt + 420pt Tabs @@ -396,7 +397,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 352}} + {{10, 27}, {531, 393}} RubberWindowFrame 405 167 841 654 0 0 1440 878 @@ -480,11 +481,11 @@ TableOfContents - 8B9D752C1F7F9E40007AB60F + 8BAF09C821E6BA6000C38394 1CA23ED40692098700951B8B - 8B9D752D1F7F9E40007AB60F + 8BAF09C921E6BA6000C38394 8BD7274A1D46E5A5000176F0 - 8B9D752E1F7F9E40007AB60F + 8BAF09CA21E6BA6000C38394 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +658,7 @@ StatusbarIsVisible TimeStamp - 528457280.83582401 + 568769120.05031896 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,7 +675,6 @@ 5 WindowOrderList - 8B9D752F1F7F9E40007AB60F /Users/christopherjohnson/Desktop/MacAU/NotJustAnotherCD/NotJustAnotherCD.xcodeproj WindowString 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 @@ 288 RubberWindowFrame - 572 175 841 654 0 0 1440 878 + 780 134 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,11 +353,11 @@ _historyCapacity 0 bookmark - 8B39A173213B703300112CCA + 8BAF09C221E6BA5C00C38394 history 8B8D6A12207ABF2E0029B7B0 - 8B39A172213B703300112CCA + 8BBB2F6D21B620F100825986 SplitCount @@ -371,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 158}} + {{0, 0}, {531, 109}} RubberWindowFrame - 572 175 841 654 0 0 1440 878 + 780 134 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 158pt + 109pt Proportion - 450pt + 499pt Tabs @@ -396,9 +396,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 423}} + {{10, 27}, {531, 472}} RubberWindowFrame - 572 175 841 654 0 0 1440 878 + 780 134 841 654 0 0 1440 878 Module XCDetailModule @@ -480,11 +480,11 @@ TableOfContents - 8B39A174213B703300112CCA + 8BAF09C321E6BA5C00C38394 1CA23ED40692098700951B8B - 8B39A175213B703300112CCA + 8BAF09C421E6BA5C00C38394 8BD7274A1D46E5A5000176F0 - 8B39A176213B703300112CCA + 8BAF09C521E6BA5C00C38394 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +657,7 @@ StatusbarIsVisible TimeStamp - 557543475.44966102 + 568769116.18578196 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,11 +674,11 @@ 5 WindowOrderList - 8B39A177213B703300112CCA + 8BAF09C621E6BA5C00C38394 /Users/christopherjohnson/Desktop/MacAU/NotJustAnotherDither/NotJustAnotherDither.xcodeproj WindowString - 572 175 841 654 0 0 1440 878 + 780 134 841 654 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -300,7 +298,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 630 365 810 487 0 0 1440 878 + 428 370 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,10 +350,10 @@ _historyCapacity 0 bookmark - 8B181A47204C83CC00516BEE + 8B792E7421F43391006E9731 history - 8B181972204B914C00516BEE + 8B792E6F21F43380006E9731 SplitCount @@ -369,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 102}} RubberWindowFrame - 630 365 810 487 0 0 1440 878 + 428 370 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 102pt Proportion - 324pt + 339pt Tabs @@ -394,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} - RubberWindowFrame - 630 365 810 487 0 0 1440 878 + {{10, 27}, {603, 312}} Module XCDetailModule @@ -450,7 +446,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 312}} + RubberWindowFrame + 428 370 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +476,11 @@ TableOfContents - 8B181A48204C83CC00516BEE + 8B792E7521F43391006E9731 1CA23ED40692098700951B8B - 8B181A49204C83CC00516BEE + 8B792E7621F43391006E9731 8BCA0F591D871CB100A4EFAF - 8B181A4A204C83CC00516BEE + 8B792E7721F43391006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +633,7 @@ StatusbarIsVisible TimeStamp - 541885388.89707994 + 569652113.25814903 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +650,10 @@ 5 WindowOrderList - 8B181A4B204C83CC00516BEE /Users/christopherjohnson/Desktop/MacAU/OneCornerClip/OneCornerClip.xcodeproj WindowString - 630 365 810 487 0 0 1440 878 + 428 370 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 841 - 841 + 775 + 775 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 656 383 775 495 0 0 1440 878 + 528 353 775 495 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -342,7 +340,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - PDBuss.cpp + PDBuss.h PBXSplitModuleInNavigatorKey Split0 @@ -350,16 +348,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - PDBuss.cpp + PDBuss.h _historyCapacity 0 bookmark - 8B4E5741201BE1D700B5DC2A + 8B792E8C21F43451006E9731 history 8B4E5518201BB8EE00B5DC2A - 8B4E573F201BE1D700B5DC2A - 8B4E5740201BE1D700B5DC2A + 8B792E8621F43436006E9731 + 8B792E8721F43436006E9731 SplitCount @@ -373,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {465, 52}} + {{0, 0}, {465, 33}} RubberWindowFrame - 656 383 775 495 0 0 1440 878 + 528 353 775 495 0 0 1440 878 Module PBXNavigatorGroup Proportion - 52pt + 33pt Proportion - 397pt + 416pt Tabs @@ -398,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {465, 370}} - RubberWindowFrame - 656 383 775 495 0 0 1440 878 + {{10, 27}, {465, 389}} Module XCDetailModule @@ -454,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {465, 389}} + RubberWindowFrame + 528 353 775 495 0 0 1440 878 Module PBXBuildResultsModule @@ -482,11 +480,11 @@ TableOfContents - 8B4E5742201BE1D700B5DC2A + 8B792E8D21F43451006E9731 1CA23ED40692098700951B8B - 8B4E5743201BE1D700B5DC2A + 8B792E8E21F43451006E9731 8BD7274A1D46E5A5000176F0 - 8B4E5744201BE1D700B5DC2A + 8B792E8F21F43451006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +657,7 @@ StatusbarIsVisible TimeStamp - 538698199.879107 + 569652305.95869505 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -679,7 +677,7 @@ /Users/christopherjohnson/Desktop/MacAU/PDBuss/PDBuss.xcodeproj WindowString - 656 383 775 495 0 0 1440 878 + 528 353 775 495 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 841 - 841 + 687 + 687 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -302,7 +300,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 748 122 687 476 0 0 1440 878 + 528 250 687 476 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -354,11 +352,11 @@ _historyCapacity 0 bookmark - 8B4E5747201BE1DA00B5DC2A + 8B792EA321F434E3006E9731 history 8B4E5745201BE1DA00B5DC2A - 8B4E5746201BE1DA00B5DC2A + 8B792E9E21F434CF006E9731 SplitCount @@ -372,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {377, 32}} + {{0, 0}, {377, 13}} RubberWindowFrame - 748 122 687 476 0 0 1440 878 + 528 250 687 476 0 0 1440 878 Module PBXNavigatorGroup Proportion - 32pt + 13pt Proportion - 398pt + 417pt Tabs @@ -397,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {377, 371}} - RubberWindowFrame - 748 122 687 476 0 0 1440 878 + {{10, 27}, {377, 390}} Module XCDetailModule @@ -453,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {377, 390}} + RubberWindowFrame + 528 250 687 476 0 0 1440 878 Module PBXBuildResultsModule @@ -481,11 +479,11 @@ TableOfContents - 8B4E5748201BE1DA00B5DC2A + 8B792EA421F434E3006E9731 1CA23ED40692098700951B8B - 8B4E5749201BE1DA00B5DC2A + 8B792EA521F434E3006E9731 8BD7274A1D46E5A5000176F0 - 8B4E574A201BE1DA00B5DC2A + 8B792EA621F434E3006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +656,7 @@ StatusbarIsVisible TimeStamp - 538698202.06812799 + 569652451.32998204 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -678,7 +676,7 @@ /Users/christopherjohnson/Desktop/MacAU/PDChannel/PDChannel.xcodeproj WindowString - 748 122 687 476 0 0 1440 878 + 528 250 687 476 0 0 1440 878 WindowToolsV3 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 @@ 288 RubberWindowFrame - 599 185 841 654 0 0 1440 878 + 584 182 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,12 +353,12 @@ _historyCapacity 0 bookmark - 8B9D75481F7F9EDB007AB60F + 8B79248121F14291006E9731 history 8BD8CADF1DF8EA3400CC3427 8B4FD0361DF97CA300999740 - 8B9D66051F7C8B97007AB60F + 8B79248021F14291006E9731 SplitCount @@ -372,18 +372,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 188}} + {{0, 0}, {531, 158}} RubberWindowFrame - 599 185 841 654 0 0 1440 878 + 584 182 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 188pt + 158pt Proportion - 420pt + 450pt Tabs @@ -397,9 +397,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 393}} + {{10, 27}, {531, 423}} RubberWindowFrame - 599 185 841 654 0 0 1440 878 + 584 182 841 654 0 0 1440 878 Module XCDetailModule @@ -481,11 +481,11 @@ TableOfContents - 8B9D75491F7F9EDB007AB60F + 8B79248221F14291006E9731 1CA23ED40692098700951B8B - 8B9D754A1F7F9EDB007AB60F + 8B79248321F14291006E9731 8BD7274A1D46E5A5000176F0 - 8B9D754B1F7F9EDB007AB60F + 8B79248421F14291006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +658,7 @@ StatusbarIsVisible TimeStamp - 528457435.53434801 + 569459345.52308798 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,11 +675,10 @@ 5 WindowOrderList - 8B9D754C1F7F9EDB007AB60F /Users/christopherjohnson/Desktop/MacAU/PaulDither/PaulDither.xcodeproj WindowString - 599 185 841 654 0 0 1440 878 + 584 182 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -300,7 +300,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 5 2 1 0 @@ -324,7 +324,7 @@ 185 RubberWindowFrame - 614 298 810 487 0 0 1440 878 + 500 313 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -363,7 +363,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 614 298 810 487 0 0 1440 878 + 500 313 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -387,8 +387,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 614 298 810 487 0 0 1440 878 Module XCDetailModule @@ -442,7 +440,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 500 313 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -470,11 +470,11 @@ TableOfContents - 8B9D75591F7F9F0E007AB60F + 8B792EBE21F48D58006E9731 1CA23ED40692098700951B8B - 8B9D755A1F7F9F0E007AB60F + 8B792EBF21F48D58006E9731 8B45D5A31DB6A0F4001A01DF - 8B9D755B1F7F9F0E007AB60F + 8B792EC021F48D58006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -627,7 +627,7 @@ StatusbarIsVisible TimeStamp - 528457486.34265399 + 569675096.38173199 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -644,11 +644,12 @@ 5 WindowOrderList - 8B9D755C1F7F9F0E007AB60F + 8B792EC121F48D58006E9731 + 8B792EC221F48D58006E9731 /Users/christopherjohnson/Desktop/MacAU/PhaseNudge/PhaseNudge.xcodeproj WindowString - 614 298 810 487 0 0 1440 878 + 500 313 810 487 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 630 350 810 487 0 0 1440 878 + 475 347 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -363,7 +361,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 630 350 810 487 0 0 1440 878 + 475 347 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -387,8 +385,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 630 350 810 487 0 0 1440 878 Module XCDetailModule @@ -443,6 +439,8 @@ Frame {{10, 27}, {603, 414}} + RubberWindowFrame + 475 347 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -470,11 +468,11 @@ TableOfContents - 8B9D75671F7F9F29007AB60F + 8B792ED421F48E58006E9731 1CA23ED40692098700951B8B - 8B9D75681F7F9F29007AB60F + 8B792ED521F48E58006E9731 8BC521841DB3E58C00E72CD6 - 8B9D75691F7F9F29007AB60F + 8B792ED621F48E58006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -627,7 +625,7 @@ StatusbarIsVisible TimeStamp - 528457513.38457698 + 569675352.26750898 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -644,11 +642,10 @@ 5 WindowOrderList - 8B9D756A1F7F9F29007AB60F /Users/christopherjohnson/Desktop/MacAU/Point/Poynt.xcodeproj WindowString - 630 350 810 487 0 0 1440 878 + 475 347 810 487 0 0 1440 878 WindowToolsV3 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 = ""; + 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -322,7 +322,7 @@ 185 RubberWindowFrame - 584 391 810 487 0 0 1440 878 + 490 387 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -333,8 +333,6 @@ Dock - BecomeActive - ContentConfiguration PBXProjectModuleGUID @@ -352,12 +350,12 @@ _historyCapacity 0 bookmark - 8B6DBAB5213B5E6A00E44739 + 8B792EE921F48F73006E9731 history 8B6DBAB1213B5E6A00E44739 8B6DBAB2213B5E6A00E44739 - 8B6DBAB3213B5E6A00E44739 + 8B792EE421F48F26006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 102}} + {{0, 0}, {603, 86}} RubberWindowFrame - 584 391 810 487 0 0 1440 878 + 490 387 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 102pt + 86pt Proportion - 339pt + 355pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 312}} - RubberWindowFrame - 584 391 810 487 0 0 1440 878 + {{10, 27}, {603, 328}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} + {{10, 27}, {603, 328}} + RubberWindowFrame + 490 387 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8B6DBAB7213B5E6A00E44739 + 8B792EEB21F48F73006E9731 1CA23ED40692098700951B8B - 8B6DBAB8213B5E6A00E44739 + 8B792EEC21F48F73006E9731 8BFDB0BC213A19540079F90D - 8B6DBAB9213B5E6A00E44739 + 8B792EED21F48F73006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -637,7 +635,7 @@ StatusbarIsVisible TimeStamp - 557538922.04973304 + 569675635.69867206 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -657,7 +655,7 @@ /Users/christopherjohnson/Desktop/MacAU/Pop/Pop.xcodeproj WindowString - 584 391 810 487 0 0 1440 878 + 490 387 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -325,7 +323,7 @@ 288 RubberWindowFrame - 599 187 841 654 0 0 1440 878 + 422 210 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,11 +351,11 @@ _historyCapacity 0 bookmark - 8B9D75751F7F9F5D007AB60F + 8B792F0021F49091006E9731 history 8BB300131EE206710016C2D8 - 8B9D66491F7C8C32007AB60F + 8B792EFB21F4905E006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 202}} + {{0, 0}, {531, 188}} RubberWindowFrame - 599 187 841 654 0 0 1440 878 + 422 210 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 202pt + 188pt Proportion - 406pt + 420pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 379}} - RubberWindowFrame - 599 187 841 654 0 0 1440 878 + {{10, 27}, {531, 393}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {531, 393}} + RubberWindowFrame + 422 210 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8B9D75761F7F9F5D007AB60F + 8B792F0121F49091006E9731 1CA23ED40692098700951B8B - 8B9D75771F7F9F5D007AB60F + 8B792F0221F49091006E9731 8BD7274A1D46E5A5000176F0 - 8B9D75781F7F9F5D007AB60F + 8B792F0321F49091006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +655,7 @@ StatusbarIsVisible TimeStamp - 528457565.97925901 + 569675921.48933697 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,11 +672,10 @@ 5 WindowOrderList - 8B9D75791F7F9F5D007AB60F /Users/christopherjohnson/Desktop/MacAU/PowerSag/PowerSag.xcodeproj WindowString - 599 187 841 654 0 0 1440 878 + 422 210 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 841 - 841 + 1052 + 1052 Perspectives @@ -299,7 +299,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 3 + 4 2 1 0 @@ -323,7 +323,7 @@ 288 RubberWindowFrame - 526 89 1052 789 0 0 1440 878 + 259 89 1052 789 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,13 +353,13 @@ _historyCapacity 0 bookmark - 8BB8B6702102844E00751000 + 8B792F5621F495A9006E9731 history 8BEF33C81D81F6D7008B0B7F 8BEF33C91D81F6D7008B0B7F - 8B050BBA2064897B00700365 - 8B8D6983207ABA4C0029B7B0 + 8B792F5421F495A9006E9731 + 8B792F5521F495A9006E9731 SplitCount @@ -373,18 +373,18 @@ GeometryConfiguration Frame - {{0, 0}, {742, 617}} + {{0, 0}, {742, 515}} RubberWindowFrame - 526 89 1052 789 0 0 1440 878 + 259 89 1052 789 0 0 1440 878 Module PBXNavigatorGroup Proportion - 617pt + 515pt Proportion - 126pt + 228pt Tabs @@ -398,9 +398,7 @@ GeometryConfiguration Frame - {{10, 27}, {742, 99}} - RubberWindowFrame - 526 89 1052 789 0 0 1440 878 + {{10, 27}, {742, 201}} Module XCDetailModule @@ -454,7 +452,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 327}} + {{10, 27}, {742, 201}} + RubberWindowFrame + 259 89 1052 789 0 0 1440 878 Module PBXBuildResultsModule @@ -482,11 +482,11 @@ TableOfContents - 8BB8B6712102844E00751000 + 8B792F5721F495A9006E9731 1CA23ED40692098700951B8B - 8BB8B6722102844E00751000 + 8B792F5821F495A9006E9731 8BD7274A1D46E5A5000176F0 - 8BB8B6732102844E00751000 + 8B792F5921F495A9006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +659,7 @@ StatusbarIsVisible TimeStamp - 553813070.00637698 + 569677225.40901196 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -679,7 +679,7 @@ /Users/christopherjohnson/Desktop/MacAU/Pressure4/Pressure4.xcodeproj WindowString - 526 89 1052 789 0 0 1440 878 + 259 89 1052 789 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 191 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -308,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {191, 595}} PBXTopSmartGroupGIDs @@ -318,19 +316,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {208, 613}} GroupTreeTableConfiguration MainColumn - 288 + 191 RubberWindowFrame - 651 172 841 654 0 0 1440 878 + 471 181 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 208pt Dock @@ -353,12 +351,12 @@ _historyCapacity 0 bookmark - 8BB8B69021028B4200751000 + 8B792F6721F495EA006E9731 history 8BEF332D1D81E168008B0B7F - 8B2E03F31D837F81001B9E01 - 8B9D75931F7F9FAE007AB60F + 8B792F6521F495EA006E9731 + 8B792F6621F495EA006E9731 SplitCount @@ -372,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 173}} + {{0, 0}, {628, 336}} RubberWindowFrame - 651 172 841 654 0 0 1440 878 + 471 181 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 173pt + 336pt Proportion - 435pt + 272pt Tabs @@ -397,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 408}} - RubberWindowFrame - 651 172 841 654 0 0 1440 878 + {{10, 27}, {628, 245}} Module XCDetailModule @@ -453,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {628, 245}} + RubberWindowFrame + 471 181 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -462,7 +460,7 @@ Proportion - 531pt + 628pt Name @@ -481,11 +479,11 @@ TableOfContents - 8BB8B69121028B4200751000 + 8B792F6821F495EA006E9731 1CA23ED40692098700951B8B - 8BB8B69221028B4200751000 + 8B792F6921F495EA006E9731 8BD7274A1D46E5A5000176F0 - 8BB8B69321028B4200751000 + 8B792F6A21F495EA006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +656,7 @@ StatusbarIsVisible TimeStamp - 553814850.34887004 + 569677290.01837504 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,11 +673,10 @@ 5 WindowOrderList - 8BB8B69421028B4200751000 /Users/christopherjohnson/Desktop/MacAU/Pressure4Mono/Pressure4Mono.xcodeproj WindowString - 651 172 841 654 0 0 1440 878 + 471 181 841 654 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.cpp b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.cpp old mode 100644 new mode 100755 index 48f223b..d0b8cf9 --- 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 old mode 100644 new mode 100755 index a3df04f..590e797 --- 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 old mode 100644 new mode 100755 diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.pbxuser old mode 100644 new mode 100755 index 3851c37..5e3513c --- 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 old mode 100644 new mode 100755 index f555b58..699b00b --- a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 @@ -222,11 +222,52 @@ OpenEditors - + + + Content + + PBXProjectModuleGUID + 8B79266521F32F25006E9731 + PBXProjectModuleLabel + PurestConsoleBuss.cpp + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 8B79266621F32F25006E9731 + PBXProjectModuleLabel + PurestConsoleBuss.cpp + _historyCapacity + 0 + bookmark + 8B79266721F32F25006E9731 + history + + 8B79265921F32EAB006E9731 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {895, 742}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 301 82 895 783 0 0 1440 878 + + + PerspectiveWidths - 810 - 810 + 841 + 841 Perspectives @@ -256,8 +297,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -301,7 +340,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -325,7 +364,7 @@ 288 RubberWindowFrame - 599 222 841 654 0 0 1440 878 + 492 170 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -341,7 +380,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - Info.plist + PurestConsoleBuss.cpp PBXSplitModuleInNavigatorKey Split0 @@ -349,14 +388,15 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - Info.plist + PurestConsoleBuss.cpp _historyCapacity 0 bookmark - 8B4E550F201BB8BF00B5DC2A + 8B79266421F32F25006E9731 history - 8BBE45541FE5F3CA0022E6F7 + 8B34923F2054559600C0EF7D + 8B79265F21F32F13006E9731 SplitCount @@ -370,18 +410,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 229}} + {{0, 0}, {531, 188}} RubberWindowFrame - 599 222 841 654 0 0 1440 878 + 492 170 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 229pt + 188pt Proportion - 379pt + 420pt Tabs @@ -395,9 +435,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 352}} - RubberWindowFrame - 599 222 841 654 0 0 1440 878 + {{10, 27}, {531, 393}} Module XCDetailModule @@ -451,7 +489,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {531, 393}} + RubberWindowFrame + 492 170 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +519,11 @@ TableOfContents - 8B4E5510201BB8BF00B5DC2A + 8B79265421F32E69006E9731 1CA23ED40692098700951B8B - 8B4E5511201BB8BF00B5DC2A + 8B79265521F32E69006E9731 8BD7274A1D46E5A5000176F0 - 8B4E5512201BB8BF00B5DC2A + 8B79265621F32E69006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -656,7 +696,7 @@ StatusbarIsVisible TimeStamp - 538687679.06755602 + 569585445.78409505 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -673,11 +713,11 @@ 5 WindowOrderList - 8B4E5513201BB8BF00B5DC2A - /Users/christopherjohnson/Desktop/github/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj + 8B79266521F32F25006E9731 + /Users/christopherjohnson/Desktop/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj WindowString - 599 222 841 654 0 0 1440 878 + 492 170 841 654 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.pbxproj b/plugins/MacAU/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.pbxproj old mode 100644 new mode 100755 diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.cpp b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.cpp old mode 100644 new mode 100755 index 7f47b65..b418640 --- 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 old mode 100644 new mode 100755 index 5cf13da..0beecd1 --- 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 old mode 100644 new mode 100755 diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.pbxuser old mode 100644 new mode 100755 index dcf6a55..44838c0 --- 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 old mode 100644 new mode 100755 index f3c675f..18c4f2b --- a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -325,7 +323,7 @@ 288 RubberWindowFrame - 584 203 841 654 0 0 1440 878 + 388 183 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -341,7 +339,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - Info.plist + PurestConsoleChannel.cpp PBXSplitModuleInNavigatorKey Split0 @@ -349,14 +347,15 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - Info.plist + PurestConsoleChannel.cpp _historyCapacity 0 bookmark - 8B4E54C3201BB57400B5DC2A + 8B79267A21F3308F006E9731 history - 8B4E54B5201BB4AE00B5DC2A + 8B34922E2054553C00C0EF7D + 8B79267521F33079006E9731 SplitCount @@ -370,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 229}} + {{0, 0}, {531, 126}} RubberWindowFrame - 584 203 841 654 0 0 1440 878 + 388 183 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 229pt + 126pt Proportion - 379pt + 482pt Tabs @@ -395,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 352}} - RubberWindowFrame - 584 203 841 654 0 0 1440 878 + {{10, 27}, {531, 455}} Module XCDetailModule @@ -451,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {531, 455}} + RubberWindowFrame + 388 183 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +478,11 @@ TableOfContents - 8B4E54C4201BB57400B5DC2A + 8B79267B21F3308F006E9731 1CA23ED40692098700951B8B - 8B4E54C5201BB57400B5DC2A + 8B79267C21F3308F006E9731 8BD7274A1D46E5A5000176F0 - 8B4E54C6201BB57400B5DC2A + 8B79267D21F3308F006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -656,7 +655,7 @@ StatusbarIsVisible TimeStamp - 538686836.144647 + 569585807.50112402 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -673,11 +672,10 @@ 5 WindowOrderList - 8B4E54C7201BB57400B5DC2A - /Users/christopherjohnson/Desktop/github/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj + /Users/christopherjohnson/Desktop/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj WindowString - 584 203 841 654 0 0 1440 878 + 388 183 841 654 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.pbxproj b/plugins/MacAU/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.pbxproj old mode 100644 new mode 100755 diff --git a/plugins/MacAU/PurestDrive/PurestDrive.cpp b/plugins/MacAU/PurestDrive/PurestDrive.cpp old mode 100644 new mode 100755 index fe73631..7f6d0a0 --- 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 index dea99d5..c9284f3 --- a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 @@ -222,7 +222,48 @@ OpenEditors - + + + Content + + PBXProjectModuleGUID + 8B79269321F33157006E9731 + PBXProjectModuleLabel + PurestDrive.cpp + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 8B79269421F33157006E9731 + PBXProjectModuleLabel + PurestDrive.cpp + _historyCapacity + 0 + bookmark + 8B79269521F33157006E9731 + history + + 8B79268621F330ED006E9731 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {981, 719}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 255 103 981 760 0 0 1440 878 + + + PerspectiveWidths 810 @@ -323,7 +364,7 @@ 185 RubberWindowFrame - 630 344 810 487 0 0 1440 878 + 466 344 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,11 +392,11 @@ _historyCapacity 0 bookmark - 8B4E54E4201BB69000B5DC2A + 8B79268F21F33157006E9731 history 8B4E546B201BAC8800B5DC2A - 8B4E54A2201BB36200B5DC2A + 8B4E54E4201BB69000B5DC2A SplitCount @@ -369,23 +410,21 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame - 630 344 810 487 0 0 1440 878 + 466 344 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs - BecomeActive - ContentConfiguration PBXProjectModuleGUID @@ -396,9 +435,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} - RubberWindowFrame - 630 344 810 487 0 0 1440 878 + {{10, 27}, {603, 414}} Module XCDetailModule @@ -452,7 +489,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 466 344 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +519,11 @@ TableOfContents - 8B4E54E5201BB69000B5DC2A + 8B79269021F33157006E9731 1CA23ED40692098700951B8B - 8B4E54E6201BB69000B5DC2A + 8B79269121F33157006E9731 8B08D48D1C9DE5FB007CAA65 - 8B4E54E7201BB69000B5DC2A + 8B79269221F33157006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -637,7 +676,7 @@ StatusbarIsVisible TimeStamp - 538687120.62552202 + 569586007.10360599 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -654,11 +693,11 @@ 5 WindowOrderList - 8B4E54E8201BB69000B5DC2A + 8B79269321F33157006E9731 /Users/christopherjohnson/Desktop/MacAU/PurestDrive/PurestDrive.xcodeproj WindowString - 630 344 810 487 0 0 1440 878 + 466 344 810 487 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/project.pbxproj b/plugins/MacAU/PurestDrive/PurestDrive.xcodeproj/project.pbxproj old mode 100644 new mode 100755 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 @@ PerspectiveWidths - 810 - 810 + 841 + 841 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -325,7 +323,7 @@ 288 RubberWindowFrame - 591 207 841 654 0 0 1440 878 + 484 210 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,11 +351,11 @@ _historyCapacity 0 bookmark - 8B9D75A21F7F9FC4007AB60F + 8B7926A821F3322B006E9731 history 8B18E4181EE3577D005C6C5A - 8B9D66831F7C8CE1007AB60F + 8B7926A321F33202006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 158}} + {{0, 0}, {531, 142}} RubberWindowFrame - 591 207 841 654 0 0 1440 878 + 484 210 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 158pt + 142pt Proportion - 450pt + 466pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 423}} - RubberWindowFrame - 591 207 841 654 0 0 1440 878 + {{10, 27}, {531, 439}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {531, 439}} + RubberWindowFrame + 484 210 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8B9D75A31F7F9FC4007AB60F + 8B7926A921F3322B006E9731 1CA23ED40692098700951B8B - 8B9D75A41F7F9FC4007AB60F + 8B7926AA21F3322B006E9731 8BD7274A1D46E5A5000176F0 - 8B9D75A51F7F9FC4007AB60F + 8B7926AB21F3322B006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +655,7 @@ StatusbarIsVisible TimeStamp - 528457668.15951699 + 569586219.97907698 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,11 +672,11 @@ 5 WindowOrderList - 8B9D75A61F7F9FC4007AB60F + 8B7926AC21F3322B006E9731 /Users/christopherjohnson/Desktop/MacAU/PurestEcho/PurestEcho.xcodeproj WindowString - 591 207 841 654 0 0 1440 878 + 484 210 841 654 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacAU/PurestGain/PurestGain.cpp b/plugins/MacAU/PurestGain/PurestGain.cpp old mode 100644 new mode 100755 index fe5477c..6bc46d5 --- 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 old mode 100644 new mode 100755 diff --git a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.pbxuser old mode 100644 new mode 100755 index 2071f3a..3035ecc --- 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 old mode 100644 new mode 100755 index 11f6e1d..7e92ba1 --- a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ PerspectiveWidths - -1 - -1 + 810 + 810 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 630 375 810 487 0 0 1440 878 + 510 325 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -340,7 +338,7 @@ PBXProjectModuleGUID 8BC521591DB3E3F700E72CD6 PBXProjectModuleLabel - + PurestGain.cpp PBXSplitModuleInNavigatorKey Split0 @@ -348,7 +346,15 @@ PBXProjectModuleGUID 8BC5215A1DB3E3F700E72CD6 PBXProjectModuleLabel - + PurestGain.cpp + _historyCapacity + 0 + bookmark + 8B7926C421F3331E006E9731 + history + + 8B7926BA21F332FC006E9731 + SplitCount 1 @@ -361,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 0}} + {{0, 0}, {603, 86}} RubberWindowFrame - 630 375 810 487 0 0 1440 878 + 510 325 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 0pt + 86pt Proportion - 441pt + 355pt Tabs @@ -386,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} - RubberWindowFrame - 630 375 810 487 0 0 1440 878 + {{10, 27}, {603, 328}} Module XCDetailModule @@ -442,7 +446,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 328}} + RubberWindowFrame + 510 325 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -470,11 +476,11 @@ TableOfContents - 8BB5DD741FBCE50A008B4570 + 8B7926C521F3331E006E9731 1CA23ED40692098700951B8B - 8BB5DD751FBCE50A008B4570 + 8B7926C621F3331E006E9731 8BC521591DB3E3F700E72CD6 - 8BB5DD761FBCE50A008B4570 + 8B7926C721F3331E006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -627,7 +633,7 @@ StatusbarIsVisible TimeStamp - 532473098.399234 + 569586462.880615 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -644,11 +650,11 @@ 5 WindowOrderList - 8BB5DD771FBCE50A008B4570 + 8B7926C821F3331E006E9731 /Users/christopherjohnson/Desktop/MacAU/PurestGain/PurestGain.xcodeproj WindowString - 630 375 810 487 0 0 1440 878 + 510 325 810 487 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacAU/PurestGain/PurestGain.xcodeproj/project.pbxproj b/plugins/MacAU/PurestGain/PurestGain.xcodeproj/project.pbxproj old mode 100644 new mode 100755 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -300,7 +298,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 3 2 1 0 @@ -324,7 +322,7 @@ 185 RubberWindowFrame - 616 391 810 487 0 0 1440 878 + 361 361 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -340,7 +338,7 @@ PBXProjectModuleGUID 8BB5DD7C1FBCE73D008B4570 PBXProjectModuleLabel - PurestWarm.h + PurestWarm.cpp PBXSplitModuleInNavigatorKey Split0 @@ -348,16 +346,16 @@ PBXProjectModuleGUID 8BB5DD7D1FBCE73D008B4570 PBXProjectModuleLabel - PurestWarm.h + PurestWarm.cpp _historyCapacity 0 bookmark - 8BB5DDC21FBCF5C0008B4570 + 8B7926F821F336C4006E9731 history 8BB5DDAD1FBCF48A008B4570 - 8BB5DDAE1FBCF48A008B4570 - 8BB5DDB01FBCF48A008B4570 + 8B7926F621F336C4006E9731 + 8B7926F721F336C4006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 102}} RubberWindowFrame - 616 391 810 487 0 0 1440 878 + 361 361 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 102pt Proportion - 324pt + 339pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} - RubberWindowFrame - 616 391 810 487 0 0 1440 878 + {{10, 27}, {603, 312}} Module XCDetailModule @@ -452,7 +448,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {603, 312}} + RubberWindowFrame + 361 361 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8BB5DDBD1FBCF4AB008B4570 + 8B7926F921F336C4006E9731 1CA23ED40692098700951B8B - 8BB5DDBE1FBCF4AB008B4570 + 8B7926FA21F336C4006E9731 8BB5DD7C1FBCE73D008B4570 - 8BB5DDBF1FBCF4AB008B4570 + 8B7926FB21F336C4006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -521,7 +519,7 @@ Identifier perspective.debug IsVertical - 1 + Layout @@ -535,12 +533,12 @@ GeometryConfiguration Frame - {{0, 0}, {810, 0}} + {{0, 0}, {424, 270}} Module PBXDebugCLIModule Proportion - 0% + 270pt ContentConfiguration @@ -589,8 +587,6 @@ GeometryConfiguration - DebugConsoleDrawerSize - {100, 120} DebugConsoleVisible None DebugConsoleWindowFrame @@ -599,31 +595,53 @@ {{200, 200}, {500, 300}} Frame {{0, 7}, {810, 438}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 120 + Value + 85 + Summary + 185 + + Frame + {{395, 0}, {415, 213}} + Module PBXDebugSessionModule Proportion - 443pt + 438pt Name Debug ServiceClasses - XCModuleDock XCModuleDock PBXDebugCLIModule PBXDebugSessionModule - XCConsole + PBXDebugProcessAndThreadModule + PBXDebugProcessViewModule + PBXDebugThreadViewModule + PBXDebugStackFrameViewModule + PBXNavigatorGroup TableOfContents - 1CC8E6A5069209BD00BB180A - 1CC8E6A6069209BD00BB180A + 8B7926FC21F336C4006E9731 1CCC7628064C1048000F2A68 1CCC7629064C1048000F2A68 - 1CC8E6A7069209BD00BB180A + 8B7926FD21F336C4006E9731 + 8B7926FE21F336C4006E9731 + 8B7926FF21F336C4006E9731 + 8B79270021F336C4006E9731 + 8B79270121F336C4006E9731 + ToolbarConfigUserDefaultsMinorVersion + 2 ToolbarConfiguration xcode.toolbar.config.debugV3 @@ -637,7 +655,7 @@ StatusbarIsVisible TimeStamp - 532477376.88819098 + 569587396.45455897 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -654,11 +672,11 @@ 5 WindowOrderList - 8BB5DDC31FBCF5C0008B4570 + 8B79270221F336C4006E9731 /Users/christopherjohnson/Desktop/MacAU/PurestWarm/PurestWarm.xcodeproj WindowString - 616 391 810 487 0 0 1440 878 + 361 361 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 188 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -308,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {188, 595}} PBXTopSmartGroupGIDs @@ -318,30 +316,32 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {205, 613}} GroupTreeTableConfiguration MainColumn - 288 + 188 RubberWindowFrame - 585 189 841 654 0 0 1440 878 + 447 195 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 205pt Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - Pyewacket.h + Pyewacket.cpp PBXSplitModuleInNavigatorKey Split0 @@ -349,15 +349,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - Pyewacket.h + Pyewacket.cpp _historyCapacity 0 bookmark - 8B9D75BE1F7FA023007AB60F + 8B792F7D21F498CC006E9731 history 8B3839B91DB9420B00AB1616 - 8B9D724D1F7EFF2C007AB60F + 8B792F7621F4989B006E9731 + 8B792F7821F4989B006E9731 SplitCount @@ -371,18 +372,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 202}} + {{0, 0}, {631, 226}} RubberWindowFrame - 585 189 841 654 0 0 1440 878 + 447 195 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 202pt + 226pt Proportion - 406pt + 382pt Tabs @@ -396,9 +397,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 379}} - RubberWindowFrame - 585 189 841 654 0 0 1440 878 + {{10, 27}, {531, 198}} Module XCDetailModule @@ -452,7 +451,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {631, 355}} + RubberWindowFrame + 447 195 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -461,7 +462,7 @@ Proportion - 531pt + 631pt Name @@ -480,11 +481,11 @@ TableOfContents - 8B9D75BF1F7FA023007AB60F + 8B792F7E21F498CC006E9731 1CA23ED40692098700951B8B - 8B9D75C01F7FA023007AB60F + 8B792F7F21F498CC006E9731 8BD7274A1D46E5A5000176F0 - 8B9D75C11F7FA023007AB60F + 8B792F8021F498CC006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +658,7 @@ StatusbarIsVisible TimeStamp - 528457763.81351399 + 569678028.908059 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,11 +675,10 @@ 5 WindowOrderList - 8B9D75C21F7FA023007AB60F /Users/christopherjohnson/Desktop/MacAU/Pyewacket/Pyewacket.xcodeproj WindowString - 585 189 841 654 0 0 1440 878 + 447 195 841 654 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 197 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -308,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {197, 595}} PBXTopSmartGroupGIDs @@ -318,19 +316,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {214, 613}} GroupTreeTableConfiguration MainColumn - 288 + 197 RubberWindowFrame - 579 196 841 654 0 0 1440 878 + 446 198 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 214pt Dock @@ -353,12 +351,12 @@ _historyCapacity 0 bookmark - 8B9D75CD1F7FA05E007AB60F + 8B792F9321F4993E006E9731 history 8B3839AE1DB941F200AB1616 - 8B383A0D1DB9520500AB1616 - 8B9D66C51F7C8D8D007AB60F + 8B792F8C21F4992B006E9731 + 8B792F8E21F4992B006E9731 SplitCount @@ -372,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 229}} + {{0, 0}, {622, 417}} RubberWindowFrame - 579 196 841 654 0 0 1440 878 + 446 198 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 229pt + 417pt Proportion - 379pt + 191pt Tabs @@ -397,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 352}} - RubberWindowFrame - 579 196 841 654 0 0 1440 878 + {{10, 27}, {622, 164}} Module XCDetailModule @@ -453,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {622, 164}} + RubberWindowFrame + 446 198 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -462,7 +460,7 @@ Proportion - 531pt + 622pt Name @@ -481,11 +479,11 @@ TableOfContents - 8B9D75CE1F7FA05E007AB60F + 8B792F9421F4993E006E9731 1CA23ED40692098700951B8B - 8B9D75CF1F7FA05E007AB60F + 8B792F9521F4993E006E9731 8BD7274A1D46E5A5000176F0 - 8B9D75D01F7FA05E007AB60F + 8B792F9621F4993E006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +656,7 @@ StatusbarIsVisible TimeStamp - 528457822.27237201 + 569678142.79066706 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,11 +673,10 @@ 5 WindowOrderList - 8B9D75D11F7FA05E007AB60F /Users/christopherjohnson/Desktop/MacAU/PyewacketMono/PyewacketMono.xcodeproj WindowString - 579 196 841 654 0 0 1440 878 + 446 198 841 654 0 0 1440 878 WindowToolsV3 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 @@ _historyCapacity 0 bookmark - 8BBFF86720AD84A3005650EF + 8B792FAA21F49A42006E9731 history 8B904BD0209D3B52008CBAD8 8B7E3DB220A6725600482CB5 - 8BBFF82820AD804F005650EF + 8B792FA321F49A2F006E9731 + 8B792FA521F49A2F006E9731 SplitCount @@ -371,18 +372,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 74}} + {{0, 0}, {531, 370}} RubberWindowFrame 599 193 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 74pt + 370pt Proportion - 534pt + 238pt Tabs @@ -396,7 +397,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 507}} + {{10, 27}, {531, 211}} Module XCDetailModule @@ -450,7 +451,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 507}} + {{10, 27}, {531, 211}} RubberWindowFrame 599 193 841 654 0 0 1440 878 @@ -480,11 +481,11 @@ TableOfContents - 8BBFF86820AD84A3005650EF + 8B792FAB21F49A42006E9731 1CA23ED40692098700951B8B - 8BBFF86920AD84A3005650EF + 8B792FAC21F49A42006E9731 8BD7274A1D46E5A5000176F0 - 8BBFF86A20AD84A3005650EF + 8B792FAD21F49A42006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +658,7 @@ StatusbarIsVisible TimeStamp - 548242595.39476001 + 569678402.692945 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,7 +675,6 @@ 5 WindowOrderList - 8BBFF86B20AD84A3005650EF /Users/christopherjohnson/Desktop/MacAU/Righteous4/Righteous4.xcodeproj WindowString 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 163 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -308,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {163, 595}} PBXTopSmartGroupGIDs @@ -318,19 +316,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {180, 613}} GroupTreeTableConfiguration MainColumn - 288 + 163 RubberWindowFrame - 599 124 841 654 0 0 1440 878 + 430 195 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 180pt Dock @@ -341,7 +339,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - SideDull.h + SideDull.cpp PBXSplitModuleInNavigatorKey Split0 @@ -349,17 +347,17 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - SideDull.h + SideDull.cpp _historyCapacity 0 bookmark - 8B9D75DC1F7FA07D007AB60F + 8B792FC021F49AEA006E9731 history 8BD4F5851E6E0EED00288155 8BD4F5861E6E0EED00288155 - 8BD4F5871E6E0EED00288155 - 8B9D66D91F7C8E9B007AB60F + 8B792FB921F49AD2006E9731 + 8B792FBB21F49AD2006E9731 SplitCount @@ -373,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 229}} + {{0, 0}, {656, 436}} RubberWindowFrame - 599 124 841 654 0 0 1440 878 + 430 195 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 229pt + 436pt Proportion - 379pt + 172pt Tabs @@ -398,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 352}} - RubberWindowFrame - 599 124 841 654 0 0 1440 878 + {{10, 27}, {656, 365}} Module XCDetailModule @@ -454,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {656, 145}} + RubberWindowFrame + 430 195 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -463,7 +461,7 @@ Proportion - 531pt + 656pt Name @@ -482,11 +480,11 @@ TableOfContents - 8B9D75DD1F7FA07D007AB60F + 8B792FC121F49AEA006E9731 1CA23ED40692098700951B8B - 8B9D75DE1F7FA07D007AB60F + 8B792FC221F49AEA006E9731 8BD7274A1D46E5A5000176F0 - 8B9D75DF1F7FA07D007AB60F + 8B792FC321F49AEA006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +657,7 @@ StatusbarIsVisible TimeStamp - 528457853.78940398 + 569678570.12103295 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -676,11 +674,10 @@ 5 WindowOrderList - 8B9D75E01F7FA07D007AB60F /Users/christopherjohnson/Desktop/MacAU/SideDull/SideDull.xcodeproj WindowString - 599 124 841 654 0 0 1440 878 + 430 195 841 654 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 183 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -308,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {183, 595}} PBXTopSmartGroupGIDs @@ -318,19 +316,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {200, 613}} GroupTreeTableConfiguration MainColumn - 288 + 183 RubberWindowFrame - 599 189 841 654 0 0 1440 878 + 469 189 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 200pt Dock @@ -353,12 +351,12 @@ _historyCapacity 0 bookmark - 8B27211F2173C07300396442 + 8B792FD621F49B7D006E9731 history 8B0FACF11E6A22F300E0AD36 - 8B27211E2173C07300396442 - 8B0FAD101E6A27BE00E0AD36 + 8B792FCF21F49B6D006E9731 + 8B792FD121F49B6D006E9731 SplitCount @@ -372,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 126}} + {{0, 0}, {636, 430}} RubberWindowFrame - 599 189 841 654 0 0 1440 878 + 469 189 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 126pt + 430pt Proportion - 482pt + 178pt Tabs @@ -397,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 455}} - RubberWindowFrame - 599 189 841 654 0 0 1440 878 + {{10, 27}, {636, 151}} Module XCDetailModule @@ -453,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {636, 151}} + RubberWindowFrame + 469 189 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -462,7 +460,7 @@ Proportion - 531pt + 636pt Name @@ -481,11 +479,11 @@ TableOfContents - 8B2721202173C07300396442 + 8B792FD721F49B7D006E9731 1CA23ED40692098700951B8B - 8B2721212173C07300396442 + 8B792FD821F49B7D006E9731 8BD7274A1D46E5A5000176F0 - 8B2721222173C07300396442 + 8B792FD921F49B7D006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +656,7 @@ StatusbarIsVisible TimeStamp - 561234035.39839995 + 569678717.46052098 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -678,7 +676,7 @@ /Users/christopherjohnson/Desktop/MacAU/Sidepass/Sidepass.xcodeproj WindowString - 599 189 841 654 0 0 1440 878 + 469 189 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 810 - 810 + 867 + 867 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 216 + 192 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -307,7 +305,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {216, 428}} + {{0, 0}, {192, 549}} PBXTopSmartGroupGIDs @@ -317,19 +315,19 @@ GeometryConfiguration Frame - {{0, 0}, {233, 446}} + {{0, 0}, {209, 567}} GroupTreeTableConfiguration MainColumn - 216 + 192 RubberWindowFrame - 588 264 810 487 0 0 1440 878 + 430 203 867 608 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 233pt + 209pt Dock @@ -340,7 +338,7 @@ PBXProjectModuleGUID 8BBDB967208BF902006F0D04 PBXProjectModuleLabel - SingleEndedTriodeVersion.h + SingleEndedTriode.cpp PBXSplitModuleInNavigatorKey Split0 @@ -348,15 +346,16 @@ PBXProjectModuleGUID 8BBDB968208BF902006F0D04 PBXProjectModuleLabel - SingleEndedTriodeVersion.h + SingleEndedTriode.cpp _historyCapacity 0 bookmark - 8B7E3E8A20A6930E00482CB5 + 8B792FED21F49D42006E9731 history - 8B7E3E8820A6930E00482CB5 - 8B7E3E8920A6930E00482CB5 + 8B792FE521F49D2B006E9731 + 8B792FE621F49D2B006E9731 + 8B792FE821F49D2B006E9731 SplitCount @@ -370,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {572, 102}} + {{0, 0}, {653, 410}} RubberWindowFrame - 588 264 810 487 0 0 1440 878 + 430 203 867 608 0 0 1440 878 Module PBXNavigatorGroup Proportion - 102pt + 410pt Proportion - 339pt + 152pt Tabs @@ -395,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {572, 312}} - RubberWindowFrame - 588 264 810 487 0 0 1440 878 + {{10, 27}, {653, 125}} Module XCDetailModule @@ -451,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {572, 282}} + {{10, 27}, {653, 125}} + RubberWindowFrame + 430 203 867 608 0 0 1440 878 Module PBXBuildResultsModule @@ -460,7 +459,7 @@ Proportion - 572pt + 653pt Name @@ -479,11 +478,11 @@ TableOfContents - 8B7E3E8B20A6930E00482CB5 + 8B792FEE21F49D42006E9731 1CA23ED40692098700951B8B - 8B7E3E8C20A6930E00482CB5 + 8B792FEF21F49D42006E9731 8BBDB967208BF902006F0D04 - 8B7E3E8D20A6930E00482CB5 + 8B792FF021F49D42006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +635,7 @@ StatusbarIsVisible TimeStamp - 547787534.19024003 + 569679170.50335598 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -656,7 +655,7 @@ /Users/christopherjohnson/Desktop/MacAU/SingleEndedTriode/SingleEndedTriode.xcodeproj WindowString - 588 264 810 487 0 0 1440 878 + 430 203 867 608 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 928 + 928 Perspectives @@ -300,14 +300,14 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 5 2 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 428}} + {{0, 0}, {185, 685}} PBXTopSmartGroupGIDs @@ -317,14 +317,14 @@ GeometryConfiguration Frame - {{0, 0}, {202, 446}} + {{0, 0}, {202, 703}} GroupTreeTableConfiguration MainColumn 185 RubberWindowFrame - 620 384 810 487 0 0 1440 878 + 365 99 928 744 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,12 +352,12 @@ _historyCapacity 0 bookmark - 8B44C13D20548E7700B1360B + 8B79300821F49E6B006E9731 history 8B38EA761D5BFD02003DFCC5 - 8BC032AD1D6667740039F36E - 8B44C13C20548E7700B1360B + 8B792FFC21F49E37006E9731 + 8B792FFE21F49E37006E9731 SplitCount @@ -371,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {721, 468}} RubberWindowFrame - 620 384 810 487 0 0 1440 878 + 365 99 928 744 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 468pt Proportion - 428pt + 230pt Tabs @@ -396,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} - RubberWindowFrame - 620 384 810 487 0 0 1440 878 + {{10, 27}, {721, 203}} Module XCDetailModule @@ -452,7 +450,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {721, 203}} + RubberWindowFrame + 365 99 928 744 0 0 1440 878 Module PBXBuildResultsModule @@ -461,7 +461,7 @@ Proportion - 603pt + 721pt Name @@ -480,11 +480,11 @@ TableOfContents - 8B44C13E20548E7700B1360B + 8B79300921F49E6B006E9731 1CA23ED40692098700951B8B - 8B44C13F20548E7700B1360B + 8B79300A21F49E6B006E9731 8B38EA371D5BF603003DFCC5 - 8B44C14020548E7700B1360B + 8B79300B21F49E6B006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -637,7 +637,7 @@ StatusbarIsVisible TimeStamp - 542412407.33123505 + 569679467.91034496 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -654,11 +654,11 @@ 5 WindowOrderList - 8B44C14120548E7700B1360B + 8B79300C21F49E6B006E9731 /Users/christopherjohnson/Desktop/MacAU/Slew/Slew.xcodeproj WindowString - 620 384 810 487 0 0 1440 878 + 365 99 928 744 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 835 + 835 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 185 + 147 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -307,7 +305,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 428}} + {{0, 0}, {147, 699}} PBXTopSmartGroupGIDs @@ -317,19 +315,19 @@ GeometryConfiguration Frame - {{0, 0}, {202, 446}} + {{0, 0}, {164, 717}} GroupTreeTableConfiguration MainColumn - 185 + 147 RubberWindowFrame - 630 353 810 487 0 0 1440 878 + 433 98 835 758 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 202pt + 164pt Dock @@ -340,7 +338,7 @@ PBXProjectModuleGUID 8B41AF5A1DA1CCC700555FA2 PBXProjectModuleLabel - Slew2.h + Slew2.cpp PBXSplitModuleInNavigatorKey Split0 @@ -348,15 +346,16 @@ PBXProjectModuleGUID 8B41AF5B1DA1CCC700555FA2 PBXProjectModuleLabel - Slew2.h + Slew2.cpp _historyCapacity 0 bookmark - 8B9D760A1F7FA10A007AB60F + 8B79301F21F49F56006E9731 history 8B41AFAA1DA1D3B100555FA2 - 8B9D670A1F7C8F10007AB60F + 8B79301821F49F45006E9731 + 8B79301A21F49F45006E9731 SplitCount @@ -370,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {666, 538}} RubberWindowFrame - 630 353 810 487 0 0 1440 878 + 433 98 835 758 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 538pt Proportion - 372pt + 174pt Tabs @@ -395,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} - RubberWindowFrame - 630 353 810 487 0 0 1440 878 + {{10, 27}, {666, 147}} Module XCDetailModule @@ -451,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {666, 147}} + RubberWindowFrame + 433 98 835 758 0 0 1440 878 Module PBXBuildResultsModule @@ -460,7 +459,7 @@ Proportion - 603pt + 666pt Name @@ -479,11 +478,11 @@ TableOfContents - 8B9D760B1F7FA10A007AB60F + 8B79302021F49F56006E9731 1CA23ED40692098700951B8B - 8B9D760C1F7FA10A007AB60F + 8B79302121F49F56006E9731 8B41AF5A1DA1CCC700555FA2 - 8B9D760D1F7FA10A007AB60F + 8B79302221F49F56006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528457994.05700201 + 569679702.44383299 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +652,10 @@ 5 WindowOrderList - 8B9D760E1F7FA10A007AB60F /Users/christopherjohnson/Desktop/MacAU/Slew2/Slew2.xcodeproj WindowString - 630 353 810 487 0 0 1440 878 + 433 98 835 758 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 895 + 895 Perspectives @@ -300,14 +300,14 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 5 2 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 428}} + {{0, 0}, {185, 656}} PBXTopSmartGroupGIDs @@ -317,14 +317,14 @@ GeometryConfiguration Frame - {{0, 0}, {202, 446}} + {{0, 0}, {202, 674}} GroupTreeTableConfiguration MainColumn 185 RubberWindowFrame - 587 314 810 487 0 0 1440 878 + 417 141 895 715 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -340,7 +340,7 @@ PBXProjectModuleGUID 8B37E0371D70A73000DB4EC7 PBXProjectModuleLabel - SlewOnlyVersion.h + SlewOnly.cpp PBXSplitModuleInNavigatorKey Split0 @@ -348,15 +348,16 @@ PBXProjectModuleGUID 8B37E0381D70A73000DB4EC7 PBXProjectModuleLabel - SlewOnlyVersion.h + SlewOnly.cpp _historyCapacity 0 bookmark - 8B9D76191F7FA162007AB60F + 8B79303B21F4A0A3006E9731 history - 8B37E0391D70A73000DB4EC7 - 8B9D671D1F7C8F37007AB60F + 8B79302E21F4A032006E9731 + 8B79302F21F4A032006E9731 + 8B79303121F4A032006E9731 SplitCount @@ -370,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 86}} + {{0, 0}, {688, 543}} RubberWindowFrame - 587 314 810 487 0 0 1440 878 + 417 141 895 715 0 0 1440 878 Module PBXNavigatorGroup Proportion - 86pt + 543pt Proportion - 355pt + 126pt Tabs @@ -395,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} - RubberWindowFrame - 587 314 810 487 0 0 1440 878 + {{10, 27}, {688, 99}} Module XCDetailModule @@ -451,7 +450,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {688, 99}} + RubberWindowFrame + 417 141 895 715 0 0 1440 878 Module PBXBuildResultsModule @@ -460,7 +461,7 @@ Proportion - 603pt + 688pt Name @@ -479,11 +480,11 @@ TableOfContents - 8B9D761A1F7FA162007AB60F + 8B79303C21F4A0A3006E9731 1CA23ED40692098700951B8B - 8B9D761B1F7FA162007AB60F + 8B79303D21F4A0A3006E9731 8B37E0371D70A73000DB4EC7 - 8B9D761C1F7FA162007AB60F + 8B79303E21F4A0A3006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +637,7 @@ StatusbarIsVisible TimeStamp - 528458082.578906 + 569680035.79594803 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +654,11 @@ 5 WindowOrderList - 8B9D761D1F7FA162007AB60F + 8B79303F21F4A0A3006E9731 /Users/christopherjohnson/Desktop/MacAU/SlewOnly/SlewOnly.xcodeproj WindowString - 587 314 810 487 0 0 1440 878 + 417 141 895 715 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 161 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -309,7 +307,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {161, 595}} PBXTopSmartGroupGIDs @@ -319,19 +317,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {178, 613}} GroupTreeTableConfiguration MainColumn - 288 + 161 RubberWindowFrame - 16 205 841 654 0 0 1440 878 + 472 182 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 178pt Dock @@ -342,7 +340,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - Spiral.h + Spiral.cpp PBXSplitModuleInNavigatorKey Split0 @@ -350,15 +348,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - Spiral.h + Spiral.cpp _historyCapacity 0 bookmark - 8BBFF81F20AD8037005650EF + 8B79305221F4A238006E9731 history 8BBFF81D20AD8037005650EF - 8BBFF81E20AD8037005650EF + 8B79304B21F4A1E5006E9731 + 8B79304D21F4A1E5006E9731 SplitCount @@ -372,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 229}} + {{0, 0}, {658, 432}} RubberWindowFrame - 16 205 841 654 0 0 1440 878 + 472 182 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 229pt + 432pt Proportion - 379pt + 176pt Tabs @@ -397,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 352}} - RubberWindowFrame - 16 205 841 654 0 0 1440 878 + {{10, 27}, {658, 149}} Module XCDetailModule @@ -453,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {658, 149}} + RubberWindowFrame + 472 182 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -462,7 +461,7 @@ Proportion - 531pt + 658pt Name @@ -481,11 +480,11 @@ TableOfContents - 8BBFF82020AD8037005650EF + 8B79305321F4A238006E9731 1CA23ED40692098700951B8B - 8BBFF82120AD8037005650EF + 8B79305421F4A238006E9731 8BD7274A1D46E5A5000176F0 - 8BBFF82220AD8037005650EF + 8B79305521F4A238006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +657,7 @@ StatusbarIsVisible TimeStamp - 548241463.28044701 + 569680440.94942403 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,11 +674,10 @@ 5 WindowOrderList - 8BBFF82320AD8037005650EF /Users/christopherjohnson/Desktop/MacAU/Spiral/Spiral.xcodeproj WindowString - 16 205 841 654 0 0 1440 878 + 472 182 841 654 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -326,7 +324,7 @@ 288 RubberWindowFrame - 576 199 841 654 0 0 1440 878 + 456 204 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -354,12 +352,12 @@ _historyCapacity 0 bookmark - 8BBD183A210525AE0015A233 + 8B79306821F4A31F006E9731 history 8B241CC221016728001BBF7E - 8BB8B7382103A9CC00751000 - 8BBD1839210525AE0015A233 + 8B79306121F4A306006E9731 + 8B79306321F4A306006E9731 SplitCount @@ -373,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 173}} + {{0, 0}, {531, 481}} RubberWindowFrame - 576 199 841 654 0 0 1440 878 + 456 204 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 173pt + 481pt Proportion - 435pt + 127pt Tabs @@ -398,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 408}} - RubberWindowFrame - 576 199 841 654 0 0 1440 878 + {{10, 27}, {531, 100}} Module XCDetailModule @@ -454,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {531, 100}} + RubberWindowFrame + 456 204 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -482,11 +480,11 @@ TableOfContents - 8BBD183B210525AE0015A233 + 8B79306921F4A31F006E9731 1CA23ED40692098700951B8B - 8BBD183C210525AE0015A233 + 8B79306A21F4A31F006E9731 8BD7274A1D46E5A5000176F0 - 8BBD183D210525AE0015A233 + 8B79306B21F4A31F006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +657,7 @@ StatusbarIsVisible TimeStamp - 553985454.98206902 + 569680671.35491204 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -679,7 +677,7 @@ /Users/christopherjohnson/Desktop/MacAU/Spiral2/Spiral2.xcodeproj WindowString - 576 199 841 654 0 0 1440 878 + 456 204 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 876 + 876 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -307,7 +305,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 428}} + {{0, 0}, {185, 661}} PBXTopSmartGroupGIDs @@ -317,14 +315,14 @@ GeometryConfiguration Frame - {{0, 0}, {202, 446}} + {{0, 0}, {202, 679}} GroupTreeTableConfiguration MainColumn 185 RubberWindowFrame - 630 293 810 487 0 0 1440 878 + 447 102 876 720 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -335,12 +333,14 @@ Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID 8BAC22EC1F1EA26E009C635C PBXProjectModuleLabel - StarChild.h + StarChild.cpp PBXSplitModuleInNavigatorKey Split0 @@ -348,14 +348,15 @@ PBXProjectModuleGUID 8BAC22ED1F1EA26E009C635C PBXProjectModuleLabel - StarChild.h + StarChild.cpp _historyCapacity 0 bookmark - 8B9D76381F7FA215007AB60F + 8B79307E21F4A491006E9731 history - 8B9D67441F7C8F7E007AB60F + 8B79307721F4A440006E9731 + 8B79307921F4A440006E9731 SplitCount @@ -369,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 86}} + {{0, 0}, {669, 542}} RubberWindowFrame - 630 293 810 487 0 0 1440 878 + 447 102 876 720 0 0 1440 878 Module PBXNavigatorGroup Proportion - 86pt + 542pt Proportion - 355pt + 132pt Tabs @@ -394,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} - RubberWindowFrame - 630 293 810 487 0 0 1440 878 + {{10, 27}, {669, 105}} Module XCDetailModule @@ -450,7 +449,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {669, 105}} + RubberWindowFrame + 447 102 876 720 0 0 1440 878 Module PBXBuildResultsModule @@ -459,7 +460,7 @@ Proportion - 603pt + 669pt Name @@ -478,11 +479,11 @@ TableOfContents - 8B9D76391F7FA215007AB60F + 8B79307F21F4A491006E9731 1CA23ED40692098700951B8B - 8B9D763A1F7FA215007AB60F + 8B79308021F4A491006E9731 8BAC22EC1F1EA26E009C635C - 8B9D763B1F7FA215007AB60F + 8B79308121F4A491006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +636,7 @@ StatusbarIsVisible TimeStamp - 528458261.212134 + 569681041.62753606 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +653,10 @@ 5 WindowOrderList - 8B9D763C1F7FA215007AB60F /Users/christopherjohnson/Desktop/MacAU/StarChild/StarChild.xcodeproj WindowString - 630 293 810 487 0 0 1440 878 + 447 102 876 720 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 908 + 908 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -307,7 +305,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 428}} + {{0, 0}, {185, 649}} PBXTopSmartGroupGIDs @@ -317,14 +315,14 @@ GeometryConfiguration Frame - {{0, 0}, {202, 446}} + {{0, 0}, {202, 667}} GroupTreeTableConfiguration MainColumn 185 RubberWindowFrame - 622 347 810 487 0 0 1440 878 + 377 128 908 708 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -335,12 +333,14 @@ Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID 8B050BD820648DF500700365 PBXProjectModuleLabel - + StereoFX.cpp PBXSplitModuleInNavigatorKey Split0 @@ -348,7 +348,16 @@ PBXProjectModuleGUID 8B050BD920648DF500700365 PBXProjectModuleLabel - + StereoFX.cpp + _historyCapacity + 0 + bookmark + 8B79309421F4A60C006E9731 + history + + 8B79308D21F4A5EC006E9731 + 8B79308F21F4A5EC006E9731 + SplitCount 1 @@ -361,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 0}} + {{0, 0}, {701, 497}} RubberWindowFrame - 622 347 810 487 0 0 1440 878 + 377 128 908 708 0 0 1440 878 Module PBXNavigatorGroup Proportion - 0pt + 497pt Proportion - 441pt + 165pt Tabs @@ -386,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} - RubberWindowFrame - 622 347 810 487 0 0 1440 878 + {{10, 27}, {701, 138}} Module XCDetailModule @@ -442,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {701, 138}} + RubberWindowFrame + 377 128 908 708 0 0 1440 878 Module PBXBuildResultsModule @@ -451,7 +460,7 @@ Proportion - 603pt + 701pt Name @@ -470,11 +479,11 @@ TableOfContents - 8BC5CFD0209404910058B257 + 8B79309521F4A60C006E9731 1CA23ED40692098700951B8B - 8BC5CFD1209404910058B257 + 8B79309621F4A60C006E9731 8B050BD820648DF500700365 - 8BC5CFD2209404910058B257 + 8B79309721F4A60C006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -627,7 +636,7 @@ StatusbarIsVisible TimeStamp - 546571409.14249599 + 569681420.22861803 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -644,11 +653,10 @@ 5 WindowOrderList - 8BC5CFD3209404910058B257 /Users/christopherjohnson/Desktop/MacAU/StereoFX/StereoFX.xcodeproj WindowString - 622 347 810 487 0 0 1440 878 + 377 128 908 708 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 952 + 952 Perspectives @@ -300,14 +300,14 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 + 5 2 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 428}} + {{0, 0}, {185, 684}} PBXTopSmartGroupGIDs @@ -317,14 +317,14 @@ GeometryConfiguration Frame - {{0, 0}, {202, 446}} + {{0, 0}, {202, 702}} GroupTreeTableConfiguration MainColumn 185 RubberWindowFrame - 494 327 810 487 0 0 1440 878 + 341 97 952 743 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -340,7 +340,7 @@ PBXProjectModuleGUID 8BBD0B9A1D70A94D003F8957 PBXProjectModuleLabel - + SubsOnly.cpp PBXSplitModuleInNavigatorKey Split0 @@ -348,7 +348,16 @@ PBXProjectModuleGUID 8BBD0B9B1D70A94D003F8957 PBXProjectModuleLabel - + SubsOnly.cpp + _historyCapacity + 0 + bookmark + 8B7930AB21F4A702006E9731 + history + + 8B7930A321F4A6E6006E9731 + 8B7930A521F4A6E6006E9731 + SplitCount 1 @@ -361,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 0}} + {{0, 0}, {745, 504}} RubberWindowFrame - 494 327 810 487 0 0 1440 878 + 341 97 952 743 0 0 1440 878 Module PBXNavigatorGroup Proportion - 0pt + 504pt Proportion - 441pt + 193pt Tabs @@ -386,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} - RubberWindowFrame - 494 327 810 487 0 0 1440 878 + {{10, 27}, {745, 166}} Module XCDetailModule @@ -442,7 +449,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {745, 166}} + RubberWindowFrame + 341 97 952 743 0 0 1440 878 Module PBXBuildResultsModule @@ -451,7 +460,7 @@ Proportion - 603pt + 745pt Name @@ -470,11 +479,11 @@ TableOfContents - 8B9D76471F7FA22D007AB60F + 8B7930AC21F4A702006E9731 1CA23ED40692098700951B8B - 8B9D76481F7FA22D007AB60F + 8B7930AD21F4A702006E9731 8BBD0B9A1D70A94D003F8957 - 8B9D76491F7FA22D007AB60F + 8B7930AE21F4A702006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -627,7 +636,7 @@ StatusbarIsVisible TimeStamp - 528458285.16747701 + 569681666.59451497 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -644,11 +653,11 @@ 5 WindowOrderList - 8B9D764A1F7FA22D007AB60F + 8B7930AF21F4A702006E9731 /Users/christopherjohnson/Desktop/MacAU/SubsOnly/SubsOnly.xcodeproj WindowString - 494 327 810 487 0 0 1440 878 + 341 97 952 743 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 841 - 841 + 898 + 898 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 191 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -308,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {191, 681}} PBXTopSmartGroupGIDs @@ -318,19 +316,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {208, 699}} GroupTreeTableConfiguration MainColumn - 288 + 191 RubberWindowFrame - 599 205 841 654 0 0 1440 878 + 405 127 898 740 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 208pt Dock @@ -341,7 +339,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - Surge.h + Surge.cpp PBXSplitModuleInNavigatorKey Split0 @@ -349,16 +347,17 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - Surge.h + Surge.cpp _historyCapacity 0 bookmark - 8B9D76551F7FA262007AB60F + 8B7930C221F4A996006E9731 history 8BD4F5501E6E0C5600288155 8BD4F5511E6E0C5600288155 - 8B9D72591F7F002B007AB60F + 8B7930BB21F4A95A006E9731 + 8B7930BD21F4A95A006E9731 SplitCount @@ -372,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 202}} + {{0, 0}, {685, 539}} RubberWindowFrame - 599 205 841 654 0 0 1440 878 + 405 127 898 740 0 0 1440 878 Module PBXNavigatorGroup Proportion - 202pt + 539pt Proportion - 406pt + 155pt Tabs @@ -397,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 379}} - RubberWindowFrame - 599 205 841 654 0 0 1440 878 + {{10, 27}, {685, 128}} Module XCDetailModule @@ -453,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {685, 128}} + RubberWindowFrame + 405 127 898 740 0 0 1440 878 Module PBXBuildResultsModule @@ -462,7 +461,7 @@ Proportion - 531pt + 685pt Name @@ -481,11 +480,11 @@ TableOfContents - 8B9D76561F7FA262007AB60F + 8B7930C321F4A996006E9731 1CA23ED40692098700951B8B - 8B9D76571F7FA262007AB60F + 8B7930C421F4A996006E9731 8BD7274A1D46E5A5000176F0 - 8B9D76581F7FA262007AB60F + 8B7930C521F4A996006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +657,7 @@ StatusbarIsVisible TimeStamp - 528458338.37719601 + 569682326.61837006 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,11 +674,10 @@ 5 WindowOrderList - 8B9D76591F7FA262007AB60F /Users/christopherjohnson/Desktop/MacAU/Surge/Surge.xcodeproj WindowString - 599 205 841 654 0 0 1440 878 + 405 127 898 740 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -325,7 +323,7 @@ 288 RubberWindowFrame - 582 129 841 654 0 0 1440 878 + 444 180 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -341,7 +339,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - Info.plist + SurgeMono.cpp PBXSplitModuleInNavigatorKey Split0 @@ -349,14 +347,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - Info.plist + SurgeMono.cpp _historyCapacity 0 bookmark - 8B9D76661F7FA27C007AB60F + 8B7930D921F4AAD9006E9731 history - 8B9D67791F7C8FFF007AB60F + 8B7930D121F4AAA2006E9731 + 8B7930D221F4AAA2006E9731 + 8B7930D421F4AAA2006E9731 SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 216}} + {{0, 0}, {531, 414}} RubberWindowFrame - 582 129 841 654 0 0 1440 878 + 444 180 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 216pt + 414pt Proportion - 392pt + 194pt Tabs @@ -395,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 365}} - RubberWindowFrame - 582 129 841 654 0 0 1440 878 + {{10, 27}, {531, 167}} Module XCDetailModule @@ -451,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {531, 167}} + RubberWindowFrame + 444 180 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +479,11 @@ TableOfContents - 8B9D76671F7FA27C007AB60F + 8B7930DA21F4AAD9006E9731 1CA23ED40692098700951B8B - 8B9D76681F7FA27C007AB60F + 8B7930DB21F4AAD9006E9731 8BD7274A1D46E5A5000176F0 - 8B9D76691F7FA27C007AB60F + 8B7930DC21F4AAD9006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -656,7 +656,7 @@ StatusbarIsVisible TimeStamp - 528458364.66416103 + 569682649.56976402 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -673,11 +673,10 @@ 5 WindowOrderList - 8B9D766A1F7FA27C007AB60F /Users/christopherjohnson/Desktop/MacAU/SurgeMono/SurgeMono.xcodeproj WindowString - 582 129 841 654 0 0 1440 878 + 444 180 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 841 - 841 + 865 + 865 Perspectives @@ -306,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {288, 707}} PBXTopSmartGroupGIDs @@ -316,14 +316,14 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {305, 725}} GroupTreeTableConfiguration MainColumn 288 RubberWindowFrame - 599 190 841 654 0 0 1440 878 + 436 94 865 766 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -334,8 +334,6 @@ Dock - BecomeActive - ContentConfiguration PBXProjectModuleGUID @@ -353,13 +351,13 @@ _historyCapacity 0 bookmark - 8B050BEB20648E5500700365 + 8B7930EF21F4AB96006E9731 history 8B3221941DC3CF2D00C1FCDF 8B3DF6731E6A5BAE00E788B6 - 8B050BEA20648E5500700365 - 8BC9089C1DC7FFFE008187BE + 8B7930E821F4AB6C006E9731 + 8B7930EA21F4AB6C006E9731 SplitCount @@ -373,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 502}} + {{0, 0}, {555, 495}} RubberWindowFrame - 599 190 841 654 0 0 1440 878 + 436 94 865 766 0 0 1440 878 Module PBXNavigatorGroup Proportion - 502pt + 495pt Proportion - 106pt + 225pt Tabs @@ -398,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 79}} - RubberWindowFrame - 599 190 841 654 0 0 1440 878 + {{10, 27}, {555, 83}} Module XCDetailModule @@ -454,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {555, 198}} + RubberWindowFrame + 436 94 865 766 0 0 1440 878 Module PBXBuildResultsModule @@ -463,7 +461,7 @@ Proportion - 531pt + 555pt Name @@ -482,11 +480,11 @@ TableOfContents - 8B050BEC20648E5500700365 + 8B7930F021F4AB96006E9731 1CA23ED40692098700951B8B - 8B050BED20648E5500700365 + 8B7930F121F4AB96006E9731 8BD7274A1D46E5A5000176F0 - 8B050BEE20648E5500700365 + 8B7930F221F4AB96006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +657,7 @@ StatusbarIsVisible TimeStamp - 543460949.69104803 + 569682838.98241794 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -679,7 +677,7 @@ /Users/christopherjohnson/Desktop/MacAU/SurgeTide/SurgeTide.xcodeproj WindowString - 599 190 841 654 0 0 1440 878 + 436 94 865 766 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 175 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -308,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {175, 595}} PBXTopSmartGroupGIDs @@ -318,19 +316,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {192, 613}} GroupTreeTableConfiguration MainColumn - 288 + 175 RubberWindowFrame - 528 221 841 654 0 0 1440 878 + 454 219 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 192pt Dock @@ -341,7 +339,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - Info.plist + SurgeTideMono.cpp PBXSplitModuleInNavigatorKey Split0 @@ -349,14 +347,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - Info.plist + SurgeTideMono.cpp _historyCapacity 0 bookmark - 8B9D76841F7FA2BF007AB60F + 8B79310621F4AC4F006E9731 history - 8B9D67A21F7C9057007AB60F + 8B7930FE21F4AC25006E9731 + 8B7930FF21F4AC25006E9731 + 8B79310121F4AC25006E9731 SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 229}} + {{0, 0}, {644, 402}} RubberWindowFrame - 528 221 841 654 0 0 1440 878 + 454 219 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 229pt + 402pt Proportion - 379pt + 206pt Tabs @@ -395,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 352}} - RubberWindowFrame - 528 221 841 654 0 0 1440 878 + {{10, 27}, {644, 179}} Module XCDetailModule @@ -451,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {644, 179}} + RubberWindowFrame + 454 219 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -460,7 +460,7 @@ Proportion - 531pt + 644pt Name @@ -479,11 +479,11 @@ TableOfContents - 8B9D76851F7FA2BF007AB60F + 8B79310721F4AC4F006E9731 1CA23ED40692098700951B8B - 8B9D76861F7FA2BF007AB60F + 8B79310821F4AC4F006E9731 8BD7274A1D46E5A5000176F0 - 8B9D76871F7FA2BF007AB60F + 8B79310921F4AC4F006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -656,7 +656,7 @@ StatusbarIsVisible TimeStamp - 528458431.67624801 + 569683023.93876398 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -673,11 +673,10 @@ 5 WindowOrderList - 8B9D76881F7FA2BF007AB60F /Users/christopherjohnson/Desktop/MacAU/SurgeTideMono/SurgeTideMono.xcodeproj WindowString - 528 221 841 654 0 0 1440 878 + 454 219 841 654 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 182 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -308,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {182, 595}} PBXTopSmartGroupGIDs @@ -318,19 +316,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {199, 613}} GroupTreeTableConfiguration MainColumn - 288 + 182 RubberWindowFrame - 580 200 841 654 0 0 1440 878 + 450 207 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 199pt Dock @@ -341,7 +339,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - Swell.h + Swell.cpp PBXSplitModuleInNavigatorKey Split0 @@ -349,16 +347,17 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - Swell.h + Swell.cpp _historyCapacity 0 bookmark - 8BCC7CD31FBD2E6800982BD6 + 8B79311C21F4AD21006E9731 history 8BB5DDF41FBD106E008B4570 8BCC7CCD1FBD2D3C00982BD6 - 8BCC7CCE1FBD2D3C00982BD6 + 8B79311521F4ACEB006E9731 + 8B79311721F4ACEB006E9731 SplitCount @@ -372,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 254}} + {{0, 0}, {637, 421}} RubberWindowFrame - 580 200 841 654 0 0 1440 878 + 450 207 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 254pt + 421pt Proportion - 354pt + 187pt Tabs @@ -397,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 327}} - RubberWindowFrame - 580 200 841 654 0 0 1440 878 + {{10, 27}, {637, 160}} Module XCDetailModule @@ -453,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {637, 160}} + RubberWindowFrame + 450 207 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -462,7 +461,7 @@ Proportion - 531pt + 637pt Name @@ -481,11 +480,11 @@ TableOfContents - 8BCC7CA61FBD2B1F00982BD6 + 8B79311D21F4AD21006E9731 1CA23ED40692098700951B8B - 8BCC7CA71FBD2B1F00982BD6 + 8B79311E21F4AD21006E9731 8BD7274A1D46E5A5000176F0 - 8BCC7CA81FBD2B1F00982BD6 + 8B79311F21F4AD21006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +657,7 @@ StatusbarIsVisible TimeStamp - 532491880.84511602 + 569683233.59178197 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -678,7 +677,7 @@ /Users/christopherjohnson/Desktop/MacAU/Swell/Swell.xcodeproj WindowString - 580 200 841 654 0 0 1440 878 + 450 207 841 654 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.mode1v3 old mode 100644 new mode 100755 diff --git a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.pbxuser old mode 100644 new mode 100755 diff --git a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 old mode 100644 new mode 100755 diff --git a/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/project.pbxproj b/plugins/MacAU/TPDFDither/TPDFDither.xcodeproj/project.pbxproj old mode 100644 new mode 100755 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 @@ 288 RubberWindowFrame - 546 187 841 654 0 0 1440 878 + 400 207 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,11 +352,12 @@ _historyCapacity 0 bookmark - 8BBB319821B8A4C800825986 + 8B79313D21F4ADA2006E9731 history 8BBB310821B8995100825986 - 8BBB311D21B89C1700825986 + 8B79312721F4AD85006E9731 + 8B79313821F4AD8C006E9731 SplitCount @@ -370,23 +371,21 @@ GeometryConfiguration Frame - {{0, 0}, {531, 173}} + {{0, 0}, {531, 430}} RubberWindowFrame - 546 187 841 654 0 0 1440 878 + 400 207 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 173pt + 430pt Proportion - 435pt + 178pt Tabs - BecomeActive - ContentConfiguration PBXProjectModuleGUID @@ -397,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 408}} - RubberWindowFrame - 546 187 841 654 0 0 1440 878 + {{10, 27}, {531, 151}} Module XCDetailModule @@ -453,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {531, 151}} + RubberWindowFrame + 400 207 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -481,11 +480,11 @@ TableOfContents - 8BBB316E21B8A29600825986 + 8B79313E21F4ADA2006E9731 1CA23ED40692098700951B8B - 8BBB316F21B8A29600825986 + 8B79313F21F4ADA2006E9731 8BD7274A1D46E5A5000176F0 - 8BBB317021B8A29600825986 + 8B79314021F4ADA2006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +657,7 @@ StatusbarIsVisible TimeStamp - 565748936.10847795 + 569683362.16233301 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,11 +674,10 @@ 5 WindowOrderList - 8BBB319921B8A4C800825986 /Users/christopherjohnson/Desktop/MacAU/TapeDelay/TapeDelay.xcodeproj WindowString - 546 187 841 654 0 0 1440 878 + 400 207 841 654 0 0 1440 878 WindowToolsV3 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 @@ 288 RubberWindowFrame - 599 182 841 654 0 0 1440 878 + 649 171 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,11 +353,11 @@ _historyCapacity 0 bookmark - 8B9D76931F7FA2E5007AB60F + 8BDA3BE121B5BE7800CC56FA history 8B4FD0461DF97DCE00999740 - 8B9D67AE1F7C9067007AB60F + 8B913F63213DBB0300BA6EEC SplitCount @@ -371,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 229}} + {{0, 0}, {531, 202}} RubberWindowFrame - 599 182 841 654 0 0 1440 878 + 649 171 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 229pt + 202pt Proportion - 379pt + 406pt Tabs @@ -396,9 +396,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 352}} + {{10, 27}, {531, 379}} RubberWindowFrame - 599 182 841 654 0 0 1440 878 + 649 171 841 654 0 0 1440 878 Module XCDetailModule @@ -480,11 +480,11 @@ TableOfContents - 8B9D76941F7FA2E5007AB60F + 8BDA3BE221B5BE7800CC56FA 1CA23ED40692098700951B8B - 8B9D76951F7FA2E5007AB60F + 8BDA3BE321B5BE7800CC56FA 8BD7274A1D46E5A5000176F0 - 8B9D76961F7FA2E5007AB60F + 8BDA3BE421B5BE7800CC56FA 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +657,7 @@ StatusbarIsVisible TimeStamp - 528458469.64023101 + 565558904.14568102 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,11 +674,11 @@ 5 WindowOrderList - 8B9D76971F7FA2E5007AB60F + 8BDA3BE521B5BE7800CC56FA /Users/christopherjohnson/Desktop/MacAU/TapeDither/TapeDither.xcodeproj WindowString - 599 182 841 654 0 0 1440 878 + 649 171 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 841 - 841 + 927 + 927 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 167 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -308,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {167, 689}} PBXTopSmartGroupGIDs @@ -318,30 +316,32 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {184, 707}} GroupTreeTableConfiguration MainColumn - 288 + 167 RubberWindowFrame - 432 155 841 654 0 0 1440 878 + 372 100 927 748 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 184pt Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - Info.plist + TapeDust.cpp PBXSplitModuleInNavigatorKey Split0 @@ -349,14 +349,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - Info.plist + TapeDust.cpp _historyCapacity 0 bookmark - 8B9D76A21F7FA30E007AB60F + 8B79315621F4AE7A006E9731 history - 8B9D67BE1F7C9098007AB60F + 8B79314C21F4AE33006E9731 + 8B79315421F4AE7A006E9731 + 8B79315521F4AE7A006E9731 SplitCount @@ -370,18 +372,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 229}} + {{0, 0}, {738, 552}} RubberWindowFrame - 432 155 841 654 0 0 1440 878 + 372 100 927 748 0 0 1440 878 Module PBXNavigatorGroup Proportion - 229pt + 552pt Proportion - 379pt + 150pt Tabs @@ -395,9 +397,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 352}} - RubberWindowFrame - 432 155 841 654 0 0 1440 878 + {{10, 27}, {738, 123}} Module XCDetailModule @@ -451,7 +451,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {738, 123}} + RubberWindowFrame + 372 100 927 748 0 0 1440 878 Module PBXBuildResultsModule @@ -460,7 +462,7 @@ Proportion - 531pt + 738pt Name @@ -479,11 +481,11 @@ TableOfContents - 8B9D76A31F7FA30E007AB60F + 8B79315721F4AE7A006E9731 1CA23ED40692098700951B8B - 8B9D76A41F7FA30E007AB60F + 8B79315821F4AE7A006E9731 8BD7274A1D46E5A5000176F0 - 8B9D76A51F7FA30E007AB60F + 8B79315921F4AE7A006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -656,7 +658,7 @@ StatusbarIsVisible TimeStamp - 528458510.42729199 + 569683578.38407302 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -673,11 +675,10 @@ 5 WindowOrderList - 8B9D76A61F7FA30E007AB60F /Users/christopherjohnson/Desktop/MacAU/TapeDust/TapeDust.xcodeproj WindowString - 432 155 841 654 0 0 1440 878 + 372 100 927 748 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 182 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -309,7 +307,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {182, 595}} PBXTopSmartGroupGIDs @@ -319,19 +317,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {199, 613}} GroupTreeTableConfiguration MainColumn - 288 + 182 RubberWindowFrame - 599 89 841 654 0 0 1440 878 + 440 183 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 199pt Dock @@ -354,12 +352,12 @@ _historyCapacity 0 bookmark - 8BBB339121C45C6E00825986 + 8B79316C21F4B278006E9731 history 8BBB319521B8A4BD00825986 - 8BBB339021C45C6E00825986 - 8BBB336921C45BB400825986 + 8B79316521F4B25B006E9731 + 8B79316721F4B25B006E9731 SplitCount @@ -373,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 216}} + {{0, 0}, {637, 512}} RubberWindowFrame - 599 89 841 654 0 0 1440 878 + 440 183 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 216pt + 512pt Proportion - 392pt + 96pt Tabs @@ -398,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 365}} - RubberWindowFrame - 599 89 841 654 0 0 1440 878 + {{10, 27}, {637, 69}} Module XCDetailModule @@ -454,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {637, 69}} + RubberWindowFrame + 440 183 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -463,7 +461,7 @@ Proportion - 531pt + 637pt Name @@ -482,11 +480,11 @@ TableOfContents - 8BBB339221C45C6E00825986 + 8B79316D21F4B278006E9731 1CA23ED40692098700951B8B - 8BBB339321C45C6E00825986 + 8B79316E21F4B278006E9731 8BD7274A1D46E5A5000176F0 - 8BBB339421C45C6E00825986 + 8B79316F21F4B278006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +657,7 @@ StatusbarIsVisible TimeStamp - 566516846.91763997 + 569684600.92815804 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -676,11 +674,10 @@ 5 WindowOrderList - 8BBB339521C45C6E00825986 /Users/christopherjohnson/Desktop/MacAU/TapeFat/TapeFat.xcodeproj WindowString - 599 89 841 654 0 0 1440 878 + 440 183 841 654 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 197 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -308,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {197, 595}} PBXTopSmartGroupGIDs @@ -318,19 +316,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {214, 613}} GroupTreeTableConfiguration MainColumn - 288 + 197 RubberWindowFrame - 566 213 841 654 0 0 1440 878 + 473 199 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 214pt Dock @@ -341,7 +339,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - ThunderVersion.h + Thunder.cpp PBXSplitModuleInNavigatorKey Split0 @@ -349,16 +347,17 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - ThunderVersion.h + Thunder.cpp _historyCapacity 0 bookmark - 8B9D76B11F7FA32E007AB60F + 8B79318321F4B354006E9731 history 8B9EC58B1D90BE2400BD1DCA - 8BFE4BDA1D92E59A00BBC6AC - 8B9D67CF1F7C90C4007AB60F + 8B79317B21F4B33A006E9731 + 8B79317C21F4B33A006E9731 + 8B79317E21F4B33A006E9731 SplitCount @@ -372,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 216}} + {{0, 0}, {622, 493}} RubberWindowFrame - 566 213 841 654 0 0 1440 878 + 473 199 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 216pt + 493pt Proportion - 392pt + 115pt Tabs @@ -397,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 365}} - RubberWindowFrame - 566 213 841 654 0 0 1440 878 + {{10, 27}, {622, 88}} Module XCDetailModule @@ -453,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {622, 88}} + RubberWindowFrame + 473 199 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -462,7 +461,7 @@ Proportion - 531pt + 622pt Name @@ -481,11 +480,11 @@ TableOfContents - 8B9D76B21F7FA32E007AB60F + 8B79318421F4B354006E9731 1CA23ED40692098700951B8B - 8B9D76B31F7FA32E007AB60F + 8B79318521F4B354006E9731 8BD7274A1D46E5A5000176F0 - 8B9D76B41F7FA32E007AB60F + 8B79318621F4B354006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +657,7 @@ StatusbarIsVisible TimeStamp - 528458542.19629401 + 569684820.36503005 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,11 +674,10 @@ 5 WindowOrderList - 8B9D76B51F7FA32E007AB60F /Users/christopherjohnson/Desktop/MacAU/Thunder/Thunder.xcodeproj WindowString - 566 213 841 654 0 0 1440 878 + 473 199 841 654 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 161 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -308,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {161, 595}} PBXTopSmartGroupGIDs @@ -318,24 +316,26 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {178, 613}} GroupTreeTableConfiguration MainColumn - 288 + 161 RubberWindowFrame - 581 201 841 654 0 0 1440 878 + 490 203 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 178pt Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID @@ -353,11 +353,12 @@ _historyCapacity 0 bookmark - 8BB8B7D82103C66300751000 + 8B7931B321F4B54A006E9731 history 8B1A32741F16BBA2004DE6C5 - 8B9D76CF1F7FA38F007AB60F + 8B7931A821F4B4FA006E9731 + 8B7931AA21F4B4FA006E9731 SplitCount @@ -371,18 +372,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 56}} + {{0, 0}, {658, 481}} RubberWindowFrame - 581 201 841 654 0 0 1440 878 + 490 203 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 56pt + 481pt Proportion - 552pt + 127pt Tabs @@ -396,9 +397,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 525}} - RubberWindowFrame - 581 201 841 654 0 0 1440 878 + {{10, 27}, {658, 100}} Module XCDetailModule @@ -452,7 +451,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 327}} + {{10, 27}, {658, 100}} + RubberWindowFrame + 490 203 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -461,7 +462,7 @@ Proportion - 531pt + 658pt Name @@ -480,11 +481,11 @@ TableOfContents - 8BB8B7D92103C66300751000 + 8B7931B421F4B54A006E9731 1CA23ED40692098700951B8B - 8BB8B7DA2103C66300751000 + 8B7931B521F4B54A006E9731 8BD7274A1D46E5A5000176F0 - 8BB8B7DB2103C66300751000 + 8B7931B621F4B54A006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +658,7 @@ StatusbarIsVisible TimeStamp - 553895523.636742 + 569685322.27313697 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,11 +675,10 @@ 5 WindowOrderList - 8BB8B7DC2103C66300751000 /Users/christopherjohnson/Desktop/MacAU/ToTape5/ToTape5.xcodeproj WindowString - 581 201 841 654 0 0 1440 878 + 490 203 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 856 + 856 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -308,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 428}} + {{0, 0}, {185, 635}} PBXTopSmartGroupGIDs @@ -318,14 +316,14 @@ GeometryConfiguration Frame - {{0, 0}, {202, 446}} + {{0, 0}, {202, 653}} GroupTreeTableConfiguration MainColumn 185 RubberWindowFrame - 608 328 810 487 0 0 1440 878 + 373 142 856 694 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -353,10 +351,11 @@ _historyCapacity 0 bookmark - 8B181B5E204CA28100516BEE + 8B7931C921F4B651006E9731 history - 8B181B5D204CA28100516BEE + 8B7931C221F4B60F006E9731 + 8B7931C421F4B60F006E9731 SplitCount @@ -370,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 86}} + {{0, 0}, {649, 490}} RubberWindowFrame - 608 328 810 487 0 0 1440 878 + 373 142 856 694 0 0 1440 878 Module PBXNavigatorGroup Proportion - 86pt + 490pt Proportion - 355pt + 158pt Tabs @@ -395,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} - RubberWindowFrame - 608 328 810 487 0 0 1440 878 + {{10, 27}, {649, 131}} Module XCDetailModule @@ -451,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {649, 131}} + RubberWindowFrame + 373 142 856 694 0 0 1440 878 Module PBXBuildResultsModule @@ -460,7 +459,7 @@ Proportion - 603pt + 649pt Name @@ -479,11 +478,11 @@ TableOfContents - 8B181B5F204CA28100516BEE + 8B7931CA21F4B651006E9731 1CA23ED40692098700951B8B - 8B181B60204CA28100516BEE + 8B7931CB21F4B651006E9731 8B277E7C1FDB48610038EA07 - 8B181B61204CA28100516BEE + 8B7931CC21F4B651006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +635,7 @@ StatusbarIsVisible TimeStamp - 541893249.61319196 + 569685585.11167395 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +652,10 @@ 5 WindowOrderList - 8B181B62204CA28100516BEE /Users/christopherjohnson/Desktop/MacAU/ToVinyl4/ToVinyl4.xcodeproj WindowString - 608 328 810 487 0 0 1440 878 + 373 142 856 694 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 192 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -308,7 +306,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {192, 595}} PBXTopSmartGroupGIDs @@ -318,19 +316,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {209, 613}} GroupTreeTableConfiguration MainColumn - 288 + 192 RubberWindowFrame - 591 215 841 654 0 0 1440 878 + 448 210 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 209pt Dock @@ -353,13 +351,13 @@ _historyCapacity 0 bookmark - 8B9D76C01F7FA369007AB60F + 8B79319921F4B43F006E9731 history 8B51D7811DAF1671009F3CF8 - 8B42FB2B1DB15DB60057B6AB 8B22B0A31DB17F9F0075D7AA - 8B9D67DF1F7C911F007AB60F + 8B79319221F4B409006E9731 + 8B79319421F4B409006E9731 SplitCount @@ -373,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 188}} + {{0, 0}, {627, 466}} RubberWindowFrame - 591 215 841 654 0 0 1440 878 + 448 210 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 188pt + 466pt Proportion - 420pt + 142pt Tabs @@ -398,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 393}} - RubberWindowFrame - 591 215 841 654 0 0 1440 878 + {{10, 27}, {627, 115}} Module XCDetailModule @@ -454,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 315}} + {{10, 27}, {627, 115}} + RubberWindowFrame + 448 210 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -463,7 +461,7 @@ Proportion - 531pt + 627pt Name @@ -482,11 +480,11 @@ TableOfContents - 8B9D76C11F7FA369007AB60F + 8B79319A21F4B43F006E9731 1CA23ED40692098700951B8B - 8B9D76C21F7FA369007AB60F + 8B79319B21F4B43F006E9731 8BD7274A1D46E5A5000176F0 - 8B9D76C31F7FA369007AB60F + 8B79319C21F4B43F006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +657,7 @@ StatusbarIsVisible TimeStamp - 528458601.15789098 + 569685055.02673697 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -676,11 +674,10 @@ 5 WindowOrderList - 8B9D76C41F7FA369007AB60F /Users/christopherjohnson/Desktop/MacAU/ToneSlant/ToneSlant.xcodeproj WindowString - 591 215 841 654 0 0 1440 878 + 448 210 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 901 + 901 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -307,7 +305,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 428}} + {{0, 0}, {185, 676}} PBXTopSmartGroupGIDs @@ -317,14 +315,14 @@ GeometryConfiguration Frame - {{0, 0}, {202, 446}} + {{0, 0}, {202, 694}} GroupTreeTableConfiguration MainColumn 185 RubberWindowFrame - 630 249 810 487 0 0 1440 878 + 398 107 901 735 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -335,6 +333,8 @@ Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID @@ -352,11 +352,11 @@ _historyCapacity 0 bookmark - 8B9D76EC1F7FA409007AB60F + 8B7931DF21F4B769006E9731 history - 8B3ED5DC1DDE6589004F9D64 - 8B9D680F1F7C919B007AB60F + 8B7931D821F4B744006E9731 + 8B7931DA21F4B744006E9731 SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {694, 520}} RubberWindowFrame - 630 249 810 487 0 0 1440 878 + 398 107 901 735 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 520pt Proportion - 372pt + 169pt Tabs @@ -395,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} - RubberWindowFrame - 630 249 810 487 0 0 1440 878 + {{10, 27}, {694, 142}} Module XCDetailModule @@ -451,7 +449,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {694, 142}} + RubberWindowFrame + 398 107 901 735 0 0 1440 878 Module PBXBuildResultsModule @@ -460,7 +460,7 @@ Proportion - 603pt + 694pt Name @@ -479,11 +479,11 @@ TableOfContents - 8B9D76ED1F7FA409007AB60F + 8B7931E021F4B769006E9731 1CA23ED40692098700951B8B - 8B9D76EE1F7FA409007AB60F + 8B7931E121F4B769006E9731 8B3ED5581DDE63B1004F9D64 - 8B9D76EF1F7FA409007AB60F + 8B7931E221F4B769006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 528458761.70146298 + 569685865.03802896 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +653,10 @@ 5 WindowOrderList - 8B9D76F01F7FA409007AB60F /Users/christopherjohnson/Desktop/MacAU/TransDesk/TransDesk.xcodeproj WindowString - 630 249 810 487 0 0 1440 878 + 398 107 901 735 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 810 - 810 + 954 + 954 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 185 + 165 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -307,7 +305,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 428}} + {{0, 0}, {165, 635}} PBXTopSmartGroupGIDs @@ -317,19 +315,19 @@ GeometryConfiguration Frame - {{0, 0}, {202, 446}} + {{0, 0}, {182, 653}} GroupTreeTableConfiguration MainColumn - 185 + 165 RubberWindowFrame - 504 296 810 487 0 0 1440 878 + 341 162 954 694 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 202pt + 182pt Dock @@ -352,11 +350,12 @@ _historyCapacity 0 bookmark - 8B9D76FB1F7FA435007AB60F + 8B7931F521F4B845006E9731 history 8BD8CB021DF8ECAA00CC3427 - 8B9D681F1F7C91BB007AB60F + 8B7931EE21F4B82A006E9731 + 8B7931F021F4B82A006E9731 SplitCount @@ -370,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 32}} + {{0, 0}, {767, 469}} RubberWindowFrame - 504 296 810 487 0 0 1440 878 + 341 162 954 694 0 0 1440 878 Module PBXNavigatorGroup Proportion - 32pt + 469pt Proportion - 409pt + 179pt Tabs @@ -395,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} - RubberWindowFrame - 504 296 810 487 0 0 1440 878 + {{10, 27}, {767, 152}} Module XCDetailModule @@ -451,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {767, 152}} + RubberWindowFrame + 341 162 954 694 0 0 1440 878 Module PBXBuildResultsModule @@ -460,7 +459,7 @@ Proportion - 603pt + 767pt Name @@ -479,11 +478,11 @@ TableOfContents - 8B9D76FC1F7FA435007AB60F + 8B7931F621F4B845006E9731 1CA23ED40692098700951B8B - 8B9D76FD1F7FA435007AB60F + 8B7931F721F4B845006E9731 8B3ED5B51DDE654F004F9D64 - 8B9D76FE1F7FA435007AB60F + 8B7931F821F4B845006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528458805.46372598 + 569686085.74729097 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +652,10 @@ 5 WindowOrderList - 8B9D76FF1F7FA435007AB60F /Users/christopherjohnson/Desktop/MacAU/Tremolo/Tremolo.xcodeproj WindowString - 504 296 810 487 0 0 1440 878 + 341 162 954 694 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - -1 - -1 + 920 + 920 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -307,7 +305,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 428}} + {{0, 0}, {185, 675}} PBXTopSmartGroupGIDs @@ -317,14 +315,14 @@ GeometryConfiguration Frame - {{0, 0}, {202, 446}} + {{0, 0}, {202, 693}} GroupTreeTableConfiguration MainColumn 185 RubberWindowFrame - 630 304 810 487 0 0 1440 878 + 387 106 920 734 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,11 +350,11 @@ _historyCapacity 0 bookmark - 8B9D770A1F7FA48A007AB60F + 8B79320C21F4B8F7006E9731 history - 8BD8CB131DF8EDB000CC3427 - 8B9D68401F7C91F2007AB60F + 8B79320521F4B8E5006E9731 + 8B79320721F4B8E5006E9731 SplitCount @@ -370,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {713, 543}} RubberWindowFrame - 630 304 810 487 0 0 1440 878 + 387 106 920 734 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 543pt Proportion - 428pt + 145pt Tabs @@ -395,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} - RubberWindowFrame - 630 304 810 487 0 0 1440 878 + {{10, 27}, {713, 118}} Module XCDetailModule @@ -451,7 +447,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {713, 118}} + RubberWindowFrame + 387 106 920 734 0 0 1440 878 Module PBXBuildResultsModule @@ -460,7 +458,7 @@ Proportion - 603pt + 713pt Name @@ -479,11 +477,11 @@ TableOfContents - 8B9D770B1F7FA48A007AB60F + 8B79320D21F4B8F7006E9731 1CA23ED40692098700951B8B - 8B9D770C1F7FA48A007AB60F + 8B79320E21F4B8F7006E9731 8B3ED5701DDE63FA004F9D64 - 8B9D770D1F7FA48A007AB60F + 8B79320F21F4B8F7006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528458890.160869 + 569686263.00768697 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +651,10 @@ 5 WindowOrderList - 8B9D770E1F7FA48A007AB60F /Users/christopherjohnson/Desktop/MacAU/TubeDesk/TubeDesk.xcodeproj WindowString - 630 304 810 487 0 0 1440 878 + 387 106 920 734 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 191 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -309,7 +307,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {191, 595}} PBXTopSmartGroupGIDs @@ -319,19 +317,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {208, 613}} GroupTreeTableConfiguration MainColumn - 288 + 191 RubberWindowFrame - 654 195 841 654 0 0 1440 878 + 454 199 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 208pt Dock @@ -342,7 +340,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - UnBox.h + UnBox.cpp PBXSplitModuleInNavigatorKey Split0 @@ -350,16 +348,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - UnBox.h + UnBox.cpp _historyCapacity 0 bookmark - 8B6DBA6A213B59B000E44739 + 8B79324F21F4BACB006E9731 history 8BFDB0B1213A19500079F90D - 8BFDB0B2213A19500079F90D - 8BFDB0B4213A19500079F90D + 8B79324821F4BABB006E9731 + 8B79324A21F4BABB006E9731 SplitCount @@ -373,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 202}} + {{0, 0}, {628, 422}} RubberWindowFrame - 654 195 841 654 0 0 1440 878 + 454 199 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 202pt + 422pt Proportion - 406pt + 186pt Tabs @@ -398,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 379}} - RubberWindowFrame - 654 195 841 654 0 0 1440 878 + {{10, 27}, {628, 159}} Module XCDetailModule @@ -454,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {628, 159}} + RubberWindowFrame + 454 199 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -463,7 +461,7 @@ Proportion - 531pt + 628pt Name @@ -482,11 +480,11 @@ TableOfContents - 8B6DBA6B213B59B000E44739 + 8B79325021F4BACB006E9731 1CA23ED40692098700951B8B - 8B6DBA6C213B59B000E44739 + 8B79325121F4BACB006E9731 8BD7274A1D46E5A5000176F0 - 8B6DBA6D213B59B000E44739 + 8B79325221F4BACB006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -659,7 +657,7 @@ StatusbarIsVisible TimeStamp - 557537712.47539306 + 569686731.11476696 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -679,7 +677,7 @@ /Users/christopherjohnson/Desktop/MacAU/UnBox/UnBox.xcodeproj WindowString - 654 195 841 654 0 0 1440 878 + 454 199 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 810 - 810 + 844 + 844 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -307,7 +305,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 428}} + {{0, 0}, {185, 681}} PBXTopSmartGroupGIDs @@ -317,14 +315,14 @@ GeometryConfiguration Frame - {{0, 0}, {202, 446}} + {{0, 0}, {202, 699}} GroupTreeTableConfiguration MainColumn 185 RubberWindowFrame - 623 325 810 487 0 0 1440 878 + 477 100 844 740 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -340,7 +338,7 @@ PBXProjectModuleGUID 8BB8B6602102749700751000 PBXProjectModuleLabel - + VariMu.cpp PBXSplitModuleInNavigatorKey Split0 @@ -348,7 +346,15 @@ PBXProjectModuleGUID 8BB8B6612102749700751000 PBXProjectModuleLabel - + VariMu.cpp + _historyCapacity + 0 + bookmark + 8B79326521F4BB59006E9731 + history + + 8B79326021F4BB45006E9731 + SplitCount 1 @@ -361,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 0}} + {{0, 0}, {637, 544}} RubberWindowFrame - 623 325 810 487 0 0 1440 878 + 477 100 844 740 0 0 1440 878 Module PBXNavigatorGroup Proportion - 0pt + 544pt Proportion - 441pt + 150pt Tabs @@ -386,9 +392,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} - RubberWindowFrame - 623 325 810 487 0 0 1440 878 + {{10, 27}, {637, 123}} Module XCDetailModule @@ -442,7 +446,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {637, 123}} + RubberWindowFrame + 477 100 844 740 0 0 1440 878 Module PBXBuildResultsModule @@ -451,7 +457,7 @@ Proportion - 603pt + 637pt Name @@ -470,11 +476,11 @@ TableOfContents - 8BBD18752105423A0015A233 + 8B79326621F4BB59006E9731 1CA23ED40692098700951B8B - 8BBD18762105423A0015A233 + 8B79326721F4BB59006E9731 8BB8B6602102749700751000 - 8BBD18772105423A0015A233 + 8B79326821F4BB59006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -627,7 +633,7 @@ StatusbarIsVisible TimeStamp - 553992762.45564604 + 569686873.84603405 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -644,11 +650,10 @@ 5 WindowOrderList - 8BBD18782105423A0015A233 /Users/christopherjohnson/Desktop/MacAU/VariMu/VariMu.xcodeproj WindowString - 623 325 810 487 0 0 1440 878 + 477 100 844 740 0 0 1440 878 WindowToolsV3 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 old mode 100644 new mode 100755 diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.pbxuser old mode 100644 new mode 100755 index 31707e8..2622f4a --- 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 old mode 100644 new mode 100755 index e5ee563..93dc9d7 --- a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 @@ -225,8 +225,8 @@ PerspectiveWidths - 810 - 810 + 850 + 850 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -300,14 +298,14 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 3 + 4 2 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {262, 390}} + {{0, 0}, {262, 653}} PBXTopSmartGroupGIDs @@ -317,14 +315,14 @@ GeometryConfiguration Frame - {{0, 0}, {279, 408}} + {{0, 0}, {279, 671}} GroupTreeTableConfiguration MainColumn 262 RubberWindowFrame - 727 422 704 449 0 0 1440 878 + 436 140 850 712 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -335,6 +333,8 @@ Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID @@ -352,10 +352,11 @@ _historyCapacity 0 bookmark - 8BCA6F4C2027DF6C00D92BAD + 8B79327F21F4BC16006E9731 history - 8BCA6F4B2027DF6C00D92BAD + 8B79327421F4BBE8006E9731 + 8B79327621F4BBE8006E9731 SplitCount @@ -369,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {420, 121}} + {{0, 0}, {566, 560}} RubberWindowFrame - 727 422 704 449 0 0 1440 878 + 436 140 850 712 0 0 1440 878 Module PBXNavigatorGroup Proportion - 121pt + 560pt Proportion - 282pt + 106pt Tabs @@ -394,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {420, 255}} - RubberWindowFrame - 727 422 704 449 0 0 1440 878 + {{10, 27}, {566, 79}} Module XCDetailModule @@ -450,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {526, 414}} + {{10, 27}, {566, 79}} + RubberWindowFrame + 436 140 850 712 0 0 1440 878 Module PBXBuildResultsModule @@ -459,7 +460,7 @@ Proportion - 420pt + 566pt Name @@ -478,11 +479,11 @@ TableOfContents - 8BCA6F4D2027DF6C00D92BAD + 8B79328021F4BC16006E9731 1CA23ED40692098700951B8B - 8BCA6F4E2027DF6C00D92BAD + 8B79328121F4BC16006E9731 8BD3753F2011847B00FD04C9 - 8BCA6F4F2027DF6C00D92BAD + 8B79328221F4BC16006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -655,7 +656,7 @@ StatusbarIsVisible TimeStamp - 539484012.35384703 + 569687062.55458999 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,7 +676,7 @@ /Users/christopherjohnson/Desktop/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj WindowString - 727 422 704 449 0 0 1440 878 + 436 140 850 712 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj b/plugins/MacAU/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/project.pbxproj old mode 100644 new mode 100755 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 @@ PerspectiveWidths - -1 - -1 + 896 + 896 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -307,7 +305,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 428}} + {{0, 0}, {185, 685}} PBXTopSmartGroupGIDs @@ -317,14 +315,14 @@ GeometryConfiguration Frame - {{0, 0}, {202, 446}} + {{0, 0}, {202, 703}} GroupTreeTableConfiguration MainColumn 185 RubberWindowFrame - 622 326 810 487 0 0 1440 878 + 416 108 896 744 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -352,11 +350,12 @@ _historyCapacity 0 bookmark - 8BC5D08320940F340058B257 + 8B79329521F4BD1F006E9731 history 8BEF337F1D81EAE5008B0B7F - 8BC5D08220940F340058B257 + 8B79328E21F4BD0E006E9731 + 8B79329021F4BD0E006E9731 SplitCount @@ -370,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {689, 547}} RubberWindowFrame - 622 326 810 487 0 0 1440 878 + 416 108 896 744 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 547pt Proportion - 428pt + 151pt Tabs @@ -395,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} - RubberWindowFrame - 622 326 810 487 0 0 1440 878 + {{10, 27}, {689, 124}} Module XCDetailModule @@ -451,7 +448,9 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {689, 124}} + RubberWindowFrame + 416 108 896 744 0 0 1440 878 Module PBXBuildResultsModule @@ -460,7 +459,7 @@ Proportion - 603pt + 689pt Name @@ -479,11 +478,11 @@ TableOfContents - 8BC5D08420940F340058B257 + 8B79329621F4BD1F006E9731 1CA23ED40692098700951B8B - 8BC5D08520940F340058B257 + 8B79329721F4BD1F006E9731 8BEF335B1D81E786008B0B7F - 8BC5D08620940F340058B257 + 8B79329821F4BD1F006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +635,7 @@ StatusbarIsVisible TimeStamp - 546574132.41940296 + 569687327.62574196 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +652,10 @@ 5 WindowOrderList - 8BC5D08720940F340058B257 /Users/christopherjohnson/Desktop/MacAU/Wider/Wider.xcodeproj WindowString - 622 326 810 487 0 0 1440 878 + 416 108 896 744 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 198 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -309,7 +307,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {198, 595}} PBXTopSmartGroupGIDs @@ -319,19 +317,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {215, 613}} GroupTreeTableConfiguration MainColumn - 288 + 198 RubberWindowFrame - 585 216 841 654 0 0 1440 878 + 464 204 841 654 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 215pt Dock @@ -354,11 +352,12 @@ _historyCapacity 0 bookmark - 8B2720A82173B5FC00396442 + 8B79322221F4B963006E9731 history 8BE1D69D2145372700D5F5B6 - 8BE626FE2159745A00E4E476 + 8B79321B21F4B952006E9731 + 8B79321D21F4B952006E9731 SplitCount @@ -372,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 173}} + {{0, 0}, {621, 497}} RubberWindowFrame - 585 216 841 654 0 0 1440 878 + 464 204 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 173pt + 497pt Proportion - 435pt + 111pt Tabs @@ -397,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 408}} - RubberWindowFrame - 585 216 841 654 0 0 1440 878 + {{10, 27}, {621, 84}} Module XCDetailModule @@ -453,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {621, 84}} + RubberWindowFrame + 464 204 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -462,7 +461,7 @@ Proportion - 531pt + 621pt Name @@ -481,11 +480,11 @@ TableOfContents - 8B2720A92173B5FC00396442 + 8B79322321F4B963006E9731 1CA23ED40692098700951B8B - 8B2720AA2173B5FC00396442 + 8B79322421F4B963006E9731 8BD7274A1D46E5A5000176F0 - 8B2720AB2173B5FC00396442 + 8B79322521F4B963006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -658,7 +657,7 @@ StatusbarIsVisible TimeStamp - 561231356.44708204 + 569686371.96209395 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -675,11 +674,10 @@ 5 WindowOrderList - 8B2720AC2173B5FC00396442 /Users/christopherjohnson/Desktop/MacAU/uLawDecode/uLawDecode.xcodeproj WindowString - 585 216 841 654 0 0 1440 878 + 464 204 841 654 0 0 1440 878 WindowToolsV3 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 @@ PerspectiveWidths - 841 - 841 + 899 + 899 Perspectives @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -282,7 +280,7 @@ PBXSmartGroupTreeModuleColumnWidthsKey - 288 + 194 PBXSmartGroupTreeModuleColumnsKey_v4 @@ -309,7 +307,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {288, 595}} + {{0, 0}, {194, 656}} PBXTopSmartGroupGIDs @@ -319,19 +317,19 @@ GeometryConfiguration Frame - {{0, 0}, {305, 613}} + {{0, 0}, {211, 674}} GroupTreeTableConfiguration MainColumn - 288 + 194 RubberWindowFrame - 637 204 841 654 0 0 1440 878 + 406 163 899 715 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion - 305pt + 211pt Dock @@ -342,7 +340,7 @@ PBXProjectModuleGUID 8BD7274A1D46E5A5000176F0 PBXProjectModuleLabel - Info.plist + uLawEncode.cpp PBXSplitModuleInNavigatorKey Split0 @@ -350,14 +348,16 @@ PBXProjectModuleGUID 8BD7274B1D46E5A5000176F0 PBXProjectModuleLabel - Info.plist + uLawEncode.cpp _historyCapacity 0 bookmark - 8B27203D2173B23100396442 + 8B79323921F4BA03006E9731 history - 8BE627102159750A00E4E476 + 8B79323121F4B9E7006E9731 + 8B79323221F4B9E7006E9731 + 8B79323421F4B9E7006E9731 SplitCount @@ -371,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {531, 202}} + {{0, 0}, {683, 549}} RubberWindowFrame - 637 204 841 654 0 0 1440 878 + 406 163 899 715 0 0 1440 878 Module PBXNavigatorGroup Proportion - 202pt + 549pt Proportion - 406pt + 120pt Tabs @@ -396,9 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 379}} - RubberWindowFrame - 637 204 841 654 0 0 1440 878 + {{10, 27}, {683, 93}} Module XCDetailModule @@ -452,7 +450,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {683, 93}} + RubberWindowFrame + 406 163 899 715 0 0 1440 878 Module PBXBuildResultsModule @@ -461,7 +461,7 @@ Proportion - 531pt + 683pt Name @@ -480,11 +480,11 @@ TableOfContents - 8B27203E2173B23100396442 + 8B79323A21F4BA03006E9731 1CA23ED40692098700951B8B - 8B27203F2173B23100396442 + 8B79323B21F4BA03006E9731 8BD7274A1D46E5A5000176F0 - 8B2720402173B23100396442 + 8B79323C21F4BA03006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -657,7 +657,7 @@ StatusbarIsVisible TimeStamp - 561230385.17758596 + 569686531.54984498 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,11 +674,10 @@ 5 WindowOrderList - 8B2720412173B23100396442 /Users/christopherjohnson/Desktop/MacAU/uLawEncode/uLawEncode.xcodeproj WindowString - 637 204 841 654 0 0 1440 878 + 406 163 899 715 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -386,8 +384,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 96 265 810 487 0 0 1440 878 Module XCDetailModule @@ -441,7 +437,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 96 265 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -469,11 +467,11 @@ TableOfContents - 8B79CD1820114E3100E8A187 + 8B79332C21F50C74006E9731 1CA23ED40692098700951B8B - 8B79CD1920114E3100E8A187 + 8B79332D21F50C74006E9731 8B0237581D42B1C400E1E8C8 - 8B79CD1A20114E3100E8A187 + 8B79332E21F50C74006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +624,7 @@ StatusbarIsVisible TimeStamp - 538005096.68480003 + 569707636.05000305 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +641,6 @@ 5 WindowOrderList - 8B79CD2620114E6800E8A187 /Users/christopherjohnson/Desktop/MacVST/ADClip7/ADClip7.xcodeproj WindowString 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 5 + 6 4 0 @@ -351,10 +351,11 @@ _historyCapacity 0 bookmark - 8B15DD60217BFB50007AD769 + 8B79334F21F50CB2006E9731 history - 8B15DB9A21743644007AD769 + 8B79334D21F50CB2006E9731 + 8B79334E21F50CB2006E9731 SplitCount @@ -368,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 322}} RubberWindowFrame 162 338 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 322pt Proportion - 324pt + 119pt Tabs @@ -393,7 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} + {{10, 27}, {603, 92}} RubberWindowFrame 162 338 810 487 0 0 1440 878 @@ -477,11 +478,11 @@ TableOfContents - 8B15DD52217BFB50007AD769 + 8B79335021F50CB2006E9731 1CA23ED40692098700951B8B - 8B15DD53217BFB50007AD769 + 8B79335121F50CB2006E9731 8B0237581D42B1C400E1E8C8 - 8B15DD54217BFB50007AD769 + 8B79335221F50CB2006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +635,7 @@ StatusbarIsVisible TimeStamp - 561773392.88148701 + 569707698.51112998 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +652,6 @@ 5 WindowOrderList - 8B15DD55217BFB50007AD769 /Users/christopherjohnson/Desktop/MacVST/ADT/ADT.xcodeproj WindowString 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -351,10 +349,10 @@ _historyCapacity 0 bookmark - 8B9D774E1F7FA54A007AB60F + 8B79338421F50CE8006E9731 history - 8B1949391F0F1A0500C5FAB9 + 8B9D774E1F7FA54A007AB60F SplitCount @@ -394,8 +392,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 384 225 810 487 0 0 1440 878 Module XCDetailModule @@ -449,7 +445,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 384 225 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -477,11 +475,11 @@ TableOfContents - 8B9D774F1F7FA54A007AB60F + 8B79338521F50CE8006E9731 1CA23ED40692098700951B8B - 8B9D77501F7FA54A007AB60F + 8B79338621F50CE8006E9731 8B0237581D42B1C400E1E8C8 - 8B9D77511F7FA54A007AB60F + 8B79338721F50CE8006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +632,7 @@ StatusbarIsVisible TimeStamp - 528459082.86255097 + 569707752.54956698 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +649,6 @@ 5 WindowOrderList - 8B9D77521F7FA54A007AB60F /Users/christopherjohnson/Desktop/MacVST/AQuickVoiceClip/AQuickVoiceClip.xcodeproj WindowString 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 old mode 100644 new mode 100755 index 6146ccc..de2e9ea --- 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 old mode 100644 new mode 100755 index c17455b..6330e85 --- a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ 185 RubberWindowFrame - 9 374 810 487 0 0 1440 878 + 7 375 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,10 +351,10 @@ _historyCapacity 0 bookmark - 8BCA6F6F2027E22B00D92BAD + 8B79330721F50B3A006E9731 history - 8BCA6F6E2027E22B00D92BAD + 8B7932FD21F507DF006E9731 SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 86}} RubberWindowFrame - 9 374 810 487 0 0 1440 878 + 7 375 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 86pt Proportion - 324pt + 355pt Tabs @@ -393,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} - RubberWindowFrame - 9 374 810 487 0 0 1440 878 + {{10, 27}, {603, 328}} Module XCDetailModule @@ -449,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 328}} + RubberWindowFrame + 7 375 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -477,11 +477,11 @@ TableOfContents - 8BCA6F702027E22B00D92BAD + 8B7932EA21F507C8006E9731 1CA23ED40692098700951B8B - 8BCA6F712027E22B00D92BAD + 8B7932EB21F507C8006E9731 8B0237581D42B1C400E1E8C8 - 8BCA6F722027E22B00D92BAD + 8B7932EC21F507C8006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 539484715.52542996 + 569707322.35574102 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,11 +651,11 @@ 5 WindowOrderList - 8BCA6F732027E22B00D92BAD + 8B79330821F50B3A006E9731 /Users/christopherjohnson/Desktop/MacVST/Acceleration/Acceleration.xcodeproj WindowString - 9 374 810 487 0 0 1440 878 + 7 375 810 487 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.mode1v3 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/spiadmin.pbxuser old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git "a/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" "b/plugins/MacVST/Acceleration/Acceleration.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" old mode 100644 new mode 100755 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -323,7 +321,7 @@ 185 RubberWindowFrame - 630 108 810 487 0 0 1440 878 + 172 221 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -362,7 +360,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 630 108 810 487 0 0 1440 878 + 172 221 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -386,8 +384,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 630 108 810 487 0 0 1440 878 Module XCDetailModule @@ -441,7 +437,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 172 221 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -469,11 +467,11 @@ TableOfContents - 8B9D77391F7FA524007AB60F + 8B79336521F50CD1006E9731 1CA23ED40692098700951B8B - 8B9D773A1F7FA524007AB60F + 8B79336621F50CD1006E9731 8B0237581D42B1C400E1E8C8 - 8B9D773B1F7FA524007AB60F + 8B79336721F50CD1006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +624,7 @@ StatusbarIsVisible TimeStamp - 528459044.96789801 + 569707729.79363501 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,11 +641,10 @@ 5 WindowOrderList - 8B9D773C1F7FA524007AB60F /Users/christopherjohnson/Desktop/MacVST/Air/Air.xcodeproj WindowString - 630 108 810 487 0 0 1440 878 + 172 221 810 487 0 0 1440 878 WindowToolsV3 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 @@ _historyCapacity 0 bookmark - 8BC5CF6A2093F4CF0058B257 + 8B7933A421F53550006E9731 history 8BC5CF342093F49F0058B257 - 8BC5CF692093F4CF0058B257 + 8BC5CF6A2093F4CF0058B257 SplitCount @@ -367,18 +367,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 102}} RubberWindowFrame 11 221 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 102pt Proportion - 324pt + 339pt Tabs @@ -394,7 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} + {{10, 27}, {603, 312}} RubberWindowFrame 11 221 810 487 0 0 1440 878 @@ -478,11 +478,11 @@ TableOfContents - 8BC5CF6B2093F4CF0058B257 + 8B7933A521F53550006E9731 1CA23ED40692098700951B8B - 8BC5CF6C2093F4CF0058B257 + 8B7933A621F53550006E9731 8B0237581D42B1C400E1E8C8 - 8BC5CF6D2093F4CF0058B257 + 8B7933A721F53550006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +635,7 @@ StatusbarIsVisible TimeStamp - 546567375.58979297 + 569718096.20929098 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,7 +652,7 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/AtmosphereBuss/AtmosphereBuss.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/AtmosphereBuss/AtmosphereBuss.xcodeproj WindowString 11 221 810 487 0 0 1440 878 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -298,7 +300,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 7 + 6 4 0 @@ -321,7 +323,7 @@ 185 RubberWindowFrame - 17 313 810 487 0 0 1440 878 + 630 297 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -337,7 +339,7 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - AtmosphereChannel.cpp + AtmosphereChannelProc.cpp PBXSplitModuleInNavigatorKey Split0 @@ -345,14 +347,16 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - AtmosphereChannel.cpp + AtmosphereChannelProc.cpp _historyCapacity 0 bookmark - 8BC5CF5A2093F4C50058B257 + 8B7933C421F5356E006E9731 history - 8BC5CF292093F3420058B257 + 8BFBE952209D206700E1438C + 8B904B70209D2FF5008CBAD8 + 8B904BB3209D3409008CBAD8 SplitCount @@ -366,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 51}} RubberWindowFrame - 17 313 810 487 0 0 1440 878 + 630 297 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 51pt Proportion - 324pt + 390pt Tabs @@ -391,7 +395,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} + {{10, 27}, {603, 363}} + RubberWindowFrame + 630 297 810 487 0 0 1440 878 Module XCDetailModule @@ -446,8 +452,6 @@ Frame {{10, 27}, {603, 297}} - RubberWindowFrame - 17 313 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -475,11 +479,11 @@ TableOfContents - 8BC5CECB2093E3520058B257 + 8B7933C521F5356E006E9731 1CA23ED40692098700951B8B - 8BC5CECC2093E3520058B257 + 8B7933C621F5356E006E9731 8B0237581D42B1C400E1E8C8 - 8BC5CECD2093E3520058B257 + 8B7933C721F5356E006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -632,7 +636,7 @@ StatusbarIsVisible TimeStamp - 546567365.81376398 + 569718126.81761706 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -649,10 +653,10 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/AtmosphereChannel/AtmosphereChannel.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/AtmosphereChannel/AtmosphereChannel.xcodeproj WindowString - 17 313 810 487 0 0 1440 878 + 630 297 810 487 0 0 1440 878 WindowToolsV3 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 @@ _historyCapacity 0 bookmark - 8BC5CEBA208D734A0058B257 + 8B7933E421F53595006E9731 history - 8BC5CC52208D3DCE0058B257 + 8BC5CEBA208D734A0058B257 SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame 36 294 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -393,7 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 36 294 810 487 0 0 1440 878 Module XCDetailModule @@ -448,8 +450,6 @@ Frame {{10, 27}, {603, 282}} - RubberWindowFrame - 36 294 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -477,11 +477,11 @@ TableOfContents - 8BC5CC5D208D3E220058B257 + 8B7933E521F53595006E9731 1CA23ED40692098700951B8B - 8BC5CC5E208D3E220058B257 + 8B7933E621F53595006E9731 8B0237581D42B1C400E1E8C8 - 8BC5CC5F208D3E220058B257 + 8B7933E721F53595006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 546141002.76876497 + 569718165.96792996 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,8 +651,7 @@ 5 WindowOrderList - 8BC5CD63208D5C950058B257 - /Users/christopherjohnson/Desktop/Aura/Aura.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/Aura/Aura.xcodeproj WindowString 36 294 810 487 0 0 1440 878 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 10 - 9 + 6 + 4 + 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey @@ -468,11 +469,11 @@ TableOfContents - 8BB863411F9CE8E100FC8156 + 8B79340521F535C0006E9731 1CA23ED40692098700951B8B - 8BB863421F9CE8E100FC8156 + 8B79340621F535C0006E9731 8B0237581D42B1C400E1E8C8 - 8BB863431F9CE8E100FC8156 + 8B79340721F535C0006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -625,7 +626,7 @@ StatusbarIsVisible TimeStamp - 530376929.99594998 + 569718208.35486102 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode 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 @@ OpenEditors - - - Content - - PBXProjectModuleGUID - 8B15DC882178931A007AD769 - PBXProjectModuleLabel - BassKitProc.cpp - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 8B15DC892178931A007AD769 - PBXProjectModuleLabel - BassKitProc.cpp - _historyCapacity - 0 - bookmark - 8BC3BC35217D257A0043A8B7 - history - - 8B15DC8A2178931A007AD769 - - - SplitCount - 1 - - StatusBarVisibility - - - Geometry - - Frame - {{0, 20}, {895, 734}} - PBXModuleWindowStatusBarHidden2 - - RubberWindowFrame - 41 95 895 775 0 0 1440 878 - - - + PerspectiveWidths 810 @@ -392,10 +351,10 @@ _historyCapacity 0 bookmark - 8BC3BC31217D257A0043A8B7 + 8B79342421F535E6006E9731 history - 8B15DC872178931A007AD769 + 8BC3BC31217D257A0043A8B7 SplitCount @@ -409,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 102}} RubberWindowFrame 103 354 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 102pt Proportion - 324pt + 339pt Tabs @@ -434,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} + {{10, 27}, {603, 312}} RubberWindowFrame 103 354 810 487 0 0 1440 878 @@ -518,11 +477,11 @@ TableOfContents - 8BC3BC32217D257A0043A8B7 + 8B79342521F535E6006E9731 1CA23ED40692098700951B8B - 8BC3BC33217D257A0043A8B7 + 8B79342621F535E6006E9731 8B0237581D42B1C400E1E8C8 - 8BC3BC34217D257A0043A8B7 + 8B79342721F535E6006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -675,7 +634,7 @@ StatusbarIsVisible TimeStamp - 561849722.95006502 + 569718246.60174298 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -693,7 +652,6 @@ WindowOrderList /Users/christopherjohnson/Desktop/MacVST/BassKit/BassKit.xcodeproj - 8B15DC882178931A007AD769 WindowString 103 354 810 487 0 0 1440 878 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -298,7 +300,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 5 + 6 4 0 @@ -321,7 +323,7 @@ 185 RubberWindowFrame - 129 148 810 487 0 0 1440 878 + 144 271 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -360,7 +362,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 129 148 810 487 0 0 1440 878 + 144 271 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -384,6 +386,8 @@ Frame {{10, 27}, {603, 414}} + RubberWindowFrame + 144 271 810 487 0 0 1440 878 Module XCDetailModule @@ -438,8 +442,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 129 148 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -467,11 +469,11 @@ TableOfContents - 8BBD19152105484B0015A233 + 8B79347521F5371F006E9731 1CA23ED40692098700951B8B - 8BBD19162105484B0015A233 + 8B79347621F5371F006E9731 8B0237581D42B1C400E1E8C8 - 8BBD19172105484B0015A233 + 8B79347721F5371F006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -644,7 +646,7 @@ StatusbarIsVisible TimeStamp - 553998201.254879 + 569718559.741974 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -661,10 +663,10 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/BitGlitter/BitGlitter.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/BitGlitter/BitGlitter.xcodeproj WindowString - 129 148 810 487 0 0 1440 878 + 144 271 810 487 0 0 1440 878 WindowToolsV3 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 old mode 100644 new mode 100755 index 073b4c5..5810e3f --- 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 old mode 100644 new mode 100755 index 1b7af95..b5d4e93 --- a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/christopherjohnson.perspectivev3 @@ -256,8 +256,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -306,7 +304,7 @@ PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {185, 716}} + {{0, 0}, {185, 711}} PBXTopSmartGroupGIDs @@ -316,14 +314,14 @@ GeometryConfiguration Frame - {{0, 0}, {202, 734}} + {{0, 0}, {202, 729}} GroupTreeTableConfiguration MainColumn 185 RubberWindowFrame - 434 99 645 775 0 0 1440 878 + 493 108 835 770 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -334,12 +332,14 @@ Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - audioeffectx.cpp + BitShiftGainProc.cpp PBXSplitModuleInNavigatorKey Split0 @@ -347,15 +347,16 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - audioeffectx.cpp + BitShiftGainProc.cpp _historyCapacity 0 bookmark - 8B9D77B71F7FA5E4007AB60F + 8BEF859021F67E1D00FEF113 history - 8BD42AEE1DE22B3A00869065 - 8B9D692D1F7EDCD2007AB60F + 8BEF858D21F67E1D00FEF113 + 8BEF858E21F67E1D00FEF113 + 8BEF858F21F67E1D00FEF113 SplitCount @@ -369,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {438, 312}} + {{0, 0}, {628, 592}} RubberWindowFrame - 434 99 645 775 0 0 1440 878 + 493 108 835 770 0 0 1440 878 Module PBXNavigatorGroup Proportion - 312pt + 592pt Proportion - 417pt + 132pt Tabs @@ -394,9 +395,9 @@ GeometryConfiguration Frame - {{10, 27}, {438, 390}} + {{10, 27}, {628, 105}} RubberWindowFrame - 434 99 645 775 0 0 1440 878 + 493 108 835 770 0 0 1440 878 Module XCDetailModule @@ -459,7 +460,7 @@ Proportion - 438pt + 628pt Name @@ -478,11 +479,11 @@ TableOfContents - 8B9D77B81F7FA5E4007AB60F + 8BEF859121F67E1D00FEF113 1CA23ED40692098700951B8B - 8B9D77B91F7FA5E4007AB60F + 8BEF859221F67E1D00FEF113 8B0237581D42B1C400E1E8C8 - 8B9D77BA1F7FA5E4007AB60F + 8BEF859321F67E1D00FEF113 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +636,7 @@ StatusbarIsVisible TimeStamp - 528459236.94347501 + 569802269.42069495 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +653,10 @@ 5 WindowOrderList - 8B9D77BB1F7FA5E4007AB60F /Users/christopherjohnson/Desktop/MacVST/BitShiftGain/BitShiftGain.xcodeproj WindowString - 434 99 645 775 0 0 1440 878 + 493 108 835 770 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/project.xcworkspace/contents.xcworkspacedata old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.mode1v3 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/spiadmin.pbxuser old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git "a/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" "b/plugins/MacVST/BitShiftGain/BitShiftGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" old mode 100644 new mode 100755 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 @@ _historyCapacity 0 bookmark - 8B9D778D1F7FA5B8007AB60F + 8B79344521F53610006E9731 history - 8BCA84A31EC2586000521D27 + 8B9D778D1F7FA5B8007AB60F SplitCount @@ -477,11 +477,11 @@ TableOfContents - 8B9D778E1F7FA5B8007AB60F + 8B79344621F53610006E9731 1CA23ED40692098700951B8B - 8B9D778F1F7FA5B8007AB60F + 8B79344721F53610006E9731 8B0237581D42B1C400E1E8C8 - 8B9D77901F7FA5B8007AB60F + 8B79344821F53610006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528459192.24507099 + 569718288.19823003 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,6 @@ 5 WindowOrderList - 8B9D77911F7FA5B8007AB60F /Users/christopherjohnson/Desktop/MacVST/Bite/Bite.xcodeproj WindowString 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 @@ 185 RubberWindowFrame - 567 362 810 487 0 0 1440 878 + 567 361 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,10 +351,10 @@ _historyCapacity 0 bookmark - 8BBD1973210550260015A233 + 8B7934BC21F53792006E9731 history - 8BBD1972210550260015A233 + 8BBD1973210550260015A233 SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame - 567 362 810 487 0 0 1440 878 + 567 361 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -393,9 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 297}} RubberWindowFrame - 567 362 810 487 0 0 1440 878 + 567 361 810 487 0 0 1440 878 Module XCDetailModule @@ -477,11 +477,11 @@ TableOfContents - 8BBD1974210550260015A233 + 8B7934AA21F5376C006E9731 1CA23ED40692098700951B8B - 8BBD1975210550260015A233 + 8B7934AB21F5376C006E9731 8B0237581D42B1C400E1E8C8 - 8BBD1976210550260015A233 + 8B7934AC21F5376C006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 553996326.29762602 + 569718674.56684196 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,11 +651,11 @@ 5 WindowOrderList - 8BBD1977210550260015A233 + 8B7934BD21F53792006E9731 /Users/christopherjohnson/Desktop/MacVST/BussColors4/BussColors4.xcodeproj WindowString - 567 362 810 487 0 0 1440 878 + 567 361 810 487 0 0 1440 878 WindowToolsV3 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 @@ 185 RubberWindowFrame - 630 353 810 487 0 0 1440 878 + 544 355 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,12 +351,12 @@ _historyCapacity 0 bookmark - 8B42FDE321605A6A0092969A + 8B7934D121F537BA006E9731 history 8B42FD78216053420092969A 8B42FDE121605A6A0092969A - 8B42FDE221605A6A0092969A + 8B42FDE321605A6A0092969A SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {603, 51}} RubberWindowFrame - 630 353 810 487 0 0 1440 878 + 544 355 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 51pt Proportion - 372pt + 390pt Tabs @@ -395,9 +395,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 363}} RubberWindowFrame - 630 353 810 487 0 0 1440 878 + 544 355 810 487 0 0 1440 878 Module XCDetailModule @@ -479,11 +479,11 @@ TableOfContents - 8B42FDE421605A6A0092969A + 8B7934D221F537BA006E9731 1CA23ED40692098700951B8B - 8B42FDE521605A6A0092969A + 8B7934D321F537BA006E9731 8B0237581D42B1C400E1E8C8 - 8B42FDE621605A6A0092969A + 8B7934D421F537BA006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 559962730.75885105 + 569718714.80265605 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +653,11 @@ 5 WindowOrderList - 8B42FDE721605A6A0092969A + 8B7934D521F537BA006E9731 /Users/christopherjohnson/Desktop/MacVST/ButterComp/ButterComp.xcodeproj WindowString - 630 353 810 487 0 0 1440 878 + 544 355 810 487 0 0 1440 878 WindowToolsV3 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 @@ _historyCapacity 0 bookmark - 8B42FDC5216057860092969A + 8B7934F621F537F3006E9731 history - 8B42FDC4216057860092969A + 8B42FDC5216057860092969A SplitCount @@ -392,10 +392,10 @@ _historyCapacity 0 bookmark - 8B42FDC0216057860092969A + 8B7934F221F537F3006E9731 history - 8B42FDBF216057860092969A + 8B42FDC0216057860092969A SplitCount @@ -409,18 +409,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame 138 241 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -434,7 +434,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 297}} RubberWindowFrame 138 241 810 487 0 0 1440 878 @@ -518,11 +518,11 @@ TableOfContents - 8B42FDC1216057860092969A + 8B7934F321F537F3006E9731 1CA23ED40692098700951B8B - 8B42FDC2216057860092969A + 8B7934F421F537F3006E9731 8B0237581D42B1C400E1E8C8 - 8B42FDC3216057860092969A + 8B7934F521F537F3006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -675,7 +675,7 @@ StatusbarIsVisible TimeStamp - 559961990.80278695 + 569718771.40327895 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -693,7 +693,7 @@ WindowOrderList 8B42FD99216056C30092969A - /Users/christopherjohnson/Desktop/ButterComp2/ButterComp2.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/ButterComp2/ButterComp2.xcodeproj WindowString 138 241 810 487 0 0 1440 878 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -321,7 +323,7 @@ 185 RubberWindowFrame - 21 469 688 404 0 0 1440 878 + 488 410 688 404 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -360,7 +362,7 @@ Frame {{0, 0}, {481, 0}} RubberWindowFrame - 21 469 688 404 0 0 1440 878 + 488 410 688 404 0 0 1440 878 Module PBXNavigatorGroup @@ -384,6 +386,8 @@ Frame {{10, 27}, {481, 331}} + RubberWindowFrame + 488 410 688 404 0 0 1440 878 Module XCDetailModule @@ -438,8 +442,6 @@ Frame {{10, 27}, {481, 331}} - RubberWindowFrame - 21 469 688 404 0 0 1440 878 Module PBXBuildResultsModule @@ -467,11 +469,11 @@ TableOfContents - 8B4E5763201BE4DB00B5DC2A + 8B79351E21F57085006E9731 1CA23ED40692098700951B8B - 8B4E5764201BE4DB00B5DC2A + 8B79351F21F57085006E9731 8B0237581D42B1C400E1E8C8 - 8B4E5765201BE4DB00B5DC2A + 8B79352021F57085006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -624,7 +626,7 @@ StatusbarIsVisible TimeStamp - 538701942.76463199 + 569733253.24398398 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -641,11 +643,11 @@ 5 WindowOrderList - 8B4E57C7201BF07600B5DC2A - /Users/christopherjohnson/Desktop/C5RawBuss/C5RawBuss.xcodeproj + 8B79352121F57085006E9731 + /Users/christopherjohnson/Desktop/MacVST/C5RawBuss/C5RawBuss.xcodeproj WindowString - 21 469 688 404 0 0 1440 878 + 488 410 688 404 0 0 1440 878 WindowToolsV3 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 @@ TableOfContents - 8B4E577C201BE4F400B5DC2A + 8B79353421F570A9006E9731 1CA23ED40692098700951B8B - 8B4E577D201BE4F400B5DC2A + 8B79353521F570A9006E9731 8B0237581D42B1C400E1E8C8 - 8B4E577E201BE4F400B5DC2A + 8B79353621F570A9006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 538705094.40063703 + 569733289.17203903 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,7 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/C5RawChannel/C5RawChannel.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/C5RawChannel/C5RawChannel.xcodeproj WindowString 24 126 701 419 0 0 1440 878 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 @@ 185 RubberWindowFrame - 628 335 810 487 0 0 1440 878 + 568 285 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,11 +351,11 @@ _historyCapacity 0 bookmark - 8B181AEB204C93FE00516BEE + 8B79373621F57427006E9731 history 8B181AD0204C900D00516BEE - 8B8E3C051FC2409000F10C24 + 8B181AEB204C93FE00516BEE SplitCount @@ -369,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {603, 51}} RubberWindowFrame - 628 335 810 487 0 0 1440 878 + 568 285 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 51pt Proportion - 372pt + 390pt Tabs @@ -394,9 +394,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 363}} RubberWindowFrame - 628 335 810 487 0 0 1440 878 + 568 285 810 487 0 0 1440 878 Module XCDetailModule @@ -478,11 +478,11 @@ TableOfContents - 8B181AD2204C900D00516BEE + 8B79373721F57427006E9731 1CA23ED40692098700951B8B - 8B181AD3204C900D00516BEE + 8B79373821F57427006E9731 8B0237581D42B1C400E1E8C8 - 8B181AD4204C900D00516BEE + 8B79373921F57427006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +635,7 @@ StatusbarIsVisible TimeStamp - 541889534.51824105 + 569734183.18676102 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -655,7 +655,7 @@ /Users/christopherjohnson/Desktop/MacVST/CStrip/CStrip.xcodeproj WindowString - 628 335 810 487 0 0 1440 878 + 568 285 810 487 0 0 1440 878 WindowToolsV3 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 @@ 185 RubberWindowFrame - 476 267 810 487 0 0 1440 878 + 443 261 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,11 +351,11 @@ _historyCapacity 0 bookmark - 8B9D781B1F7FA737007AB60F + 8B79355E21F570E8006E9731 history 8B4847521F6D432A007BD0D0 - 8B9D699F1F7EDD69007AB60F + 8B9D781B1F7FA737007AB60F SplitCount @@ -369,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 20}} + {{0, 0}, {603, 0}} RubberWindowFrame - 476 267 810 487 0 0 1440 878 + 443 261 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 20pt + 0pt Proportion - 421pt + 441pt Tabs @@ -394,9 +394,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 394}} + {{10, 27}, {603, 414}} RubberWindowFrame - 476 267 810 487 0 0 1440 878 + 443 261 810 487 0 0 1440 878 Module XCDetailModule @@ -478,11 +478,11 @@ TableOfContents - 8B9D781C1F7FA737007AB60F + 8B79355F21F570E8006E9731 1CA23ED40692098700951B8B - 8B9D781D1F7FA737007AB60F + 8B79356021F570E8006E9731 8B0237581D42B1C400E1E8C8 - 8B9D781E1F7FA737007AB60F + 8B79356121F570E8006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528459575.56228501 + 569733352.25392997 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +652,10 @@ 5 WindowOrderList - 8B9D781F1F7FA737007AB60F /Users/christopherjohnson/Desktop/MacVST/Capacitor/Capacitor.xcodeproj WindowString - 476 267 810 487 0 0 1440 878 + 443 261 810 487 0 0 1440 878 WindowToolsV3 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 5 4 0 @@ -323,7 +323,7 @@ 185 RubberWindowFrame - 18 291 810 487 0 0 1440 878 + 475 316 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -339,7 +339,7 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - Channel6Proc.cpp + Channel6.cpp PBXSplitModuleInNavigatorKey Split0 @@ -347,15 +347,16 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - Channel6Proc.cpp + Channel6.cpp _historyCapacity 0 bookmark - 8BBD195F21054F810015A233 + 8BEF857221F67D4F00FEF113 history 8BBD195D21054F810015A233 - 8BBD195E21054F810015A233 + 8BEF857021F67D4F00FEF113 + 8BEF857121F67D4F00FEF113 SplitCount @@ -369,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 353}} RubberWindowFrame - 18 291 810 487 0 0 1440 878 + 475 316 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 353pt Proportion - 324pt + 88pt Tabs @@ -394,9 +395,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} + {{10, 27}, {603, 61}} RubberWindowFrame - 18 291 810 487 0 0 1440 878 + 475 316 810 487 0 0 1440 878 Module XCDetailModule @@ -478,11 +479,11 @@ TableOfContents - 8BBD196021054F810015A233 + 8BEF857321F67D4F00FEF113 1CA23ED40692098700951B8B - 8BBD196121054F810015A233 + 8BEF857421F67D4F00FEF113 8B0237581D42B1C400E1E8C8 - 8BBD196221054F810015A233 + 8BEF857521F67D4F00FEF113 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +636,7 @@ StatusbarIsVisible TimeStamp - 553996161.14167202 + 569802063.73693204 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +653,10 @@ 5 WindowOrderList - 8BBD196321054F810015A233 /Users/christopherjohnson/Desktop/MacVST/Channel6/Channel6.xcodeproj WindowString - 18 291 810 487 0 0 1440 878 + 475 316 810 487 0 0 1440 878 WindowToolsV3 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 7 4 0 @@ -339,7 +339,7 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - Chorus.h + Chorus.cpp PBXSplitModuleInNavigatorKey Split0 @@ -347,15 +347,16 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - Chorus.h + Chorus.cpp _historyCapacity 0 bookmark - 8B9D785D1F7FA7A5007AB60F + 8B7935F121F5721C006E9731 history - 8B4847DF1F6D5369007BD0D0 - 8B9D69E11F7EDDC0007AB60F + 8B7935DD21F571DE006E9731 + 8B7935EF21F5721C006E9731 + 8B7935F021F5721C006E9731 SplitCount @@ -369,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 102}} + {{0, 0}, {603, 300}} RubberWindowFrame 628 274 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 102pt + 300pt Proportion - 339pt + 141pt Tabs @@ -394,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 312}} - RubberWindowFrame - 628 274 810 487 0 0 1440 878 + {{10, 27}, {603, 114}} Module XCDetailModule @@ -450,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} + {{10, 27}, {603, 114}} + RubberWindowFrame + 628 274 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +479,11 @@ TableOfContents - 8B9D785E1F7FA7A5007AB60F + 8B7935F221F5721C006E9731 1CA23ED40692098700951B8B - 8B9D785F1F7FA7A5007AB60F + 8B7935F321F5721C006E9731 8B0237581D42B1C400E1E8C8 - 8B9D78601F7FA7A5007AB60F + 8B7935F421F5721C006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -655,7 +656,7 @@ StatusbarIsVisible TimeStamp - 528459685.88356102 + 569733660.57449198 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -672,7 +673,6 @@ 5 WindowOrderList - 8B9D78611F7FA7A5007AB60F /Users/christopherjohnson/Desktop/MacVST/Chorus/Chorus.xcodeproj WindowString 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 7 4 0 @@ -339,13 +339,23 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - <No Editor> + ChorusEnsemble.cpp PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 + PBXProjectModuleLabel + ChorusEnsemble.cpp + _historyCapacity + 0 + bookmark + 8B79361521F57279006E9731 + history + + 8B79361421F57279006E9731 + SplitCount 1 @@ -358,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 0}} + {{0, 0}, {603, 132}} RubberWindowFrame 401 330 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 0pt + 132pt Proportion - 441pt + 309pt Tabs @@ -384,8 +394,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 401 330 810 487 0 0 1440 878 Module XCDetailModule @@ -439,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 282}} + RubberWindowFrame + 401 330 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -467,11 +477,11 @@ TableOfContents - 8B9D787D1F7FA7CE007AB60F + 8B79361621F57279006E9731 1CA23ED40692098700951B8B - 8B9D787E1F7FA7CE007AB60F + 8B79361721F57279006E9731 8B0237581D42B1C400E1E8C8 - 8B9D787F1F7FA7CE007AB60F + 8B79361821F57279006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -644,7 +654,7 @@ StatusbarIsVisible TimeStamp - 528459726.78873903 + 569733753.83205295 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -661,7 +671,6 @@ 5 WindowOrderList - 8B9D78801F7FA7CE007AB60F /Users/christopherjohnson/Desktop/MacVST/ChorusEnsemble/ChorusEnsemble.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8B9D78921F7FA7F4007AB60F + 8B79362B21F572A0006E9731 history - 8B9D6A261F7EDE28007AB60F + 8B9D78921F7FA7F4007AB60F SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 32}} + {{0, 0}, {603, 13}} RubberWindowFrame 196 332 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 32pt + 13pt Proportion - 409pt + 428pt Tabs @@ -393,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} + {{10, 27}, {603, 401}} RubberWindowFrame 196 332 810 487 0 0 1440 878 @@ -477,11 +477,11 @@ TableOfContents - 8B9D78931F7FA7F4007AB60F + 8B79362C21F572A0006E9731 1CA23ED40692098700951B8B - 8B9D78941F7FA7F4007AB60F + 8B79362D21F572A0006E9731 8B0237581D42B1C400E1E8C8 - 8B9D78951F7FA7F4007AB60F + 8B79362E21F572A0006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528459764.02394903 + 569733792.81656504 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,6 @@ 5 WindowOrderList - 8B9D78961F7FA7F4007AB60F /Users/christopherjohnson/Desktop/MacVST/ClipOnly/ClipOnly.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8B9D78B21F7FA812007AB60F + 8B79364B21F572C9006E9731 history 8BB1EB551F76F0C500413848 - 8B9D6A9F1F7EDF5C007AB60F + 8B9D78B21F7FA812007AB60F SplitCount @@ -369,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 292}} + {{0, 0}, {603, 285}} RubberWindowFrame 585 260 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 292pt + 285pt Proportion - 149pt + 156pt Tabs @@ -394,7 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 122}} + {{10, 27}, {603, 129}} RubberWindowFrame 585 260 810 487 0 0 1440 878 @@ -478,11 +478,11 @@ TableOfContents - 8B9D78B31F7FA812007AB60F + 8B79364C21F572C9006E9731 1CA23ED40692098700951B8B - 8B9D78B41F7FA812007AB60F + 8B79364D21F572C9006E9731 8B0237581D42B1C400E1E8C8 - 8B9D78B51F7FA812007AB60F + 8B79364E21F572C9006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528459794.51351899 + 569733833.14621103 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,7 +652,6 @@ 5 WindowOrderList - 8B9D78B61F7FA812007AB60F /Users/christopherjohnson/Desktop/MacVST/Console4Buss/Console4Buss.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8B9D78D21F7FA82E007AB60F + 8B79366D21F57303006E9731 history 8B6F9BAB1D4A8F7100B449D5 8B6F9BAC1D4A8F7100B449D5 - 8B9D6AB31F7EDF7E007AB60F + 8B9D78D21F7FA82E007AB60F SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 86}} + {{0, 0}, {603, 268}} RubberWindowFrame 592 288 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 86pt + 268pt Proportion - 355pt + 173pt Tabs @@ -395,7 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} + {{10, 27}, {603, 146}} RubberWindowFrame 592 288 810 487 0 0 1440 878 @@ -479,11 +479,11 @@ TableOfContents - 8B9D78D31F7FA82E007AB60F + 8B79366E21F57303006E9731 1CA23ED40692098700951B8B - 8B9D78D41F7FA82E007AB60F + 8B79366F21F57303006E9731 8B0237581D42B1C400E1E8C8 - 8B9D78D51F7FA82E007AB60F + 8B79367021F57303006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 528459822.224684 + 569733891.37075198 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,7 +653,6 @@ 5 WindowOrderList - 8B9D78D61F7FA82E007AB60F /Users/christopherjohnson/Desktop/MacVST/Console4Channel/Console4Channel.xcodeproj WindowString 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 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - Gain.h + Console5BussProc.cpp PBXSplitModuleInNavigatorKey Split0 @@ -347,7 +347,15 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - Gain.h + Console5BussProc.cpp + _historyCapacity + 0 + bookmark + 8B79369A21F5736A006E9731 + history + + 8B79369921F5736A006E9731 + SplitCount 1 @@ -360,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 0}} + {{0, 0}, {603, 358}} RubberWindowFrame 570 328 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 0pt + 358pt Proportion - 441pt + 83pt Tabs @@ -385,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 56}} RubberWindowFrame 570 328 810 487 0 0 1440 878 @@ -469,11 +477,11 @@ TableOfContents - 8B4D27CB2002C6770051360A + 8B79369B21F5736A006E9731 1CA23ED40692098700951B8B - 8B4D27CC2002C6770051360A + 8B79369C21F5736A006E9731 8B0237581D42B1C400E1E8C8 - 8B4D27CD2002C6770051360A + 8B79369D21F5736A006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +634,7 @@ StatusbarIsVisible TimeStamp - 537052791.12328696 + 569733994.75000596 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +651,6 @@ 5 WindowOrderList - 8B4D27CE2002C6770051360A /Users/christopherjohnson/Desktop/MacVST/Console5Buss/Console5Buss.xcodeproj WindowString 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 @@ 185 RubberWindowFrame - 20 312 810 487 0 0 1440 878 + 373 235 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,10 +351,10 @@ _historyCapacity 0 bookmark - 8B4D27492002BEEF0051360A + 8B7936B021F5738D006E9731 history - 8B4D27482002BEEF0051360A + 8B4D27492002BEEF0051360A SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame - 20 312 810 487 0 0 1440 878 + 373 235 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -393,7 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 373 235 810 487 0 0 1440 878 Module XCDetailModule @@ -448,8 +450,6 @@ Frame {{10, 27}, {603, 282}} - RubberWindowFrame - 20 312 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -477,11 +477,11 @@ TableOfContents - 8B4D274A2002BEEF0051360A + 8B7936B121F5738D006E9731 1CA23ED40692098700951B8B - 8B4D274B2002BEEF0051360A + 8B7936B221F5738D006E9731 8B0237581D42B1C400E1E8C8 - 8B4D274C2002BEEF0051360A + 8B7936B321F5738D006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 537050863.33069801 + 569734029.92668998 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,10 +651,10 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/Console5Channel/Console5Channel.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/Console5Channel/Console5Channel.xcodeproj WindowString - 20 312 810 487 0 0 1440 878 + 373 235 810 487 0 0 1440 878 WindowToolsV3 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 @@ 185 RubberWindowFrame - 634 254 810 487 0 0 1440 878 + 630 254 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -362,7 +362,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 634 254 810 487 0 0 1440 878 + 630 254 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -387,7 +387,7 @@ Frame {{10, 27}, {603, 414}} RubberWindowFrame - 634 254 810 487 0 0 1440 878 + 630 254 810 487 0 0 1440 878 Module XCDetailModule @@ -469,11 +469,11 @@ TableOfContents - 8B4D275E2002BF6F0051360A + 8B7936D021F573AD006E9731 1CA23ED40692098700951B8B - 8B4D275F2002BF6F0051360A + 8B7936D121F573AD006E9731 8B0237581D42B1C400E1E8C8 - 8B4D27602002BF6F0051360A + 8B7936D221F573AD006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 537050991.40073204 + 569734061.13556397 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,10 +643,10 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/Console5DarkCh/Console5DarkCh.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/Console5DarkCh/Console5DarkCh.xcodeproj WindowString - 634 254 810 487 0 0 1440 878 + 630 254 810 487 0 0 1440 878 WindowToolsV3 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey + 6 + 4 0 @@ -321,7 +323,7 @@ 185 RubberWindowFrame - 6 301 810 487 0 0 1440 878 + 328 253 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -337,7 +339,7 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - Gain.h + CrunchyGrooveWearProc.cpp PBXSplitModuleInNavigatorKey Split0 @@ -345,7 +347,15 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - Gain.h + CrunchyGrooveWearProc.cpp + _historyCapacity + 0 + bookmark + 8B79370121F573DE006E9731 + history + + 8B79370021F573DE006E9731 + SplitCount 1 @@ -358,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 0}} + {{0, 0}, {603, 132}} RubberWindowFrame - 6 301 810 487 0 0 1440 878 + 328 253 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 0pt + 132pt Proportion - 441pt + 309pt Tabs @@ -383,9 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 282}} RubberWindowFrame - 6 301 810 487 0 0 1440 878 + 328 253 810 487 0 0 1440 878 Module XCDetailModule @@ -467,11 +477,11 @@ TableOfContents - 8B181BE8204CA7DE00516BEE + 8B79370221F573DE006E9731 1CA23ED40692098700951B8B - 8B181BE9204CA7DE00516BEE + 8B79370321F573DE006E9731 8B0237581D42B1C400E1E8C8 - 8B181BEA204CA7DE00516BEE + 8B79370421F573DE006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -624,7 +634,7 @@ StatusbarIsVisible TimeStamp - 541894622.72385299 + 569734110.80127895 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -641,10 +651,10 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/CrunchyGrooveWear/CrunchyGrooveWear.xcodeproj WindowString - 6 301 810 487 0 0 1440 878 + 328 253 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -321,7 +323,7 @@ 185 RubberWindowFrame - 17 376 810 487 0 0 1440 878 + 354 282 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -358,18 +360,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 102}} + {{0, 0}, {603, 86}} RubberWindowFrame - 17 376 810 487 0 0 1440 878 + 354 282 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 102pt + 86pt Proportion - 339pt + 355pt Tabs @@ -383,7 +385,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 312}} + {{10, 27}, {603, 328}} + RubberWindowFrame + 354 282 810 487 0 0 1440 878 Module XCDetailModule @@ -438,8 +442,6 @@ Frame {{10, 27}, {603, 312}} - RubberWindowFrame - 17 376 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -467,11 +469,11 @@ TableOfContents - 8BBB351421C4819F00825986 + 8B79371721F57400006E9731 1CA23ED40692098700951B8B - 8BBB351521C4819F00825986 + 8B79371821F57400006E9731 8B0237581D42B1C400E1E8C8 - 8BBB351621C4819F00825986 + 8B79371921F57400006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -624,7 +626,7 @@ StatusbarIsVisible TimeStamp - 566526367.832932 + 569734144.20878696 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -641,11 +643,10 @@ 5 WindowOrderList - 8BBB351721C4819F00825986 - /Users/christopherjohnson/Desktop/Crystal/Crystal.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/Crystal/Crystal.xcodeproj WindowString - 17 376 810 487 0 0 1440 878 + 354 282 810 487 0 0 1440 878 WindowToolsV3 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 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 116 319 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -385,7 +385,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} + {{10, 27}, {603, 414}} RubberWindowFrame 116 319 810 487 0 0 1440 878 @@ -469,11 +469,11 @@ TableOfContents - 8B9D78FC1F7FA875007AB60F + 8B79375621F5744A006E9731 1CA23ED40692098700951B8B - 8B9D78FD1F7FA875007AB60F + 8B79375721F5744A006E9731 8B0237581D42B1C400E1E8C8 - 8B9D78FE1F7FA875007AB60F + 8B79375821F5744A006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528459893.06026101 + 569734218.48310196 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,6 @@ 5 WindowOrderList - 8B9D78FF1F7FA875007AB60F /Users/christopherjohnson/Desktop/MacVST/DCVoltage/DCVoltage.xcodeproj WindowString 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 5 + 6 4 0 @@ -323,7 +323,7 @@ 185 RubberWindowFrame - 12 385 810 487 0 0 1440 878 + 304 315 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -339,7 +339,7 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - Gain.h + DeEssProc.cpp PBXSplitModuleInNavigatorKey Split0 @@ -347,7 +347,15 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - Gain.h + DeEssProc.cpp + _historyCapacity + 0 + bookmark + 8B79377421F5746E006E9731 + history + + 8B79377321F5746E006E9731 + SplitCount 1 @@ -360,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 0}} + {{0, 0}, {603, 319}} RubberWindowFrame - 12 385 810 487 0 0 1440 878 + 304 315 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 0pt + 319pt Proportion - 441pt + 122pt Tabs @@ -385,9 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 95}} RubberWindowFrame - 12 385 810 487 0 0 1440 878 + 304 315 810 487 0 0 1440 878 Module XCDetailModule @@ -469,11 +477,11 @@ TableOfContents - 8B15DCFB217AA408007AD769 + 8B79377521F5746E006E9731 1CA23ED40692098700951B8B - 8B15DCFC217AA408007AD769 + 8B79377621F5746E006E9731 8B0237581D42B1C400E1E8C8 - 8B15DCFD217AA408007AD769 + 8B79377721F5746E006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +634,7 @@ StatusbarIsVisible TimeStamp - 561685512.74774003 + 569734254.77218902 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,12 +651,10 @@ 5 WindowOrderList - 8B15DCFE217AA408007AD769 - 8B15DCFF217AA408007AD769 - /Users/christopherjohnson/Desktop/DeEss/DeEss.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/DeEss/DeEss.xcodeproj WindowString - 12 385 810 487 0 0 1440 878 + 304 315 810 487 0 0 1440 878 WindowToolsV3 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 @@ 185 RubberWindowFrame - 10 338 810 487 0 0 1440 878 + 396 274 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -339,7 +339,7 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - audioeffectx.cpp + DeRez.cpp PBXSplitModuleInNavigatorKey Split0 @@ -347,15 +347,16 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - audioeffectx.cpp + DeRez.cpp _historyCapacity 0 bookmark - 8BB8B7932103BA6200751000 + 8B7937B821F574F6006E9731 history 8BB8B70521039BF400751000 - 8BB8B70721039BF400751000 + 8B7932CA21F4FB37006E9731 + 8B7932CC21F4FB37006E9731 SplitCount @@ -369,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 102}} + {{0, 0}, {603, 69}} RubberWindowFrame - 10 338 810 487 0 0 1440 878 + 396 274 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 102pt + 69pt Proportion - 339pt + 372pt Tabs @@ -394,9 +395,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 312}} + {{10, 27}, {603, 345}} RubberWindowFrame - 10 338 810 487 0 0 1440 878 + 396 274 810 487 0 0 1440 878 Module XCDetailModule @@ -478,11 +479,11 @@ TableOfContents - 8BB8B7942103BA6200751000 + 8B7937B921F574F6006E9731 1CA23ED40692098700951B8B - 8BB8B7952103BA6200751000 + 8B7937BA21F574F6006E9731 8B0237581D42B1C400E1E8C8 - 8BB8B7962103BA6200751000 + 8B7937BB21F574F6006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +636,7 @@ StatusbarIsVisible TimeStamp - 553892450.74727702 + 569734390.87989402 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,11 +653,10 @@ 5 WindowOrderList - 8BB8B7972103BA6200751000 /Users/christopherjohnson/Desktop/MacVST/DeRez/DeRez.xcodeproj WindowString - 10 338 810 487 0 0 1440 878 + 396 274 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -300,7 +298,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 7 4 0 @@ -323,7 +321,7 @@ 185 RubberWindowFrame - 612 109 810 487 0 0 1440 878 + 374 322 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -334,12 +332,14 @@ Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - + Density.h PBXSplitModuleInNavigatorKey Split0 @@ -347,7 +347,17 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - + Density.h + _historyCapacity + 0 + bookmark + 8B7937A221F574D1006E9731 + history + + 8B79379F21F574D1006E9731 + 8B7937A021F574D1006E9731 + 8B7937A121F574D1006E9731 + SplitCount 1 @@ -360,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 0}} + {{0, 0}, {603, 331}} RubberWindowFrame - 612 109 810 487 0 0 1440 878 + 374 322 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 0pt + 331pt Proportion - 441pt + 110pt Tabs @@ -386,8 +396,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 612 109 810 487 0 0 1440 878 Module XCDetailModule @@ -441,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} + {{10, 27}, {603, 83}} + RubberWindowFrame + 374 322 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -469,11 +479,11 @@ TableOfContents - 8B9D79111F7FA891007AB60F + 8B7937A321F574D1006E9731 1CA23ED40692098700951B8B - 8B9D79121F7FA891007AB60F + 8B7937A421F574D1006E9731 8B0237581D42B1C400E1E8C8 - 8B9D79131F7FA891007AB60F + 8B7937A521F574D1006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +636,7 @@ StatusbarIsVisible TimeStamp - 528459921.00240701 + 569734353.80657697 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,11 +653,10 @@ 5 WindowOrderList - 8B9D79141F7FA891007AB60F /Users/christopherjohnson/Desktop/MacVST/Density/Density.xcodeproj WindowString - 612 109 810 487 0 0 1440 878 + 374 322 810 487 0 0 1440 878 WindowToolsV3 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 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 430 335 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -385,7 +385,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} + {{10, 27}, {603, 414}} RubberWindowFrame 430 335 810 487 0 0 1440 878 @@ -469,11 +469,11 @@ TableOfContents - 8B9D793A1F7FA950007AB60F + 8B7937D821F57520006E9731 1CA23ED40692098700951B8B - 8B9D793B1F7FA950007AB60F + 8B7937D921F57520006E9731 8B0237581D42B1C400E1E8C8 - 8B9D793C1F7FA950007AB60F + 8B7937DA21F57520006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528460112.51118302 + 569734432.71270597 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,6 @@ 5 WindowOrderList - 8B9D793D1F7FA950007AB60F /Users/christopherjohnson/Desktop/MacVST/Desk/Desk.xcodeproj WindowString 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 @@ TableOfContents - 8B9D794F1F7FA972007AB60F + 8B7937F721F5753E006E9731 1CA23ED40692098700951B8B - 8B9D79501F7FA972007AB60F + 8B7937F821F5753E006E9731 8B0237581D42B1C400E1E8C8 - 8B9D79511F7FA972007AB60F + 8B7937F921F5753E006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528460146.15257502 + 569734462.79320705 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,6 @@ 5 WindowOrderList - 8B9D79521F7FA972007AB60F /Users/christopherjohnson/Desktop/MacVST/Desk4/Desk4.xcodeproj WindowString 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 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - Distance.h + DistanceProc.cpp PBXSplitModuleInNavigatorKey Split0 @@ -347,15 +347,17 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - Distance.h + DistanceProc.cpp _historyCapacity 0 bookmark - 8B9D79701F7FA98F007AB60F + 8B79381921F5756D006E9731 history 8BD79BE91DB421CA006FFA16 - 8B9D6B631F7EE05F007AB60F + 8B79381621F5756D006E9731 + 8B79381721F5756D006E9731 + 8B79381821F5756D006E9731 SplitCount @@ -369,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 86}} + {{0, 0}, {603, 281}} RubberWindowFrame 518 304 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 86pt + 281pt Proportion - 355pt + 160pt Tabs @@ -394,7 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} + {{10, 27}, {603, 133}} RubberWindowFrame 518 304 810 487 0 0 1440 878 @@ -478,11 +480,11 @@ TableOfContents - 8B9D79711F7FA98F007AB60F + 8B79381A21F5756D006E9731 1CA23ED40692098700951B8B - 8B9D79721F7FA98F007AB60F + 8B79381B21F5756D006E9731 8B0237581D42B1C400E1E8C8 - 8B9D79731F7FA98F007AB60F + 8B79381C21F5756D006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +637,7 @@ StatusbarIsVisible TimeStamp - 528460175.35196102 + 569734509.28240097 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,7 +654,6 @@ 5 WindowOrderList - 8B9D79741F7FA98F007AB60F /Users/christopherjohnson/Desktop/MacVST/Distance/Distance.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8B7E3D5B20A6501D00482CB5 + 8B79383D21F57592006E9731 history - 8B7E3D4B20A6500200482CB5 + 8B7E3D5B20A6501D00482CB5 SplitCount @@ -297,6 +297,8 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -390,10 +392,10 @@ _historyCapacity 0 bookmark - 8B7E3D5520A6501D00482CB5 + 8B79383921F57592006E9731 history - 8B7E3D5420A6501D00482CB5 + 8B7E3D5520A6501D00482CB5 SplitCount @@ -407,18 +409,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame 20 288 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -432,7 +434,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 20 288 810 487 0 0 1440 878 Module XCDetailModule @@ -487,8 +491,6 @@ Frame {{10, 27}, {603, 282}} - RubberWindowFrame - 20 288 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -516,11 +518,11 @@ TableOfContents - 8B7E3D5620A6501D00482CB5 + 8B79383A21F57592006E9731 1CA23ED40692098700951B8B - 8B7E3D5720A6501D00482CB5 + 8B79383B21F57592006E9731 8B0237581D42B1C400E1E8C8 - 8B7E3D5820A6501D00482CB5 + 8B79383C21F57592006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -673,7 +675,7 @@ StatusbarIsVisible TimeStamp - 547770397.97323096 + 569734546.43575704 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -691,7 +693,7 @@ WindowOrderList 8B7E3D5920A6501D00482CB5 - /Users/christopherjohnson/Desktop/Distance2/Distance2.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/Distance2/Distance2.xcodeproj WindowString 20 288 810 487 0 0 1440 878 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 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + AIODescriptionKey + DockingSystemVisible + + Extension + perspectivev3 + FavBarConfig + + PBXProjectModuleGUID + 8B02375D1D42B1C400E1E8C8 + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.defaultV3 + MajorVersion + 34 + MinorVersion + 0 + Name + All-In-One + Notifications + + + XCObserverAutoDisconnectKey + + XCObserverDefintionKey + + PBXStatusErrorsKey + 0 + + XCObserverFactoryKey + XCPerspectivesSpecificationIdentifier + XCObserverGUIDKey + XCObserverProjectIdentifier + XCObserverNotificationKey + PBXStatusBuildStateMessageNotification + XCObserverTargetKey + XCMainBuildResultsModuleGUID + XCObserverTriggerKey + awakenModuleWithObserver: + XCObserverValidationKey + + PBXStatusErrorsKey + 2 + + + + OpenEditors + + PerspectiveWidths + + 810 + 810 + + Perspectives + + + ChosenToolbarItems + + XCToolbarPerspectiveControl + NSToolbarSeparatorItem + active-combo-popup + action + NSToolbarFlexibleSpaceItem + debugger-enable-breakpoints + build-and-go + com.apple.ide.PBXToolbarStopButton + get-info + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.project + IsVertical + + Layout + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CA23ED40692098700951B8B + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 185 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 089C166AFE841209C02AAC07 + 08FB77ADFE841716C02AAC07 + 1C37FBAC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 6 + 4 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {185, 428}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + + GeometryConfiguration + + Frame + {{0, 0}, {202, 446}} + GroupTreeTableConfiguration + + MainColumn + 185 + + RubberWindowFrame + 291 285 810 487 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 202pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 8B0237581D42B1C400E1E8C8 + PBXProjectModuleLabel + DitherFloatProc.cpp + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 8B0237591D42B1C400E1E8C8 + PBXProjectModuleLabel + DitherFloatProc.cpp + _historyCapacity + 0 + bookmark + 8BEF85B621F6802400FEF113 + history + + 8BEF85B121F6801400FEF113 + + + SplitCount + 1 + + StatusBarVisibility + + XCSharingToken + com.apple.Xcode.CommonNavigatorGroupSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {603, 132}} + RubberWindowFrame + 291 285 810 487 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 132pt + + + Proportion + 309pt + Tabs + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA23EDF0692099D00951B8B + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{10, 27}, {603, 414}} + + Module + XCDetailModule + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA23EE00692099D00951B8B + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{10, 31}, {603, 297}} + + Module + PBXProjectFindModule + + + ContentConfiguration + + PBXCVSModuleFilterTypeKey + 1032 + PBXProjectModuleGUID + 1CA23EE10692099D00951B8B + PBXProjectModuleLabel + SCM Results + + GeometryConfiguration + + Frame + {{10, 31}, {603, 297}} + + Module + PBXCVSModule + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + XCBuildResultsTrigger_Collapse + 1023 + XCBuildResultsTrigger_Open + 1012 + + GeometryConfiguration + + Frame + {{10, 27}, {603, 282}} + RubberWindowFrame + 291 285 810 487 0 0 1440 878 + + Module + PBXBuildResultsModule + + + + + Proportion + 603pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDockableTabModule + XCDetailModule + PBXProjectFindModule + PBXCVSModule + PBXBuildResultsModule + + TableOfContents + + 8BEF853D21F67C3100FEF113 + 1CA23ED40692098700951B8B + 8BEF853E21F67C3100FEF113 + 8B0237581D42B1C400E1E8C8 + 8BEF853F21F67C3100FEF113 + 1CA23EDF0692099D00951B8B + 1CA23EE00692099D00951B8B + 1CA23EE10692099D00951B8B + XCMainBuildResultsModuleGUID + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ChosenToolbarItems + + XCToolbarPerspectiveControl + NSToolbarSeparatorItem + active-combo-popup + NSToolbarFlexibleSpaceItem + debugger-enable-breakpoints + build-and-go + com.apple.ide.PBXToolbarStopButton + debugger-restart-executable + debugger-pause + debugger-step-over + debugger-step-into + debugger-step-out + NSToolbarFlexibleSpaceItem + servicesModulebreakpoints + debugger-show-console-window + + ControllerClassBaseName + PBXDebugSessionModule + IconName + DebugTabIcon + Identifier + perspective.debug + IsVertical + 1 + Layout + + + ContentConfiguration + + PBXProjectModuleGUID + 1CCC7628064C1048000F2A68 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {810, 0}} + + Module + PBXDebugCLIModule + Proportion + 0% + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {395, 213}} + {{395, 0}, {415, 213}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {810, 213}} + {{0, 213}, {810, 225}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1CCC7629064C1048000F2A68 + PBXProjectModuleLabel + Debug + + GeometryConfiguration + + DebugConsoleDrawerSize + {100, 120} + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 7}, {810, 438}} + + Module + PBXDebugSessionModule + Proportion + 443pt + + + Name + Debug + ServiceClasses + + XCModuleDock + XCModuleDock + PBXDebugCLIModule + PBXDebugSessionModule + XCConsole + + TableOfContents + + 1CC8E6A5069209BD00BB180A + 1CC8E6A6069209BD00BB180A + 1CCC7628064C1048000F2A68 + 1CCC7629064C1048000F2A68 + 1CC8E6A7069209BD00BB180A + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecification.xcperspec' + StatusbarIsVisible + + TimeStamp + 569802788.52883804 + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 2 + Type + Perspectives + UpdateMessage + + WindowJustification + 5 + WindowOrderList + + /Users/christopherjohnson/Desktop/DitherFloat/DitherFloat.xcodeproj + + WindowString + 291 285 810 487 0 0 1440 878 + WindowToolsV3 + + + Identifier + windowTool.debugger + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {317, 164}} + {{317, 0}, {377, 164}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {694, 164}} + {{0, 164}, {694, 216}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleDrawerSize + {100, 120} + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {694, 380}} + RubberWindowFrame + 321 238 694 422 0 0 1440 878 + + Module + PBXDebugSessionModule + Proportion + 100% + + + Proportion + 100% + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CD10A99069EF8BA00B06720 + 1C0AD2AB069F1E9B00FABCE6 + 1C162984064C10D400B95A72 + 1C0AD2AC069F1E9B00FABCE6 + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 321 238 694 422 0 0 1440 878 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + 0 + + + Identifier + windowTool.build + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD052900623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {500, 215}} + RubberWindowFrame + 192 257 500 500 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 218pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + + GeometryConfiguration + + Frame + {{0, 222}, {500, 236}} + RubberWindowFrame + 192 257 500 500 0 0 1280 1002 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 458pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAA5065D492600B07095 + 1C78EAA6065D492600B07095 + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowString + 192 257 500 500 0 0 1280 1002 + + + Identifier + windowTool.find + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD0528D0623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {781, 167}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 50% + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{8, 0}, {773, 254}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 50% + + + Proportion + 428pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D57069F1CE1000CFCEE + 1C530D58069F1CE1000CFCEE + 1C530D59069F1CE1000CFCEE + 1CDD528C0622207200134675 + 1C530D5A069F1CE1000CFCEE + 1CE0B1FE06471DED0097A5F4 + 1CD0528E0623707200166675 + + WindowString + 62 385 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + Identifier + windowTool.debuggerConsole + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {700, 358}} + RubberWindowFrame + 149 87 700 400 0 0 1440 878 + + Module + PBXDebugCLIModule + Proportion + 358pt + + + Proportion + 358pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D5B069F1CE1000CFCEE + 1C530D5C069F1CE1000CFCEE + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 149 87 440 400 0 0 1440 878 + WindowToolGUID + 1C530D5B069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.09500122070312 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scmV3 + WindowString + 743 379 452 308 0 0 1280 1002 + + + Identifier + windowTool.breakpoints + IsVertical + 0 + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 0 + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CDDB66807F98D9800BB5817 + 1CDDB66907F98D9800BB5817 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 315 424 744 409 0 0 1440 878 + WindowToolGUID + 1CDDB66807F98D9800BB5817 + WindowToolIsVisible + 1 + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 166pt + + + Proportion + 166pt + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.projectFormatConflicts + IsVertical + + Layout + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 8BCAE52E1D49920D0047D4BD + + GeometryConfiguration + + Frame + {{0, 0}, {472, 302}} + RubberWindowFrame + 569 378 472 322 0 0 1440 878 + + Module + XCProjectFormatConflictsModule + Proportion + 302pt + + + Proportion + 302pt + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + + TableOfContents + + 8BCAE52F1D49920D0047D4BD + 8BCAE5301D49920D0047D4BD + 8BCAE52E1D49920D0047D4BD + + WindowContentMinSize + 450 300 + WindowString + 569 378 472 322 0 0 1440 878 + WindowToolGUID + 8BCAE52F1D49920D0047D4BD + WindowToolIsVisible + + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {369, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {616, 353}} + MembersFrame + {{0, 105}, {369, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 94 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 597 125 616 374 0 0 1280 1002 + + Module + PBXClassBrowserModule + Proportion + 354pt + + + Proportion + 354pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C78EABA065D492600B07095 + 1C78EABB065D492600B07095 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 597 125 616 374 0 0 1280 1002 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + 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 = ""; }; + 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 = ""; }; + 2434720A098313350063BBF1 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; + 245463B80991757100464AD3 /* DitherFloat.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DitherFloat.h; path = source/DitherFloat.h; sourceTree = ""; }; + 24A200000F90D1DD003BB5A7 /* bmp10014.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10014.bmp; sourceTree = ""; }; + 24A200010F90D1DD003BB5A7 /* bmp10015.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10015.bmp; sourceTree = ""; }; + 24A200020F90D1DD003BB5A7 /* bmp10016.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10016.bmp; sourceTree = ""; }; + 24A200040F90D1DD003BB5A7 /* controlsgui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = controlsgui.cpp; sourceTree = ""; }; + 24A200050F90D1DD003BB5A7 /* controlsgui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = controlsgui.h; sourceTree = ""; }; + 24A200060F90D1DD003BB5A7 /* pdrawtesteditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pdrawtesteditor.cpp; sourceTree = ""; }; + 24A200070F90D1DD003BB5A7 /* pdrawtesteditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pdrawtesteditor.h; sourceTree = ""; }; + 24A200080F90D1DD003BB5A7 /* pdrawtesteffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pdrawtesteffect.cpp; sourceTree = ""; }; + 24A200090F90D1DD003BB5A7 /* pdrawtesteffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pdrawtesteffect.h; sourceTree = ""; }; + 24A2000A0F90D1DD003BB5A7 /* pdrawtestmain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pdrawtestmain.cpp; sourceTree = ""; }; + 24A2000B0F90D1DD003BB5A7 /* pdrawtestview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pdrawtestview.cpp; sourceTree = ""; }; + 24A2000C0F90D1DD003BB5A7 /* pdrawtestview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pdrawtestview.h; sourceTree = ""; }; + 24A2000D0F90D1DD003BB5A7 /* pprimitivesviews.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pprimitivesviews.cpp; sourceTree = ""; }; + 24A2000E0F90D1DD003BB5A7 /* pprimitivesviews.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pprimitivesviews.h; sourceTree = ""; }; + 24A200100F90D1DD003BB5A7 /* drawtest.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.def; sourceTree = ""; }; + 24A200110F90D1DD003BB5A7 /* drawtest.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.rc; sourceTree = ""; }; + 24A200120F90D1DD003BB5A7 /* drawtest.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = drawtest.vcproj; sourceTree = ""; }; + 24A200140F90D1DD003BB5A7 /* drawtest.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.dsp; sourceTree = ""; }; + 24A200150F90D1DD003BB5A7 /* drawtest.dsw */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.dsw; sourceTree = ""; }; + 24A200170F90D1DD003BB5A7 /* aeffguieditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aeffguieditor.cpp; sourceTree = ""; }; + 24A200180F90D1DD003BB5A7 /* aeffguieditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffguieditor.h; sourceTree = ""; }; + 24A200190F90D1DD003BB5A7 /* cfileselector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cfileselector.cpp; sourceTree = ""; }; + 24A2001A0F90D1DD003BB5A7 /* cfileselector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfileselector.h; sourceTree = ""; }; + 24A2001B0F90D1DD003BB5A7 /* Changelog */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Changelog; sourceTree = ""; }; + 24A2001C0F90D1DD003BB5A7 /* cscrollview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cscrollview.cpp; sourceTree = ""; }; + 24A2001D0F90D1DD003BB5A7 /* cscrollview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cscrollview.h; sourceTree = ""; }; + 24A2001E0F90D1DD003BB5A7 /* ctabview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ctabview.cpp; sourceTree = ""; }; + 24A2001F0F90D1DD003BB5A7 /* ctabview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ctabview.h; sourceTree = ""; }; + 24A200220F90D1DD003BB5A7 /* aeffguieditor_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = aeffguieditor_8cpp.html; sourceTree = ""; }; + 24A200230F90D1DD003BB5A7 /* aeffguieditor_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = aeffguieditor_8h.html; sourceTree = ""; }; + 24A200240F90D1DD003BB5A7 /* annotated.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = annotated.html; sourceTree = ""; }; + 24A200250F90D1DD003BB5A7 /* cfileselector_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = cfileselector_8cpp.html; sourceTree = ""; }; + 24A200260F90D1DD003BB5A7 /* cfileselector_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = cfileselector_8h.html; sourceTree = ""; }; + 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 = ""; }; + 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 = ""; }; + 24A200290F90D1DD003BB5A7 /* class_c_anim_knob-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_anim_knob-members.html"; sourceTree = ""; }; + 24A2002A0F90D1DD003BB5A7 /* class_c_anim_knob.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_anim_knob.html; sourceTree = ""; }; + 24A2002B0F90D1DD003BB5A7 /* class_c_anim_knob.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_anim_knob.png; sourceTree = ""; }; + 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 = ""; }; + 24A2002D0F90D1DD003BB5A7 /* class_c_attribute_list_entry.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_attribute_list_entry.html; sourceTree = ""; }; + 24A2002E0F90D1DD003BB5A7 /* class_c_auto_animation-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_auto_animation-members.html"; sourceTree = ""; }; + 24A2002F0F90D1DD003BB5A7 /* class_c_auto_animation.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_auto_animation.html; sourceTree = ""; }; + 24A200300F90D1DD003BB5A7 /* class_c_auto_animation.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_auto_animation.png; sourceTree = ""; }; + 24A200310F90D1DD003BB5A7 /* class_c_bitmap-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_bitmap-members.html"; sourceTree = ""; }; + 24A200320F90D1DD003BB5A7 /* class_c_bitmap.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_bitmap.html; sourceTree = ""; }; + 24A200330F90D1DD003BB5A7 /* class_c_bitmap.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_bitmap.png; sourceTree = ""; }; + 24A200340F90D1DD003BB5A7 /* class_c_c_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_c_view-members.html"; sourceTree = ""; }; + 24A200350F90D1DD003BB5A7 /* class_c_c_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_c_view.html; sourceTree = ""; }; + 24A200360F90D1DD003BB5A7 /* class_c_control-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_control-members.html"; sourceTree = ""; }; + 24A200370F90D1DD003BB5A7 /* class_c_control.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_control.html; sourceTree = ""; }; + 24A200380F90D1DD003BB5A7 /* class_c_control.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_control.png; sourceTree = ""; }; + 24A200390F90D1DD003BB5A7 /* class_c_control_listener-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_control_listener-members.html"; sourceTree = ""; }; + 24A2003A0F90D1DD003BB5A7 /* class_c_control_listener.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_control_listener.html; sourceTree = ""; }; + 24A2003B0F90D1DD003BB5A7 /* class_c_control_listener.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_control_listener.png; sourceTree = ""; }; + 24A2003C0F90D1DD003BB5A7 /* class_c_drag_container-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_drag_container-members.html"; sourceTree = ""; }; + 24A2003D0F90D1DD003BB5A7 /* class_c_drag_container.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_drag_container.html; sourceTree = ""; }; + 24A2003E0F90D1DD003BB5A7 /* class_c_drag_container.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_drag_container.png; sourceTree = ""; }; + 24A2003F0F90D1DD003BB5A7 /* class_c_draw_context-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_draw_context-members.html"; sourceTree = ""; }; + 24A200400F90D1DD003BB5A7 /* class_c_draw_context.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_draw_context.html; sourceTree = ""; }; + 24A200410F90D1DD003BB5A7 /* class_c_draw_context.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_draw_context.png; sourceTree = ""; }; + 24A200420F90D1DD003BB5A7 /* class_c_file_selector-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_file_selector-members.html"; sourceTree = ""; }; + 24A200430F90D1DD003BB5A7 /* class_c_file_selector.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_file_selector.html; sourceTree = ""; }; + 24A200440F90D1DD003BB5A7 /* class_c_frame-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_frame-members.html"; sourceTree = ""; }; + 24A200450F90D1DD003BB5A7 /* class_c_frame.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_frame.html; sourceTree = ""; }; + 24A200460F90D1DD003BB5A7 /* class_c_frame.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_frame.png; sourceTree = ""; }; + 24A200470F90D1DD003BB5A7 /* class_c_horizontal_slider-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_horizontal_slider-members.html"; sourceTree = ""; }; + 24A200480F90D1DD003BB5A7 /* class_c_horizontal_slider.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_horizontal_slider.html; sourceTree = ""; }; + 24A200490F90D1DD003BB5A7 /* class_c_horizontal_slider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_horizontal_slider.png; sourceTree = ""; }; + 24A2004A0F90D1DD003BB5A7 /* class_c_horizontal_switch-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_horizontal_switch-members.html"; sourceTree = ""; }; + 24A2004B0F90D1DD003BB5A7 /* class_c_horizontal_switch.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_horizontal_switch.html; sourceTree = ""; }; + 24A2004C0F90D1DD003BB5A7 /* class_c_horizontal_switch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_horizontal_switch.png; sourceTree = ""; }; + 24A2004D0F90D1DD003BB5A7 /* class_c_kick_button-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_kick_button-members.html"; sourceTree = ""; }; + 24A2004E0F90D1DD003BB5A7 /* class_c_kick_button.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_kick_button.html; sourceTree = ""; }; + 24A2004F0F90D1DD003BB5A7 /* class_c_kick_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_kick_button.png; sourceTree = ""; }; + 24A200500F90D1DD003BB5A7 /* class_c_knob-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_knob-members.html"; sourceTree = ""; }; + 24A200510F90D1DD003BB5A7 /* class_c_knob.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_knob.html; sourceTree = ""; }; + 24A200520F90D1DD003BB5A7 /* class_c_knob.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_knob.png; sourceTree = ""; }; + 24A200530F90D1DD003BB5A7 /* class_c_movie_bitmap-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_movie_bitmap-members.html"; sourceTree = ""; }; + 24A200540F90D1DD003BB5A7 /* class_c_movie_bitmap.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_movie_bitmap.html; sourceTree = ""; }; + 24A200550F90D1DD003BB5A7 /* class_c_movie_bitmap.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_movie_bitmap.png; sourceTree = ""; }; + 24A200560F90D1DD003BB5A7 /* class_c_movie_button-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_movie_button-members.html"; sourceTree = ""; }; + 24A200570F90D1DD003BB5A7 /* class_c_movie_button.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_movie_button.html; sourceTree = ""; }; + 24A200580F90D1DD003BB5A7 /* class_c_movie_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_movie_button.png; sourceTree = ""; }; + 24A200590F90D1DD003BB5A7 /* class_c_offscreen_context-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_offscreen_context-members.html"; sourceTree = ""; }; + 24A2005A0F90D1DD003BB5A7 /* class_c_offscreen_context.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_offscreen_context.html; sourceTree = ""; }; + 24A2005B0F90D1DD003BB5A7 /* class_c_offscreen_context.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_offscreen_context.png; sourceTree = ""; }; + 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 = ""; }; + 24A2005D0F90D1DD003BB5A7 /* class_c_on_off_button.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_on_off_button.html; sourceTree = ""; }; + 24A2005E0F90D1DD003BB5A7 /* class_c_on_off_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_on_off_button.png; sourceTree = ""; }; + 24A2005F0F90D1DD003BB5A7 /* class_c_option_menu-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_option_menu-members.html"; sourceTree = ""; }; + 24A200600F90D1DD003BB5A7 /* class_c_option_menu.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_option_menu.html; sourceTree = ""; }; + 24A200610F90D1DD003BB5A7 /* class_c_option_menu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_option_menu.png; sourceTree = ""; }; + 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 = ""; }; + 24A200630F90D1DD003BB5A7 /* class_c_option_menu_scheme.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_option_menu_scheme.html; sourceTree = ""; }; + 24A200640F90D1DD003BB5A7 /* class_c_option_menu_scheme.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_option_menu_scheme.png; sourceTree = ""; }; + 24A200650F90D1DD003BB5A7 /* class_c_param_display-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_param_display-members.html"; sourceTree = ""; }; + 24A200660F90D1DD003BB5A7 /* class_c_param_display.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_param_display.html; sourceTree = ""; }; + 24A200670F90D1DD003BB5A7 /* class_c_param_display.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_param_display.png; sourceTree = ""; }; + 24A200680F90D1DD003BB5A7 /* class_c_reference_counter-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_reference_counter-members.html"; sourceTree = ""; }; + 24A200690F90D1DD003BB5A7 /* class_c_reference_counter.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_reference_counter.html; sourceTree = ""; }; + 24A2006A0F90D1DD003BB5A7 /* class_c_reference_counter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_reference_counter.png; sourceTree = ""; }; + 24A2006B0F90D1DD003BB5A7 /* class_c_rocker_switch-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_rocker_switch-members.html"; sourceTree = ""; }; + 24A2006C0F90D1DD003BB5A7 /* class_c_rocker_switch.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_rocker_switch.html; sourceTree = ""; }; + 24A2006D0F90D1DD003BB5A7 /* class_c_rocker_switch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_rocker_switch.png; sourceTree = ""; }; + 24A2006E0F90D1DD003BB5A7 /* class_c_scroll_container-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_scroll_container-members.html"; sourceTree = ""; }; + 24A2006F0F90D1DD003BB5A7 /* class_c_scroll_container.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_scroll_container.html; sourceTree = ""; }; + 24A200700F90D1DD003BB5A7 /* class_c_scroll_container.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_scroll_container.png; sourceTree = ""; }; + 24A200710F90D1DD003BB5A7 /* class_c_scroll_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_scroll_view-members.html"; sourceTree = ""; }; + 24A200720F90D1DD003BB5A7 /* class_c_scroll_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_scroll_view.html; sourceTree = ""; }; + 24A200730F90D1DD003BB5A7 /* class_c_scroll_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_scroll_view.png; sourceTree = ""; }; + 24A200740F90D1DD003BB5A7 /* class_c_scrollbar-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_scrollbar-members.html"; sourceTree = ""; }; + 24A200750F90D1DD003BB5A7 /* class_c_scrollbar.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_scrollbar.html; sourceTree = ""; }; + 24A200760F90D1DD003BB5A7 /* class_c_scrollbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_scrollbar.png; sourceTree = ""; }; + 24A200770F90D1DD003BB5A7 /* class_c_slider-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_slider-members.html"; sourceTree = ""; }; + 24A200780F90D1DD003BB5A7 /* class_c_slider.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_slider.html; sourceTree = ""; }; + 24A200790F90D1DD003BB5A7 /* class_c_slider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_slider.png; sourceTree = ""; }; + 24A2007A0F90D1DD003BB5A7 /* class_c_special_digit-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_special_digit-members.html"; sourceTree = ""; }; + 24A2007B0F90D1DD003BB5A7 /* class_c_special_digit.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_special_digit.html; sourceTree = ""; }; + 24A2007C0F90D1DD003BB5A7 /* class_c_special_digit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_special_digit.png; sourceTree = ""; }; + 24A2007D0F90D1DD003BB5A7 /* class_c_splash_screen-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_splash_screen-members.html"; sourceTree = ""; }; + 24A2007E0F90D1DD003BB5A7 /* class_c_splash_screen.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_splash_screen.html; sourceTree = ""; }; + 24A2007F0F90D1DD003BB5A7 /* class_c_splash_screen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_splash_screen.png; sourceTree = ""; }; + 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 = ""; }; + 24A200810F90D1DD003BB5A7 /* class_c_splash_screen_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_splash_screen_view.html; sourceTree = ""; }; + 24A200820F90D1DD003BB5A7 /* class_c_splash_screen_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_splash_screen_view.png; sourceTree = ""; }; + 24A200830F90D1DD003BB5A7 /* class_c_tab_button-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_tab_button-members.html"; sourceTree = ""; }; + 24A200840F90D1DD003BB5A7 /* class_c_tab_button.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_tab_button.html; sourceTree = ""; }; + 24A200850F90D1DD003BB5A7 /* class_c_tab_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_tab_button.png; sourceTree = ""; }; + 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 = ""; }; + 24A200870F90D1DD003BB5A7 /* class_c_tab_child_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_tab_child_view.html; sourceTree = ""; }; + 24A200880F90D1DD003BB5A7 /* class_c_tab_child_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_tab_child_view.png; sourceTree = ""; }; + 24A200890F90D1DD003BB5A7 /* class_c_tab_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_tab_view-members.html"; sourceTree = ""; }; + 24A2008A0F90D1DD003BB5A7 /* class_c_tab_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_tab_view.html; sourceTree = ""; }; + 24A2008B0F90D1DD003BB5A7 /* class_c_tab_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_tab_view.png; sourceTree = ""; }; + 24A2008C0F90D1DD003BB5A7 /* class_c_text_edit-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_text_edit-members.html"; sourceTree = ""; }; + 24A2008D0F90D1DD003BB5A7 /* class_c_text_edit.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_text_edit.html; sourceTree = ""; }; + 24A2008E0F90D1DD003BB5A7 /* class_c_text_edit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_text_edit.png; sourceTree = ""; }; + 24A2008F0F90D1DD003BB5A7 /* class_c_text_label-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_text_label-members.html"; sourceTree = ""; }; + 24A200900F90D1DD003BB5A7 /* class_c_text_label.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_text_label.html; sourceTree = ""; }; + 24A200910F90D1DD003BB5A7 /* class_c_text_label.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_text_label.png; sourceTree = ""; }; + 24A200920F90D1DD003BB5A7 /* class_c_vertical_slider-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_vertical_slider-members.html"; sourceTree = ""; }; + 24A200930F90D1DD003BB5A7 /* class_c_vertical_slider.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_vertical_slider.html; sourceTree = ""; }; + 24A200940F90D1DD003BB5A7 /* class_c_vertical_slider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_vertical_slider.png; sourceTree = ""; }; + 24A200950F90D1DD003BB5A7 /* class_c_vertical_switch-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_vertical_switch-members.html"; sourceTree = ""; }; + 24A200960F90D1DD003BB5A7 /* class_c_vertical_switch.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_vertical_switch.html; sourceTree = ""; }; + 24A200970F90D1DD003BB5A7 /* class_c_vertical_switch.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_vertical_switch.png; sourceTree = ""; }; + 24A200980F90D1DD003BB5A7 /* class_c_view-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_view-members.html"; sourceTree = ""; }; + 24A200990F90D1DD003BB5A7 /* class_c_view.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_view.html; sourceTree = ""; }; + 24A2009A0F90D1DD003BB5A7 /* class_c_view.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_view.png; sourceTree = ""; }; + 24A2009B0F90D1DD003BB5A7 /* class_c_view_container-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_view_container-members.html"; sourceTree = ""; }; + 24A2009C0F90D1DD003BB5A7 /* class_c_view_container.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_view_container.html; sourceTree = ""; }; + 24A2009D0F90D1DD003BB5A7 /* class_c_view_container.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_view_container.png; sourceTree = ""; }; + 24A2009E0F90D1DD003BB5A7 /* class_c_vu_meter-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_c_vu_meter-members.html"; sourceTree = ""; }; + 24A2009F0F90D1DD003BB5A7 /* class_c_vu_meter.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_c_vu_meter.html; sourceTree = ""; }; + 24A200A00F90D1DD003BB5A7 /* class_c_vu_meter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_c_vu_meter.png; sourceTree = ""; }; + 24A200A10F90D1DD003BB5A7 /* class_i_scrollbar_drawer-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "class_i_scrollbar_drawer-members.html"; sourceTree = ""; }; + 24A200A20F90D1DD003BB5A7 /* class_i_scrollbar_drawer.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = class_i_scrollbar_drawer.html; sourceTree = ""; }; + 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 = ""; }; + 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 = ""; }; + 24A200A50F90D1DD003BB5A7 /* cscrollview_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = cscrollview_8cpp.html; sourceTree = ""; }; + 24A200A60F90D1DD003BB5A7 /* cscrollview_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = cscrollview_8h.html; sourceTree = ""; }; + 24A200A70F90D1DD003BB5A7 /* ctabview_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = ctabview_8cpp.html; sourceTree = ""; }; + 24A200A80F90D1DD003BB5A7 /* ctabview_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = ctabview_8h.html; sourceTree = ""; }; + 24A200A90F90D1DD003BB5A7 /* deprecated.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = deprecated.html; sourceTree = ""; }; + 24A200AA0F90D1DD003BB5A7 /* doc_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = doc_8h.html; sourceTree = ""; }; + 24A200AB0F90D1DD003BB5A7 /* doxygen.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = doxygen.css; sourceTree = ""; }; + 24A200AC0F90D1DD003BB5A7 /* doxygen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doxygen.png; sourceTree = ""; }; + 24A200AD0F90D1DD003BB5A7 /* files.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = files.html; sourceTree = ""; }; + 24A200AE0F90D1DD003BB5A7 /* ftv2blank.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2blank.png; sourceTree = ""; }; + 24A200AF0F90D1DD003BB5A7 /* ftv2doc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2doc.png; sourceTree = ""; }; + 24A200B00F90D1DD003BB5A7 /* ftv2folderclosed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2folderclosed.png; sourceTree = ""; }; + 24A200B10F90D1DE003BB5A7 /* ftv2folderopen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2folderopen.png; sourceTree = ""; }; + 24A200B20F90D1DE003BB5A7 /* ftv2lastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2lastnode.png; sourceTree = ""; }; + 24A200B30F90D1DE003BB5A7 /* ftv2link.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2link.png; sourceTree = ""; }; + 24A200B40F90D1DE003BB5A7 /* ftv2mlastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2mlastnode.png; sourceTree = ""; }; + 24A200B50F90D1DE003BB5A7 /* ftv2mnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2mnode.png; sourceTree = ""; }; + 24A200B60F90D1DE003BB5A7 /* ftv2node.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2node.png; sourceTree = ""; }; + 24A200B70F90D1DE003BB5A7 /* ftv2plastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2plastnode.png; sourceTree = ""; }; + 24A200B80F90D1DE003BB5A7 /* ftv2pnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2pnode.png; sourceTree = ""; }; + 24A200B90F90D1DE003BB5A7 /* ftv2vertline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2vertline.png; sourceTree = ""; }; + 24A200BA0F90D1DE003BB5A7 /* functions.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions.html; sourceTree = ""; }; + 24A200BB0F90D1DE003BB5A7 /* functions_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x62.html; sourceTree = ""; }; + 24A200BC0F90D1DE003BB5A7 /* functions_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x63.html; sourceTree = ""; }; + 24A200BD0F90D1DE003BB5A7 /* functions_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x64.html; sourceTree = ""; }; + 24A200BE0F90D1DE003BB5A7 /* functions_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x65.html; sourceTree = ""; }; + 24A200BF0F90D1DE003BB5A7 /* functions_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x66.html; sourceTree = ""; }; + 24A200C00F90D1DE003BB5A7 /* functions_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x67.html; sourceTree = ""; }; + 24A200C10F90D1DE003BB5A7 /* functions_0x68.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x68.html; sourceTree = ""; }; + 24A200C20F90D1DE003BB5A7 /* functions_0x69.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x69.html; sourceTree = ""; }; + 24A200C30F90D1DE003BB5A7 /* functions_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6b.html; sourceTree = ""; }; + 24A200C40F90D1DE003BB5A7 /* functions_0x6c.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6c.html; sourceTree = ""; }; + 24A200C50F90D1DE003BB5A7 /* functions_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6d.html; sourceTree = ""; }; + 24A200C60F90D1DE003BB5A7 /* functions_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6e.html; sourceTree = ""; }; + 24A200C70F90D1DE003BB5A7 /* functions_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x6f.html; sourceTree = ""; }; + 24A200C80F90D1DE003BB5A7 /* functions_0x70.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x70.html; sourceTree = ""; }; + 24A200C90F90D1DE003BB5A7 /* functions_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x72.html; sourceTree = ""; }; + 24A200CA0F90D1DE003BB5A7 /* functions_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x73.html; sourceTree = ""; }; + 24A200CB0F90D1DE003BB5A7 /* functions_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x74.html; sourceTree = ""; }; + 24A200CC0F90D1DE003BB5A7 /* functions_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x75.html; sourceTree = ""; }; + 24A200CD0F90D1DE003BB5A7 /* functions_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x76.html; sourceTree = ""; }; + 24A200CE0F90D1DE003BB5A7 /* functions_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x77.html; sourceTree = ""; }; + 24A200CF0F90D1DE003BB5A7 /* functions_0x78.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x78.html; sourceTree = ""; }; + 24A200D00F90D1DE003BB5A7 /* functions_0x79.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x79.html; sourceTree = ""; }; + 24A200D10F90D1DE003BB5A7 /* functions_0x7a.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x7a.html; sourceTree = ""; }; + 24A200D20F90D1DE003BB5A7 /* functions_0x7e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_0x7e.html; sourceTree = ""; }; + 24A200D30F90D1DE003BB5A7 /* functions_eval.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_eval.html; sourceTree = ""; }; + 24A200D40F90D1DE003BB5A7 /* functions_func.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func.html; sourceTree = ""; }; + 24A200D50F90D1DE003BB5A7 /* functions_func_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x62.html; sourceTree = ""; }; + 24A200D60F90D1DE003BB5A7 /* functions_func_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x63.html; sourceTree = ""; }; + 24A200D70F90D1DE003BB5A7 /* functions_func_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x64.html; sourceTree = ""; }; + 24A200D80F90D1DE003BB5A7 /* functions_func_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x65.html; sourceTree = ""; }; + 24A200D90F90D1DE003BB5A7 /* functions_func_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x66.html; sourceTree = ""; }; + 24A200DA0F90D1DE003BB5A7 /* functions_func_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x67.html; sourceTree = ""; }; + 24A200DB0F90D1DE003BB5A7 /* functions_func_0x68.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x68.html; sourceTree = ""; }; + 24A200DC0F90D1DE003BB5A7 /* functions_func_0x69.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x69.html; sourceTree = ""; }; + 24A200DD0F90D1DE003BB5A7 /* functions_func_0x6c.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x6c.html; sourceTree = ""; }; + 24A200DE0F90D1DE003BB5A7 /* functions_func_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x6d.html; sourceTree = ""; }; + 24A200DF0F90D1DE003BB5A7 /* functions_func_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x6e.html; sourceTree = ""; }; + 24A200E00F90D1DE003BB5A7 /* functions_func_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x6f.html; sourceTree = ""; }; + 24A200E10F90D1DE003BB5A7 /* functions_func_0x70.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x70.html; sourceTree = ""; }; + 24A200E20F90D1DE003BB5A7 /* functions_func_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x72.html; sourceTree = ""; }; + 24A200E30F90D1DE003BB5A7 /* functions_func_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x73.html; sourceTree = ""; }; + 24A200E40F90D1DE003BB5A7 /* functions_func_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x74.html; sourceTree = ""; }; + 24A200E50F90D1DE003BB5A7 /* functions_func_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x75.html; sourceTree = ""; }; + 24A200E60F90D1DE003BB5A7 /* functions_func_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x76.html; sourceTree = ""; }; + 24A200E70F90D1DE003BB5A7 /* functions_func_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x77.html; sourceTree = ""; }; + 24A200E80F90D1DE003BB5A7 /* functions_func_0x7e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_func_0x7e.html; sourceTree = ""; }; + 24A200E90F90D1DE003BB5A7 /* functions_rela.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_rela.html; sourceTree = ""; }; + 24A200EA0F90D1DE003BB5A7 /* functions_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars.html; sourceTree = ""; }; + 24A200EB0F90D1DE003BB5A7 /* functions_vars_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x62.html; sourceTree = ""; }; + 24A200EC0F90D1DE003BB5A7 /* functions_vars_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x63.html; sourceTree = ""; }; + 24A200ED0F90D1DE003BB5A7 /* functions_vars_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x64.html; sourceTree = ""; }; + 24A200EE0F90D1DE003BB5A7 /* functions_vars_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x65.html; sourceTree = ""; }; + 24A200EF0F90D1DE003BB5A7 /* functions_vars_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x66.html; sourceTree = ""; }; + 24A200F00F90D1DE003BB5A7 /* functions_vars_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x67.html; sourceTree = ""; }; + 24A200F10F90D1DE003BB5A7 /* functions_vars_0x68.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x68.html; sourceTree = ""; }; + 24A200F20F90D1DE003BB5A7 /* functions_vars_0x69.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x69.html; sourceTree = ""; }; + 24A200F30F90D1DE003BB5A7 /* functions_vars_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6b.html; sourceTree = ""; }; + 24A200F40F90D1DE003BB5A7 /* functions_vars_0x6c.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6c.html; sourceTree = ""; }; + 24A200F50F90D1DE003BB5A7 /* functions_vars_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6d.html; sourceTree = ""; }; + 24A200F60F90D1DE003BB5A7 /* functions_vars_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6e.html; sourceTree = ""; }; + 24A200F70F90D1DE003BB5A7 /* functions_vars_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x6f.html; sourceTree = ""; }; + 24A200F80F90D1DE003BB5A7 /* functions_vars_0x70.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x70.html; sourceTree = ""; }; + 24A200F90F90D1DE003BB5A7 /* functions_vars_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x72.html; sourceTree = ""; }; + 24A200FA0F90D1DE003BB5A7 /* functions_vars_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x73.html; sourceTree = ""; }; + 24A200FB0F90D1DE003BB5A7 /* functions_vars_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x74.html; sourceTree = ""; }; + 24A200FC0F90D1DE003BB5A7 /* functions_vars_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x75.html; sourceTree = ""; }; + 24A200FD0F90D1DE003BB5A7 /* functions_vars_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x76.html; sourceTree = ""; }; + 24A200FE0F90D1DE003BB5A7 /* functions_vars_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x77.html; sourceTree = ""; }; + 24A200FF0F90D1DE003BB5A7 /* functions_vars_0x78.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x78.html; sourceTree = ""; }; + 24A201000F90D1DE003BB5A7 /* functions_vars_0x79.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x79.html; sourceTree = ""; }; + 24A201010F90D1DE003BB5A7 /* functions_vars_0x7a.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = functions_vars_0x7a.html; sourceTree = ""; }; + 24A201020F90D1DE003BB5A7 /* globals.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals.html; sourceTree = ""; }; + 24A201030F90D1DE003BB5A7 /* globals_0x61.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x61.html; sourceTree = ""; }; + 24A201040F90D1DE003BB5A7 /* globals_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x62.html; sourceTree = ""; }; + 24A201050F90D1DE003BB5A7 /* globals_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x63.html; sourceTree = ""; }; + 24A201060F90D1DE003BB5A7 /* globals_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x65.html; sourceTree = ""; }; + 24A201070F90D1DE003BB5A7 /* globals_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x66.html; sourceTree = ""; }; + 24A201080F90D1DE003BB5A7 /* globals_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x67.html; sourceTree = ""; }; + 24A201090F90D1DE003BB5A7 /* globals_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x6b.html; sourceTree = ""; }; + 24A2010A0F90D1DE003BB5A7 /* globals_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x6d.html; sourceTree = ""; }; + 24A2010B0F90D1DE003BB5A7 /* globals_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x6e.html; sourceTree = ""; }; + 24A2010C0F90D1DE003BB5A7 /* globals_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x6f.html; sourceTree = ""; }; + 24A2010D0F90D1DE003BB5A7 /* globals_0x71.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x71.html; sourceTree = ""; }; + 24A2010E0F90D1DE003BB5A7 /* globals_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x72.html; sourceTree = ""; }; + 24A2010F0F90D1DE003BB5A7 /* globals_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x73.html; sourceTree = ""; }; + 24A201100F90D1DE003BB5A7 /* globals_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x74.html; sourceTree = ""; }; + 24A201110F90D1DE003BB5A7 /* globals_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x75.html; sourceTree = ""; }; + 24A201120F90D1DE003BB5A7 /* globals_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x76.html; sourceTree = ""; }; + 24A201130F90D1DE003BB5A7 /* globals_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_0x77.html; sourceTree = ""; }; + 24A201140F90D1DE003BB5A7 /* globals_defs.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_defs.html; sourceTree = ""; }; + 24A201150F90D1DE003BB5A7 /* globals_enum.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_enum.html; sourceTree = ""; }; + 24A201160F90D1DE003BB5A7 /* globals_eval.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_eval.html; sourceTree = ""; }; + 24A201170F90D1DE003BB5A7 /* globals_type.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_type.html; sourceTree = ""; }; + 24A201180F90D1DE003BB5A7 /* globals_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = globals_vars.html; sourceTree = ""; }; + 24A201190F90D1DE003BB5A7 /* hierarchy.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = hierarchy.html; sourceTree = ""; }; + 24A2011A0F90D1DE003BB5A7 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = index.html; sourceTree = ""; }; + 24A2011B0F90D1DE003BB5A7 /* intro.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = intro.html; sourceTree = ""; }; + 24A2011C0F90D1DE003BB5A7 /* license.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = license.html; sourceTree = ""; }; + 24A2011D0F90D1DE003BB5A7 /* maceditor.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = maceditor.html; sourceTree = ""; }; + 24A2011E0F90D1DE003BB5A7 /* main.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = main.html; sourceTree = ""; }; + 24A2011F0F90D1DE003BB5A7 /* others.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = others.html; sourceTree = ""; }; + 24A201200F90D1DE003BB5A7 /* pages.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = pages.html; sourceTree = ""; }; + 24A201210F90D1DE003BB5A7 /* plugguieditor_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = plugguieditor_8cpp.html; sourceTree = ""; }; + 24A201220F90D1DE003BB5A7 /* plugguieditor_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = plugguieditor_8h.html; sourceTree = ""; }; + 24A201230F90D1DE003BB5A7 /* sequences.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = sequences.html; sourceTree = ""; }; + 24A201240F90D1DE003BB5A7 /* struct_c_color-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_c_color-members.html"; sourceTree = ""; }; + 24A201250F90D1DE003BB5A7 /* struct_c_color.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_c_color.html; sourceTree = ""; }; + 24A201260F90D1DE003BB5A7 /* struct_c_point-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_c_point-members.html"; sourceTree = ""; }; + 24A201270F90D1DE003BB5A7 /* struct_c_point.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_c_point.html; sourceTree = ""; }; + 24A201280F90D1DE003BB5A7 /* struct_c_rect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_c_rect-members.html"; sourceTree = ""; }; + 24A201290F90D1DE003BB5A7 /* struct_c_rect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_c_rect.html; sourceTree = ""; }; + 24A2012A0F90D1DE003BB5A7 /* struct_e_rect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_e_rect-members.html"; sourceTree = ""; }; + 24A2012B0F90D1DE003BB5A7 /* struct_e_rect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_e_rect.html; sourceTree = ""; }; + 24A2012C0F90D1DE003BB5A7 /* struct_vst_file_select-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_vst_file_select-members.html"; sourceTree = ""; }; + 24A2012D0F90D1DE003BB5A7 /* struct_vst_file_select.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_vst_file_select.html; sourceTree = ""; }; + 24A2012E0F90D1DE003BB5A7 /* struct_vst_file_type-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_vst_file_type-members.html"; sourceTree = ""; }; + 24A2012F0F90D1DE003BB5A7 /* struct_vst_file_type.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_vst_file_type.html; sourceTree = ""; }; + 24A201300F90D1DE003BB5A7 /* struct_vst_key_code-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = "struct_vst_key_code-members.html"; sourceTree = ""; }; + 24A201310F90D1DE003BB5A7 /* struct_vst_key_code.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = struct_vst_key_code.html; sourceTree = ""; }; + 24A201320F90D1DE003BB5A7 /* tab_b.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_b.gif; sourceTree = ""; }; + 24A201330F90D1DE003BB5A7 /* tab_l.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_l.gif; sourceTree = ""; }; + 24A201340F90D1DE003BB5A7 /* tab_r.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_r.gif; sourceTree = ""; }; + 24A201350F90D1DE003BB5A7 /* tabs.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = tabs.css; sourceTree = ""; }; + 24A201360F90D1DE003BB5A7 /* thanks.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = thanks.html; sourceTree = ""; }; + 24A201370F90D1DE003BB5A7 /* tree.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = tree.html; sourceTree = ""; }; + 24A201380F90D1DE003BB5A7 /* vstcontrols_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstcontrols_8cpp.html; sourceTree = ""; }; + 24A201390F90D1DE003BB5A7 /* vstcontrols_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstcontrols_8h.html; sourceTree = ""; }; + 24A2013A0F90D1DE003BB5A7 /* vstgui_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstgui_8cpp.html; sourceTree = ""; }; + 24A2013B0F90D1DE003BB5A7 /* vstgui_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstgui_8h.html; sourceTree = ""; }; + 24A2013C0F90D1DE003BB5A7 /* vstkeycode_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstkeycode_8h.html; sourceTree = ""; }; + 24A2013D0F90D1DE003BB5A7 /* vstoffline.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstoffline.html; sourceTree = ""; }; + 24A2013E0F90D1DE003BB5A7 /* vstparamstruct.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstparamstruct.html; sourceTree = ""; }; + 24A2013F0F90D1DE003BB5A7 /* vstplugscarbon_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstplugscarbon_8h.html; sourceTree = ""; }; + 24A201400F90D1DE003BB5A7 /* vstplugsmac_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstplugsmac_8h.html; sourceTree = ""; }; + 24A201410F90D1DE003BB5A7 /* vstplugsmacho_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstplugsmacho_8h.html; sourceTree = ""; }; + 24A201420F90D1DE003BB5A7 /* vstplugsquartz_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = vstplugsquartz_8h.html; sourceTree = ""; }; + 24A201430F90D1DE003BB5A7 /* whatsnew.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = whatsnew.html; sourceTree = ""; }; + 24A201440F90D1DE003BB5A7 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; path = index.html; sourceTree = ""; }; + 24A201450F90D1DE003BB5A7 /* Migrating from 2.3.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = "Migrating from 2.3.rtf"; sourceTree = ""; }; + 24A201460F90D1DE003BB5A7 /* plugguieditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugguieditor.cpp; sourceTree = ""; }; + 24A201470F90D1DE003BB5A7 /* plugguieditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugguieditor.h; sourceTree = ""; }; + 24A201480F90D1DE003BB5A7 /* vstcontrols.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstcontrols.cpp; sourceTree = ""; }; + 24A201490F90D1DE003BB5A7 /* vstcontrols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstcontrols.h; sourceTree = ""; }; + 24A2014A0F90D1DE003BB5A7 /* vstgui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstgui.cpp; sourceTree = ""; }; + 24A2014B0F90D1DE003BB5A7 /* vstgui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstgui.h; sourceTree = ""; }; + 24A2014C0F90D1DE003BB5A7 /* vstkeycode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstkeycode.h; sourceTree = ""; }; + 24A2014D0F90D1DE003BB5A7 /* vstplugscarbon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstplugscarbon.h; sourceTree = ""; }; + 24A2014E0F90D1DE003BB5A7 /* vstplugsmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstplugsmac.h; sourceTree = ""; }; + 24A2014F0F90D1DE003BB5A7 /* vstplugsmacho.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstplugsmacho.h; sourceTree = ""; }; + 24A201500F90D1DE003BB5A7 /* vstplugsquartz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstplugsquartz.h; sourceTree = ""; }; + 24A2FEBD0F90D1DC003BB5A7 /* Thumbs.db */ = {isa = PBXFileReference; lastKnownFileType = file; path = Thumbs.db; sourceTree = ""; }; + 24A2FEBE0F90D1DC003BB5A7 /* VST_Logo_Usage_Guideline.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = VST_Logo_Usage_Guideline.pdf; sourceTree = ""; }; + 24A2FEBF0F90D1DC003BB5A7 /* VSTLogoAlpha.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = VSTLogoAlpha.png; sourceTree = ""; }; + 24A2FEC00F90D1DC003BB5A7 /* VSTLogoBlack.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = VSTLogoBlack.jpg; sourceTree = ""; }; + 24A2FEC10F90D1DC003BB5A7 /* VSTLogoWhite.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = VSTLogoWhite.jpg; sourceTree = ""; }; + 24A2FEC60F90D1DC003BB5A7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 24A2FEC80F90D1DC003BB5A7 /* VSTMonitor */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; path = VSTMonitor; sourceTree = ""; }; + 24A2FEC90F90D1DC003BB5A7 /* PkgInfo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PkgInfo; sourceTree = ""; }; + 24A2FECB0F90D1DC003BB5A7 /* bmp50000.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50000.bmp; sourceTree = ""; }; + 24A2FECC0F90D1DC003BB5A7 /* bmp50001.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50001.bmp; sourceTree = ""; }; + 24A2FECD0F90D1DC003BB5A7 /* bmp50002.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50002.bmp; sourceTree = ""; }; + 24A2FECE0F90D1DC003BB5A7 /* bmp50003.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50003.bmp; sourceTree = ""; }; + 24A2FECF0F90D1DC003BB5A7 /* bmp50004.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50004.bmp; sourceTree = ""; }; + 24A2FED00F90D1DC003BB5A7 /* bmp50005.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50005.bmp; sourceTree = ""; }; + 24A2FED10F90D1DC003BB5A7 /* bmp50006.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50006.bmp; sourceTree = ""; }; + 24A2FED20F90D1DC003BB5A7 /* bmp50007.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50007.bmp; sourceTree = ""; }; + 24A2FED30F90D1DC003BB5A7 /* bmp50008.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp50008.bmp; sourceTree = ""; }; + 24A2FED40F90D1DC003BB5A7 /* VSTParamTool.app */ = {isa = PBXFileReference; lastKnownFileType = wrapper.application; path = VSTParamTool.app; sourceTree = ""; }; + 24A2FED60F90D1DC003BB5A7 /* vstmonitor.dll */ = {isa = PBXFileReference; lastKnownFileType = file; path = vstmonitor.dll; sourceTree = ""; }; + 24A2FED70F90D1DC003BB5A7 /* vstparamtool.exe */ = {isa = PBXFileReference; lastKnownFileType = file; path = vstparamtool.exe; sourceTree = ""; }; + 24A2FEDA0F90D1DC003BB5A7 /* folder.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = folder.gif; sourceTree = ""; }; + 24A2FEDB0F90D1DC003BB5A7 /* mac.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = mac.gif; sourceTree = ""; }; + 24A2FEDC0F90D1DC003BB5A7 /* vstpluglogo_small.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = vstpluglogo_small.jpg; sourceTree = ""; }; + 24A2FEDD0F90D1DC003BB5A7 /* win.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = win.gif; sourceTree = ""; }; + 24A2FEDF0F90D1DC003BB5A7 /* aeffect_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = aeffect_8h.html; sourceTree = ""; }; + 24A2FEE00F90D1DC003BB5A7 /* aeffectx_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = aeffectx_8h.html; sourceTree = ""; }; + 24A2FEE10F90D1DC003BB5A7 /* aeffeditor_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = aeffeditor_8h.html; sourceTree = ""; }; + 24A2FEE20F90D1DC003BB5A7 /* annotated.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = annotated.html; sourceTree = ""; }; + 24A2FEE30F90D1DC003BB5A7 /* audioeffect_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = audioeffect_8cpp.html; sourceTree = ""; }; + 24A2FEE40F90D1DC003BB5A7 /* audioeffect_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = audioeffect_8h.html; sourceTree = ""; }; + 24A2FEE50F90D1DC003BB5A7 /* audioeffectx_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = audioeffectx_8cpp.html; sourceTree = ""; }; + 24A2FEE60F90D1DC003BB5A7 /* audioeffectx_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = audioeffectx_8h.html; sourceTree = ""; }; + 24A2FEE70F90D1DC003BB5A7 /* Blocksizechange.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Blocksizechange.gif; sourceTree = ""; }; + 24A2FEE80F90D1DC003BB5A7 /* class_a_eff_editor-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "class_a_eff_editor-members.html"; sourceTree = ""; }; + 24A2FEE90F90D1DC003BB5A7 /* class_a_eff_editor.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = class_a_eff_editor.html; sourceTree = ""; }; + 24A2FEEA0F90D1DC003BB5A7 /* class_audio_effect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "class_audio_effect-members.html"; sourceTree = ""; }; + 24A2FEEB0F90D1DC003BB5A7 /* class_audio_effect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = class_audio_effect.html; sourceTree = ""; }; + 24A2FEEC0F90D1DC003BB5A7 /* class_audio_effect.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_audio_effect.png; sourceTree = ""; }; + 24A2FEED0F90D1DC003BB5A7 /* class_audio_effect_x-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "class_audio_effect_x-members.html"; sourceTree = ""; }; + 24A2FEEE0F90D1DC003BB5A7 /* class_audio_effect_x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = class_audio_effect_x.html; sourceTree = ""; }; + 24A2FEEF0F90D1DC003BB5A7 /* class_audio_effect_x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = class_audio_effect_x.png; sourceTree = ""; }; + 24A2FEF00F90D1DC003BB5A7 /* ControlChanged.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = ControlChanged.gif; sourceTree = ""; }; + 24A2FEF10F90D1DC003BB5A7 /* deprecated.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = deprecated.html; sourceTree = ""; }; + 24A2FEF20F90D1DC003BB5A7 /* dir_2d3252dd12c84c66c1d25b26bb45a1f5.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dir_2d3252dd12c84c66c1d25b26bb45a1f5.html; sourceTree = ""; }; + 24A2FEF30F90D1DC003BB5A7 /* dir_77c628dfee72e555f82d5ef53b733f38.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dir_77c628dfee72e555f82d5ef53b733f38.html; sourceTree = ""; }; + 24A2FEF40F90D1DC003BB5A7 /* dir_f81105d3b854bea570aaf3bae5cb64c1.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dir_f81105d3b854bea570aaf3bae5cb64c1.html; sourceTree = ""; }; + 24A2FEF50F90D1DC003BB5A7 /* dir_fa0454ab79b4262333bf837ea3d765e9.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dir_fa0454ab79b4262333bf837ea3d765e9.html; sourceTree = ""; }; + 24A2FEF60F90D1DC003BB5A7 /* dirs.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = dirs.html; sourceTree = ""; }; + 24A2FEF70F90D1DC003BB5A7 /* doc_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = doc_8h.html; sourceTree = ""; }; + 24A2FEF80F90D1DC003BB5A7 /* doxygen.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = doxygen.css; sourceTree = ""; }; + 24A2FEF90F90D1DC003BB5A7 /* doxygen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doxygen.png; sourceTree = ""; }; + 24A2FEFA0F90D1DC003BB5A7 /* files.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = files.html; sourceTree = ""; }; + 24A2FEFB0F90D1DC003BB5A7 /* ftv2blank.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2blank.png; sourceTree = ""; }; + 24A2FEFC0F90D1DC003BB5A7 /* ftv2doc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2doc.png; sourceTree = ""; }; + 24A2FEFD0F90D1DC003BB5A7 /* ftv2folderclosed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2folderclosed.png; sourceTree = ""; }; + 24A2FEFE0F90D1DC003BB5A7 /* ftv2folderopen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2folderopen.png; sourceTree = ""; }; + 24A2FEFF0F90D1DC003BB5A7 /* ftv2lastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2lastnode.png; sourceTree = ""; }; + 24A2FF000F90D1DC003BB5A7 /* ftv2link.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2link.png; sourceTree = ""; }; + 24A2FF010F90D1DC003BB5A7 /* ftv2mlastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2mlastnode.png; sourceTree = ""; }; + 24A2FF020F90D1DC003BB5A7 /* ftv2mnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2mnode.png; sourceTree = ""; }; + 24A2FF030F90D1DC003BB5A7 /* ftv2node.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2node.png; sourceTree = ""; }; + 24A2FF040F90D1DC003BB5A7 /* ftv2plastnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2plastnode.png; sourceTree = ""; }; + 24A2FF050F90D1DC003BB5A7 /* ftv2pnode.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2pnode.png; sourceTree = ""; }; + 24A2FF060F90D1DC003BB5A7 /* ftv2vertline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftv2vertline.png; sourceTree = ""; }; + 24A2FF070F90D1DC003BB5A7 /* functions.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions.html; sourceTree = ""; }; + 24A2FF080F90D1DC003BB5A7 /* functions_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x62.html; sourceTree = ""; }; + 24A2FF090F90D1DC003BB5A7 /* functions_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x63.html; sourceTree = ""; }; + 24A2FF0A0F90D1DC003BB5A7 /* functions_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x64.html; sourceTree = ""; }; + 24A2FF0B0F90D1DC003BB5A7 /* functions_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x65.html; sourceTree = ""; }; + 24A2FF0C0F90D1DC003BB5A7 /* functions_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x66.html; sourceTree = ""; }; + 24A2FF0D0F90D1DC003BB5A7 /* functions_0x67.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x67.html; sourceTree = ""; }; + 24A2FF0E0F90D1DC003BB5A7 /* functions_0x68.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x68.html; sourceTree = ""; }; + 24A2FF0F0F90D1DC003BB5A7 /* functions_0x69.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x69.html; sourceTree = ""; }; + 24A2FF100F90D1DC003BB5A7 /* functions_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6b.html; sourceTree = ""; }; + 24A2FF110F90D1DC003BB5A7 /* functions_0x6c.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6c.html; sourceTree = ""; }; + 24A2FF120F90D1DC003BB5A7 /* functions_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6d.html; sourceTree = ""; }; + 24A2FF130F90D1DC003BB5A7 /* functions_0x6e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6e.html; sourceTree = ""; }; + 24A2FF140F90D1DC003BB5A7 /* functions_0x6f.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x6f.html; sourceTree = ""; }; + 24A2FF150F90D1DC003BB5A7 /* functions_0x70.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x70.html; sourceTree = ""; }; + 24A2FF160F90D1DC003BB5A7 /* functions_0x72.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x72.html; sourceTree = ""; }; + 24A2FF170F90D1DC003BB5A7 /* functions_0x73.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x73.html; sourceTree = ""; }; + 24A2FF180F90D1DC003BB5A7 /* functions_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x74.html; sourceTree = ""; }; + 24A2FF190F90D1DC003BB5A7 /* functions_0x75.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x75.html; sourceTree = ""; }; + 24A2FF1A0F90D1DC003BB5A7 /* functions_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x76.html; sourceTree = ""; }; + 24A2FF1B0F90D1DC003BB5A7 /* functions_0x77.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x77.html; sourceTree = ""; }; + 24A2FF1C0F90D1DC003BB5A7 /* functions_0x78.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x78.html; sourceTree = ""; }; + 24A2FF1D0F90D1DC003BB5A7 /* functions_0x79.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x79.html; sourceTree = ""; }; + 24A2FF1E0F90D1DC003BB5A7 /* functions_0x7e.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_0x7e.html; sourceTree = ""; }; + 24A2FF1F0F90D1DC003BB5A7 /* functions_func.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_func.html; sourceTree = ""; }; + 24A2FF200F90D1DC003BB5A7 /* functions_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = functions_vars.html; sourceTree = ""; }; + 24A2FF210F90D1DC003BB5A7 /* globals.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals.html; sourceTree = ""; }; + 24A2FF220F90D1DC003BB5A7 /* globals_0x62.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x62.html; sourceTree = ""; }; + 24A2FF230F90D1DC003BB5A7 /* globals_0x63.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x63.html; sourceTree = ""; }; + 24A2FF240F90D1DC003BB5A7 /* globals_0x64.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x64.html; sourceTree = ""; }; + 24A2FF250F90D1DC003BB5A7 /* globals_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x65.html; sourceTree = ""; }; + 24A2FF260F90D1DC003BB5A7 /* globals_0x66.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x66.html; sourceTree = ""; }; + 24A2FF270F90D1DC003BB5A7 /* globals_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x6b.html; sourceTree = ""; }; + 24A2FF280F90D1DC003BB5A7 /* globals_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x6d.html; sourceTree = ""; }; + 24A2FF290F90D1DC003BB5A7 /* globals_0x74.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x74.html; sourceTree = ""; }; + 24A2FF2A0F90D1DC003BB5A7 /* globals_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_0x76.html; sourceTree = ""; }; + 24A2FF2B0F90D1DC003BB5A7 /* globals_defs.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_defs.html; sourceTree = ""; }; + 24A2FF2C0F90D1DC003BB5A7 /* globals_enum.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_enum.html; sourceTree = ""; }; + 24A2FF2D0F90D1DC003BB5A7 /* globals_eval.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval.html; sourceTree = ""; }; + 24A2FF2E0F90D1DC003BB5A7 /* globals_eval_0x65.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval_0x65.html; sourceTree = ""; }; + 24A2FF2F0F90D1DC003BB5A7 /* globals_eval_0x6b.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval_0x6b.html; sourceTree = ""; }; + 24A2FF300F90D1DC003BB5A7 /* globals_eval_0x6d.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval_0x6d.html; sourceTree = ""; }; + 24A2FF310F90D1DC003BB5A7 /* globals_eval_0x76.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_eval_0x76.html; sourceTree = ""; }; + 24A2FF320F90D1DC003BB5A7 /* globals_func.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_func.html; sourceTree = ""; }; + 24A2FF330F90D1DC003BB5A7 /* globals_type.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_type.html; sourceTree = ""; }; + 24A2FF340F90D1DC003BB5A7 /* globals_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = globals_vars.html; sourceTree = ""; }; + 24A2FF350F90D1DC003BB5A7 /* hierarchy.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = hierarchy.html; sourceTree = ""; }; + 24A2FF360F90D1DC003BB5A7 /* history.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = history.html; sourceTree = ""; }; + 24A2FF370F90D1DC003BB5A7 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + 24A2FF380F90D1DC003BB5A7 /* Initialisation.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Initialisation.gif; sourceTree = ""; }; + 24A2FF390F90D1DC003BB5A7 /* intro.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = intro.html; sourceTree = ""; }; + 24A2FF3A0F90D1DC003BB5A7 /* IOchange.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = IOchange.gif; sourceTree = ""; }; + 24A2FF3B0F90D1DC003BB5A7 /* license.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = license.html; sourceTree = ""; }; + 24A2FF3C0F90D1DC003BB5A7 /* maceditor.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = maceditor.html; sourceTree = ""; }; + 24A2FF3D0F90D1DC003BB5A7 /* main.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = main.html; sourceTree = ""; }; + 24A2FF3E0F90D1DC003BB5A7 /* namespace_host_can_dos.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespace_host_can_dos.html; sourceTree = ""; }; + 24A2FF3F0F90D1DC003BB5A7 /* namespace_plug_can_dos.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespace_plug_can_dos.html; sourceTree = ""; }; + 24A2FF400F90D1DC003BB5A7 /* namespacemembers.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespacemembers.html; sourceTree = ""; }; + 24A2FF410F90D1DC003BB5A7 /* namespacemembers_vars.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespacemembers_vars.html; sourceTree = ""; }; + 24A2FF420F90D1DC003BB5A7 /* namespaces.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = namespaces.html; sourceTree = ""; }; + 24A2FF430F90D1DC003BB5A7 /* Offlineprocessing.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Offlineprocessing.gif; sourceTree = ""; }; + 24A2FF440F90D1DC003BB5A7 /* others.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = others.html; sourceTree = ""; }; + 24A2FF450F90D1DC003BB5A7 /* pages.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = pages.html; sourceTree = ""; }; + 24A2FF460F90D1DC003BB5A7 /* Sampleratechange.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Sampleratechange.gif; sourceTree = ""; }; + 24A2FF470F90D1DC003BB5A7 /* sequences.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = sequences.html; sourceTree = ""; }; + 24A2FF480F90D1DC003BB5A7 /* SpeakerarrangementnegotiationforVSTfx.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = SpeakerarrangementnegotiationforVSTfx.gif; sourceTree = ""; }; + 24A2FF490F90D1DC003BB5A7 /* struct_a_effect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_a_effect-members.html"; sourceTree = ""; }; + 24A2FF4A0F90D1DC003BB5A7 /* struct_a_effect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_a_effect.html; sourceTree = ""; }; + 24A2FF4B0F90D1DC003BB5A7 /* struct_e_rect-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_e_rect-members.html"; sourceTree = ""; }; + 24A2FF4C0F90D1DC003BB5A7 /* struct_e_rect.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_e_rect.html; sourceTree = ""; }; + 24A2FF4D0F90D1DC003BB5A7 /* struct_midi_key_name-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_midi_key_name-members.html"; sourceTree = ""; }; + 24A2FF4E0F90D1DC003BB5A7 /* struct_midi_key_name.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_midi_key_name.html; sourceTree = ""; }; + 24A2FF4F0F90D1DC003BB5A7 /* struct_midi_program_category-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_midi_program_category-members.html"; sourceTree = ""; }; + 24A2FF500F90D1DC003BB5A7 /* struct_midi_program_category.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_midi_program_category.html; sourceTree = ""; }; + 24A2FF510F90D1DC003BB5A7 /* struct_midi_program_name-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_midi_program_name-members.html"; sourceTree = ""; }; + 24A2FF520F90D1DC003BB5A7 /* struct_midi_program_name.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_midi_program_name.html; sourceTree = ""; }; + 24A2FF530F90D1DC003BB5A7 /* struct_vst_audio_file-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_audio_file-members.html"; sourceTree = ""; }; + 24A2FF540F90D1DC003BB5A7 /* struct_vst_audio_file.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_audio_file.html; sourceTree = ""; }; + 24A2FF550F90D1DC003BB5A7 /* struct_vst_audio_file_marker-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_audio_file_marker-members.html"; sourceTree = ""; }; + 24A2FF560F90D1DC003BB5A7 /* struct_vst_audio_file_marker.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_audio_file_marker.html; sourceTree = ""; }; + 24A2FF570F90D1DC003BB5A7 /* struct_vst_event-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_event-members.html"; sourceTree = ""; }; + 24A2FF580F90D1DC003BB5A7 /* struct_vst_event.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_event.html; sourceTree = ""; }; + 24A2FF590F90D1DD003BB5A7 /* struct_vst_events-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_events-members.html"; sourceTree = ""; }; + 24A2FF5A0F90D1DD003BB5A7 /* struct_vst_events.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_events.html; sourceTree = ""; }; + 24A2FF5B0F90D1DD003BB5A7 /* struct_vst_file_select-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_file_select-members.html"; sourceTree = ""; }; + 24A2FF5C0F90D1DD003BB5A7 /* struct_vst_file_select.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_file_select.html; sourceTree = ""; }; + 24A2FF5D0F90D1DD003BB5A7 /* struct_vst_file_type-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_file_type-members.html"; sourceTree = ""; }; + 24A2FF5E0F90D1DD003BB5A7 /* struct_vst_file_type.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_file_type.html; sourceTree = ""; }; + 24A2FF5F0F90D1DD003BB5A7 /* struct_vst_key_code-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_key_code-members.html"; sourceTree = ""; }; + 24A2FF600F90D1DD003BB5A7 /* struct_vst_key_code.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_key_code.html; sourceTree = ""; }; + 24A2FF610F90D1DD003BB5A7 /* struct_vst_midi_event-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_midi_event-members.html"; sourceTree = ""; }; + 24A2FF620F90D1DD003BB5A7 /* struct_vst_midi_event.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_midi_event.html; sourceTree = ""; }; + 24A2FF630F90D1DD003BB5A7 /* struct_vst_midi_sysex_event-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_midi_sysex_event-members.html"; sourceTree = ""; }; + 24A2FF640F90D1DD003BB5A7 /* struct_vst_midi_sysex_event.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_midi_sysex_event.html; sourceTree = ""; }; + 24A2FF650F90D1DD003BB5A7 /* struct_vst_offline_task-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_offline_task-members.html"; sourceTree = ""; }; + 24A2FF660F90D1DD003BB5A7 /* struct_vst_offline_task.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_offline_task.html; sourceTree = ""; }; + 24A2FF670F90D1DD003BB5A7 /* struct_vst_parameter_properties-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_parameter_properties-members.html"; sourceTree = ""; }; + 24A2FF680F90D1DD003BB5A7 /* struct_vst_parameter_properties.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_parameter_properties.html; sourceTree = ""; }; + 24A2FF690F90D1DD003BB5A7 /* struct_vst_patch_chunk_info-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_patch_chunk_info-members.html"; sourceTree = ""; }; + 24A2FF6A0F90D1DD003BB5A7 /* struct_vst_patch_chunk_info.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_patch_chunk_info.html; sourceTree = ""; }; + 24A2FF6B0F90D1DD003BB5A7 /* struct_vst_pin_properties-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_pin_properties-members.html"; sourceTree = ""; }; + 24A2FF6C0F90D1DD003BB5A7 /* struct_vst_pin_properties.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_pin_properties.html; sourceTree = ""; }; + 24A2FF6D0F90D1DD003BB5A7 /* struct_vst_speaker_arrangement-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_speaker_arrangement-members.html"; sourceTree = ""; }; + 24A2FF6E0F90D1DD003BB5A7 /* struct_vst_speaker_arrangement.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_speaker_arrangement.html; sourceTree = ""; }; + 24A2FF6F0F90D1DD003BB5A7 /* struct_vst_speaker_properties-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_speaker_properties-members.html"; sourceTree = ""; }; + 24A2FF700F90D1DD003BB5A7 /* struct_vst_speaker_properties.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_speaker_properties.html; sourceTree = ""; }; + 24A2FF710F90D1DD003BB5A7 /* struct_vst_time_info-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_time_info-members.html"; sourceTree = ""; }; + 24A2FF720F90D1DD003BB5A7 /* struct_vst_time_info.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_time_info.html; sourceTree = ""; }; + 24A2FF730F90D1DD003BB5A7 /* struct_vst_variable_io-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_variable_io-members.html"; sourceTree = ""; }; + 24A2FF740F90D1DD003BB5A7 /* struct_vst_variable_io.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_variable_io.html; sourceTree = ""; }; + 24A2FF750F90D1DD003BB5A7 /* struct_vst_window-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "struct_vst_window-members.html"; sourceTree = ""; }; + 24A2FF760F90D1DD003BB5A7 /* struct_vst_window.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = struct_vst_window.html; sourceTree = ""; }; + 24A2FF770F90D1DD003BB5A7 /* structfx_bank-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "structfx_bank-members.html"; sourceTree = ""; }; + 24A2FF780F90D1DD003BB5A7 /* structfx_bank.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = structfx_bank.html; sourceTree = ""; }; + 24A2FF790F90D1DD003BB5A7 /* structfx_program-members.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "structfx_program-members.html"; sourceTree = ""; }; + 24A2FF7A0F90D1DD003BB5A7 /* structfx_program.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = structfx_program.html; sourceTree = ""; }; + 24A2FF7B0F90D1DD003BB5A7 /* tab_b.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_b.gif; sourceTree = ""; }; + 24A2FF7C0F90D1DD003BB5A7 /* tab_l.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_l.gif; sourceTree = ""; }; + 24A2FF7D0F90D1DD003BB5A7 /* tab_r.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = tab_r.gif; sourceTree = ""; }; + 24A2FF7E0F90D1DD003BB5A7 /* tabs.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = tabs.css; sourceTree = ""; }; + 24A2FF7F0F90D1DD003BB5A7 /* Termination.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Termination.gif; sourceTree = ""; }; + 24A2FF800F90D1DD003BB5A7 /* thanks.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = thanks.html; sourceTree = ""; }; + 24A2FF810F90D1DD003BB5A7 /* tree.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = tree.html; sourceTree = ""; }; + 24A2FF820F90D1DD003BB5A7 /* TurnOff.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = TurnOff.gif; sourceTree = ""; }; + 24A2FF830F90D1DD003BB5A7 /* TurnOn.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = TurnOn.gif; sourceTree = ""; }; + 24A2FF840F90D1DD003BB5A7 /* vstfxstore_8h.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = vstfxstore_8h.html; sourceTree = ""; }; + 24A2FF850F90D1DD003BB5A7 /* vstoffline.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = vstoffline.html; sourceTree = ""; }; + 24A2FF860F90D1DD003BB5A7 /* vstparamstruct.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = vstparamstruct.html; sourceTree = ""; }; + 24A2FF870F90D1DD003BB5A7 /* vstpluglogo.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = vstpluglogo.jpg; sourceTree = ""; }; + 24A2FF880F90D1DD003BB5A7 /* vstplugmain_8cpp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = vstplugmain_8cpp.html; sourceTree = ""; }; + 24A2FF890F90D1DD003BB5A7 /* whatsnew.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = whatsnew.html; sourceTree = ""; }; + 24A2FF8A0F90D1DD003BB5A7 /* sdk.menu.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = sdk.menu.html; sourceTree = ""; }; + 24A2FF8B0F90D1DD003BB5A7 /* sdk.overview.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = sdk.overview.html; sourceTree = ""; }; + 24A2FF8C0F90D1DD003BB5A7 /* sdkdoc.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = sdkdoc.css; sourceTree = ""; }; + 24A2FF8D0F90D1DD003BB5A7 /* VST Licensing Agreement.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = "VST Licensing Agreement.rtf"; sourceTree = ""; }; + 24A2FF8E0F90D1DD003BB5A7 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + 24A2FF910F90D1DD003BB5A7 /* aeffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffect.h; sourceTree = ""; }; + 24A2FF920F90D1DD003BB5A7 /* aeffectx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffectx.h; sourceTree = ""; }; + 24A2FF930F90D1DD003BB5A7 /* vstfxstore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstfxstore.h; sourceTree = ""; }; + 24A2FF980F90D1DD003BB5A7 /* adelay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = adelay.cpp; sourceTree = ""; }; + 24A2FF990F90D1DD003BB5A7 /* adelay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = adelay.h; sourceTree = ""; }; + 24A2FF9A0F90D1DD003BB5A7 /* adelaymain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = adelaymain.cpp; sourceTree = ""; }; + 24A2FF9D0F90D1DD003BB5A7 /* bmp00128.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp00128.bmp; sourceTree = ""; }; + 24A2FF9E0F90D1DD003BB5A7 /* bmp00129.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp00129.bmp; sourceTree = ""; }; + 24A2FF9F0F90D1DD003BB5A7 /* bmp00130.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp00130.bmp; sourceTree = ""; }; + 24A2FFA00F90D1DD003BB5A7 /* surrounddelay.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = surrounddelay.rc; sourceTree = ""; }; + 24A2FFA10F90D1DD003BB5A7 /* sdeditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sdeditor.cpp; sourceTree = ""; }; + 24A2FFA20F90D1DD003BB5A7 /* sdeditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sdeditor.h; sourceTree = ""; }; + 24A2FFA30F90D1DD003BB5A7 /* surrounddelay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = surrounddelay.cpp; sourceTree = ""; }; + 24A2FFA40F90D1DD003BB5A7 /* surrounddelay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = surrounddelay.h; sourceTree = ""; }; + 24A2FFA60F90D1DD003BB5A7 /* adelay.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = adelay.vcproj; sourceTree = ""; }; + 24A2FFA70F90D1DD003BB5A7 /* surrounddelay.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = surrounddelay.vcproj; sourceTree = ""; }; + 24A2FFAA0F90D1DD003BB5A7 /* again.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = again.cpp; sourceTree = ""; }; + 24A2FFAB0F90D1DD003BB5A7 /* again.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = again.h; sourceTree = ""; }; + 24A2FFAD0F90D1DD003BB5A7 /* again.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = again.vcproj; sourceTree = ""; }; + 24A2FFAF0F90D1DD003BB5A7 /* minihost-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "minihost-Info.plist"; sourceTree = ""; }; + 24A2FFB00F90D1DD003BB5A7 /* vst 2.4 examples.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = "vst 2.4 examples.xcodeproj"; sourceTree = ""; }; + 24A2FFB30F90D1DD003BB5A7 /* vst2.4Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = vst2.4Info.plist; sourceTree = ""; }; + 24A2FFB60F90D1DD003BB5A7 /* minieditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = minieditor.cpp; sourceTree = ""; }; + 24A2FFB70F90D1DD003BB5A7 /* minihost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = minihost.cpp; sourceTree = ""; }; + 24A2FFB90F90D1DD003BB5A7 /* minihost.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = minihost.vcproj; sourceTree = ""; }; + 24A2FFBC0F90D1DD003BB5A7 /* vstxsynth.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vstxsynth.rc; sourceTree = ""; }; + 24A2FFBD0F90D1DD003BB5A7 /* vstxsynth.vstxml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vstxsynth.vstxml; sourceTree = ""; }; + 24A2FFBF0F90D1DD003BB5A7 /* gmnames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gmnames.h; sourceTree = ""; }; + 24A2FFC00F90D1DD003BB5A7 /* vstxsynth.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstxsynth.cpp; sourceTree = ""; }; + 24A2FFC10F90D1DD003BB5A7 /* vstxsynth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstxsynth.h; sourceTree = ""; }; + 24A2FFC20F90D1DD003BB5A7 /* vstxsynthproc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstxsynthproc.cpp; sourceTree = ""; }; + 24A2FFC40F90D1DD003BB5A7 /* vstxsynth.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = vstxsynth.vcproj; sourceTree = ""; }; + 24A2FFC60F90D1DD003BB5A7 /* samples.sln */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = samples.sln; sourceTree = ""; }; + 24A2FFC70F90D1DD003BB5A7 /* vstplug.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vstplug.def; sourceTree = ""; }; + 24A2FFC90F90D1DD003BB5A7 /* adelay.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = adelay.vcproj; sourceTree = ""; }; + 24A2FFCA0F90D1DD003BB5A7 /* again.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = again.vcproj; sourceTree = ""; }; + 24A2FFCB0F90D1DD003BB5A7 /* minihost.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = minihost.vcproj; sourceTree = ""; }; + 24A2FFCC0F90D1DD003BB5A7 /* samples.sln */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = samples.sln; sourceTree = ""; }; + 24A2FFCD0F90D1DD003BB5A7 /* surrounddelay.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = surrounddelay.vcproj; sourceTree = ""; }; + 24A2FFCE0F90D1DD003BB5A7 /* vstxsynth.vcproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = vstxsynth.vcproj; sourceTree = ""; }; + 24A2FFD00F90D1DD003BB5A7 /* adelay.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = adelay.dsp; sourceTree = ""; }; + 24A2FFD10F90D1DD003BB5A7 /* again.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = again.dsp; sourceTree = ""; }; + 24A2FFD20F90D1DD003BB5A7 /* minihost.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = minihost.dsp; sourceTree = ""; }; + 24A2FFD30F90D1DD003BB5A7 /* samples.dsw */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = samples.dsw; sourceTree = ""; }; + 24A2FFD40F90D1DD003BB5A7 /* surrounddelay.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = surrounddelay.dsp; sourceTree = ""; }; + 24A2FFD50F90D1DD003BB5A7 /* vstxsynth.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vstxsynth.dsp; sourceTree = ""; }; + 24A2FFD80F90D1DD003BB5A7 /* aeffeditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffeditor.h; sourceTree = ""; }; + 24A2FFD90F90D1DD003BB5A7 /* audioeffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioeffect.cpp; sourceTree = ""; }; + 24A2FFDA0F90D1DD003BB5A7 /* audioeffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioeffect.h; sourceTree = ""; }; + 24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioeffectx.cpp; sourceTree = ""; }; + 24A2FFDC0F90D1DD003BB5A7 /* audioeffectx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioeffectx.h; sourceTree = ""; }; + 24A2FFDD0F90D1DD003BB5A7 /* vstplugmain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstplugmain.cpp; sourceTree = ""; }; + 24A2FFE10F90D1DD003BB5A7 /* audiounit.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = audiounit.exp; sourceTree = ""; }; + 24A2FFE20F90D1DD003BB5A7 /* cw_vst_prefix.pch++ */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = "cw_vst_prefix.pch++"; sourceTree = ""; }; + 24A2FFE30F90D1DD003BB5A7 /* drawtest.cw9prj */ = {isa = PBXFileReference; lastKnownFileType = file; path = drawtest.cw9prj; sourceTree = ""; }; + 24A2FFE40F90D1DD003BB5A7 /* drawtest.plc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = drawtest.plc; sourceTree = ""; }; + 24A2FFE50F90D1DD003BB5A7 /* drawtest.xcode */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = drawtest.xcode; sourceTree = ""; }; + 24A2FFE80F90D1DD003BB5A7 /* drawtest.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = drawtest.xcodeproj; sourceTree = ""; }; + 24A2FFEB0F90D1DD003BB5A7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 24A2FFEC0F90D1DD003BB5A7 /* xcode_au_prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xcode_au_prefix.h; sourceTree = ""; }; + 24A2FFED0F90D1DD003BB5A7 /* xcode_vst_prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xcode_vst_prefix.h; sourceTree = ""; }; + 24A2FFEF0F90D1DD003BB5A7 /* audiounit.r */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.rez; path = audiounit.r; sourceTree = ""; }; + 24A2FFF00F90D1DD003BB5A7 /* bmp00001.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bmp00001.png; sourceTree = ""; }; + 24A2FFF10F90D1DD003BB5A7 /* bmp00100.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bmp00100.png; sourceTree = ""; }; + 24A2FFF20F90D1DD003BB5A7 /* bmp01000.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bmp01000.png; sourceTree = ""; }; + 24A2FFF30F90D1DD003BB5A7 /* bmp10001.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10001.bmp; sourceTree = ""; }; + 24A2FFF40F90D1DD003BB5A7 /* bmp10002.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10002.bmp; sourceTree = ""; }; + 24A2FFF50F90D1DD003BB5A7 /* bmp10003.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10003.bmp; sourceTree = ""; }; + 24A2FFF60F90D1DD003BB5A7 /* bmp10004.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10004.bmp; sourceTree = ""; }; + 24A2FFF70F90D1DD003BB5A7 /* bmp10005.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10005.bmp; sourceTree = ""; }; + 24A2FFF80F90D1DD003BB5A7 /* bmp10006.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10006.bmp; sourceTree = ""; }; + 24A2FFF90F90D1DD003BB5A7 /* bmp10007.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10007.bmp; sourceTree = ""; }; + 24A2FFFA0F90D1DD003BB5A7 /* bmp10008.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10008.bmp; sourceTree = ""; }; + 24A2FFFB0F90D1DD003BB5A7 /* bmp10009.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10009.bmp; sourceTree = ""; }; + 24A2FFFC0F90D1DD003BB5A7 /* bmp10010.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10010.bmp; sourceTree = ""; }; + 24A2FFFD0F90D1DD003BB5A7 /* bmp10011.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10011.bmp; sourceTree = ""; }; + 24A2FFFE0F90D1DD003BB5A7 /* bmp10012.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10012.bmp; sourceTree = ""; }; + 24A2FFFF0F90D1DD003BB5A7 /* bmp10013.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = bmp10013.bmp; sourceTree = ""; }; + 24CFB70307E7A0220081BD57 /* PkgInfo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PkgInfo; path = mac/PkgInfo; sourceTree = ""; }; + 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DitherFloatProc.cpp; path = source/DitherFloatProc.cpp; sourceTree = ""; }; + 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 = ""; }; +/* 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 = ""; + }; + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 2434720A098313350063BBF1 /* QuickTime.framework */, + 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */, + 24CFB70307E7A0220081BD57 /* PkgInfo */, + 8D01CCD10486CAD60068D4B7 /* Info.plist */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77ADFE841716C02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 2407DEB6089929BA00EB68BF /* DitherFloat.cpp */, + 24D8286F09A914000093AEF8 /* DitherFloatProc.cpp */, + 245463B80991757100464AD3 /* DitherFloat.h */, + ); + name = Source; + sourceTree = ""; + }; + 19C28FB4FE9D528D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 2407DE920899296600EB68BF /* DitherFloat.vst */, + ); + name = Products; + sourceTree = ""; + }; + 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 = ""; + }; + 24A2000F0F90D1DD003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A200100F90D1DD003BB5A7 /* drawtest.def */, + 24A200110F90D1DD003BB5A7 /* drawtest.rc */, + 24A200120F90D1DD003BB5A7 /* drawtest.vcproj */, + ); + name = win; + path = /vstsdk2.4/vstgui.sf/drawtest/win; + sourceTree = ""; + }; + 24A200130F90D1DD003BB5A7 /* win.vc6 */ = { + isa = PBXGroup; + children = ( + 24A200140F90D1DD003BB5A7 /* drawtest.dsp */, + 24A200150F90D1DD003BB5A7 /* drawtest.dsw */, + ); + name = win.vc6; + path = /vstsdk2.4/vstgui.sf/drawtest/win.vc6; + sourceTree = ""; + }; + 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 = ""; + }; + 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 = ""; + }; + 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 = ""; + }; + 24A203CE0F90D272003BB5A7 /* Products */ = { + isa = PBXGroup; + children = ( + 24A203D70F90D272003BB5A7 /* again.vst */, + 24A203D90F90D272003BB5A7 /* adelay.vst */, + 24A203DB0F90D272003BB5A7 /* vstxsynth.vst */, + 24A203DD0F90D272003BB5A7 /* surrounddelay.vst */, + 24A203DF0F90D272003BB5A7 /* minihost.app */, + ); + name = Products; + sourceTree = ""; + }; + 24A203E00F90D272003BB5A7 /* Products */ = { + isa = PBXGroup; + children = ( + 24A203E50F90D272003BB5A7 /* drawtest.component */, + 24A203E70F90D272003BB5A7 /* drawtest.vst */, + ); + name = Products; + sourceTree = ""; + }; + 24A203E80F90D272003BB5A7 /* Products */ = { + isa = PBXGroup; + children = ( + 24A203ED0F90D272003BB5A7 /* drawtest.component */, + 24A203EF0F90D272003BB5A7 /* drawtest.vst */, + ); + name = Products; + sourceTree = ""; + }; + 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 = ""; + }; + 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 = ""; + }; + 24A2FEC20F90D1DC003BB5A7 /* bin */ = { + isa = PBXGroup; + children = ( + 24A2FEC30F90D1DC003BB5A7 /* mac */, + 24A2FED50F90D1DC003BB5A7 /* win */, + ); + name = bin; + path = /vstsdk2.4/bin; + sourceTree = ""; + }; + 24A2FEC30F90D1DC003BB5A7 /* mac */ = { + isa = PBXGroup; + children = ( + 24A2FEC40F90D1DC003BB5A7 /* VSTMonitor.vst */, + 24A2FED40F90D1DC003BB5A7 /* VSTParamTool.app */, + ); + name = mac; + path = /vstsdk2.4/bin/mac; + sourceTree = ""; + }; + 24A2FEC40F90D1DC003BB5A7 /* VSTMonitor.vst */ = { + isa = PBXGroup; + children = ( + 24A2FEC50F90D1DC003BB5A7 /* Contents */, + ); + name = VSTMonitor.vst; + path = /vstsdk2.4/bin/mac/VSTMonitor.vst; + sourceTree = ""; + }; + 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 = ""; + }; + 24A2FEC70F90D1DC003BB5A7 /* MacOS */ = { + isa = PBXGroup; + children = ( + 24A2FEC80F90D1DC003BB5A7 /* VSTMonitor */, + ); + name = MacOS; + path = /vstsdk2.4/bin/mac/VSTMonitor.vst/Contents/MacOS; + sourceTree = ""; + }; + 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 = ""; + }; + 24A2FED50F90D1DC003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A2FED60F90D1DC003BB5A7 /* vstmonitor.dll */, + 24A2FED70F90D1DC003BB5A7 /* vstparamtool.exe */, + ); + name = win; + path = /vstsdk2.4/bin/win; + sourceTree = ""; + }; + 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 = ""; + }; + 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 = ""; + }; + 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 = ""; + }; + 24A2FF8F0F90D1DD003BB5A7 /* pluginterfaces */ = { + isa = PBXGroup; + children = ( + 24A2FF900F90D1DD003BB5A7 /* vst2.x */, + ); + name = pluginterfaces; + path = /vstsdk2.4/pluginterfaces; + sourceTree = ""; + }; + 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 = ""; + }; + 24A2FF940F90D1DD003BB5A7 /* public.sdk */ = { + isa = PBXGroup; + children = ( + 24A2FF950F90D1DD003BB5A7 /* samples */, + 24A2FFD60F90D1DD003BB5A7 /* source */, + ); + name = public.sdk; + path = /vstsdk2.4/public.sdk; + sourceTree = ""; + }; + 24A2FF950F90D1DD003BB5A7 /* samples */ = { + isa = PBXGroup; + children = ( + 24A2FF960F90D1DD003BB5A7 /* vst2.x */, + ); + name = samples; + path = /vstsdk2.4/public.sdk/samples; + sourceTree = ""; + }; + 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 = ""; + }; + 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 = ""; + }; + 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 = ""; + }; + 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 = ""; + }; + 24A2FFA50F90D1DD003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A2FFA60F90D1DD003BB5A7 /* adelay.vcproj */, + 24A2FFA70F90D1DD003BB5A7 /* surrounddelay.vcproj */, + ); + name = win; + path = /vstsdk2.4/public.sdk/samples/vst2.x/adelay/win; + sourceTree = ""; + }; + 24A2FFA80F90D1DD003BB5A7 /* again */ = { + isa = PBXGroup; + children = ( + 24A2FFA90F90D1DD003BB5A7 /* source */, + 24A2FFAC0F90D1DD003BB5A7 /* win */, + ); + name = again; + path = /vstsdk2.4/public.sdk/samples/vst2.x/again; + sourceTree = ""; + }; + 24A2FFA90F90D1DD003BB5A7 /* source */ = { + isa = PBXGroup; + children = ( + 24A2FFAA0F90D1DD003BB5A7 /* again.cpp */, + 24A2FFAB0F90D1DD003BB5A7 /* again.h */, + ); + name = source; + path = /vstsdk2.4/public.sdk/samples/vst2.x/again/source; + sourceTree = ""; + }; + 24A2FFAC0F90D1DD003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A2FFAD0F90D1DD003BB5A7 /* again.vcproj */, + ); + name = win; + path = /vstsdk2.4/public.sdk/samples/vst2.x/again/win; + sourceTree = ""; + }; + 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 = ""; + }; + 24A2FFB40F90D1DD003BB5A7 /* minihost */ = { + isa = PBXGroup; + children = ( + 24A2FFB50F90D1DD003BB5A7 /* source */, + 24A2FFB80F90D1DD003BB5A7 /* win */, + ); + name = minihost; + path = /vstsdk2.4/public.sdk/samples/vst2.x/minihost; + sourceTree = ""; + }; + 24A2FFB50F90D1DD003BB5A7 /* source */ = { + isa = PBXGroup; + children = ( + 24A2FFB60F90D1DD003BB5A7 /* minieditor.cpp */, + 24A2FFB70F90D1DD003BB5A7 /* minihost.cpp */, + ); + name = source; + path = /vstsdk2.4/public.sdk/samples/vst2.x/minihost/source; + sourceTree = ""; + }; + 24A2FFB80F90D1DD003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A2FFB90F90D1DD003BB5A7 /* minihost.vcproj */, + ); + name = win; + path = /vstsdk2.4/public.sdk/samples/vst2.x/minihost/win; + sourceTree = ""; + }; + 24A2FFBA0F90D1DD003BB5A7 /* vstxsynth */ = { + isa = PBXGroup; + children = ( + 24A2FFBB0F90D1DD003BB5A7 /* resource */, + 24A2FFBE0F90D1DD003BB5A7 /* source */, + 24A2FFC30F90D1DD003BB5A7 /* win */, + ); + name = vstxsynth; + path = /vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth; + sourceTree = ""; + }; + 24A2FFBB0F90D1DD003BB5A7 /* resource */ = { + isa = PBXGroup; + children = ( + 24A2FFBC0F90D1DD003BB5A7 /* vstxsynth.rc */, + 24A2FFBD0F90D1DD003BB5A7 /* vstxsynth.vstxml */, + ); + name = resource; + path = /vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/resource; + sourceTree = ""; + }; + 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 = ""; + }; + 24A2FFC30F90D1DD003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A2FFC40F90D1DD003BB5A7 /* vstxsynth.vcproj */, + ); + name = win; + path = /vstsdk2.4/public.sdk/samples/vst2.x/vstxsynth/win; + sourceTree = ""; + }; + 24A2FFC50F90D1DD003BB5A7 /* win */ = { + isa = PBXGroup; + children = ( + 24A2FFC60F90D1DD003BB5A7 /* samples.sln */, + 24A2FFC70F90D1DD003BB5A7 /* vstplug.def */, + ); + name = win; + path = /vstsdk2.4/public.sdk/samples/vst2.x/win; + sourceTree = ""; + }; + 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 = ""; + }; + 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 = ""; + }; + 24A2FFD60F90D1DD003BB5A7 /* source */ = { + isa = PBXGroup; + children = ( + 24A2FFD70F90D1DD003BB5A7 /* vst2.x */, + ); + name = source; + path = /vstsdk2.4/public.sdk/source; + sourceTree = ""; + }; + 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 = ""; + }; + 24A2FFDE0F90D1DD003BB5A7 /* vstgui.sf */ = { + isa = PBXGroup; + children = ( + 24A2FFDF0F90D1DD003BB5A7 /* drawtest */, + 24A200160F90D1DD003BB5A7 /* vstgui */, + ); + name = vstgui.sf; + path = /vstsdk2.4/vstgui.sf; + sourceTree = ""; + }; + 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 = ""; + }; + 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 = ""; + }; + 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 = ""; + }; +/* 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 @@ + + + + + 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 Binary files /dev/null and b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/christopherjohnson.xcuserdatad/UserInterfaceState.xcuserstate 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 Binary files /dev/null and b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/project.xcworkspace/xcuserdata/spiadmin.xcuserdatad/UserInterfaceState.xcuserstate 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 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Xcode3/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1v3 + FavBarConfig + + PBXProjectModuleGUID + 91857D9F148EF61800AAA11B + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1v3 + MajorVersion + 33 + MinorVersion + 0 + Name + Default + Notifications + + OpenEditors + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-combo-popup + action + NSToolbarFlexibleSpaceItem + debugger-enable-breakpoints + build-and-go + com.apple.ide.PBXToolbarStopButton + get-info + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 089C166AFE841209C02AAC07 + 089C1671FE841209C02AAC07 + 19C28FB4FE9D528D11CA2CBB + 089C167CFE841241C02AAC07 + 08FB77ADFE841716C02AAC07 + 1C37FBAC04509CD000000102 + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 11 + 10 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 693}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 711}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 286 197 1261 752 0 0 1680 1028 + + Module + PBXSmartGroupTreeModule + Proportion + 203pt + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + Gain.cpp + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + Gain.cpp + _historyCapacity + 0 + bookmark + 911C2A9D1491A5F600A430AF + history + + 915DCCBB1491A5B8008574E6 + + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {1053, 508}} + RubberWindowFrame + 286 197 1261 752 0 0 1680 1028 + + Module + PBXNavigatorGroup + Proportion + 508pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 513}, {1053, 198}} + RubberWindowFrame + 286 197 1261 752 0 0 1680 1028 + + Module + XCDetailModule + Proportion + 198pt + + + Proportion + 1053pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 911C2A901491A5F600A430AF + 1CE0B1FE06471DED0097A5F4 + 911C2A911491A5F600A430AF + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.shortV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Xcode3/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + 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 '%@'? + WindowJustification + 5 + WindowOrderList + + 91857DA0148EF61800AAA11B + /Users/spiadmin/Documents/Gain/Gain.xcodeproj + + WindowString + 286 197 1261 752 0 0 1680 1028 + WindowToolsV3 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {743, 413}} + RubberWindowFrame + 112 208 743 695 0 0 1680 1028 + + Module + PBXNavigatorGroup + Proportion + 413pt + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{0, 418}, {743, 236}} + RubberWindowFrame + 112 208 743 695 0 0 1680 1028 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 654pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 91857DA0148EF61800AAA11B + 911C2A921491A5F600A430AF + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowContentMinSize + 486 300 + WindowString + 112 208 743 695 0 0 1680 1028 + WindowToolGUID + 91857DA0148EF61800AAA11B + WindowToolIsVisible + + + + Identifier + windowTool.debugger + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {317, 164}} + {{317, 0}, {377, 164}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {694, 164}} + {{0, 164}, {694, 216}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleDrawerSize + {100, 120} + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {694, 380}} + RubberWindowFrame + 321 238 694 422 0 0 1440 878 + + Module + PBXDebugSessionModule + Proportion + 100% + + + Proportion + 100% + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CD10A99069EF8BA00B06720 + 1C0AD2AB069F1E9B00FABCE6 + 1C162984064C10D400B95A72 + 1C0AD2AC069F1E9B00FABCE6 + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 321 238 694 422 0 0 1440 878 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + 0 + + + Identifier + windowTool.find + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD0528D0623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {781, 167}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 50% + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{8, 0}, {773, 254}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 50% + + + Proportion + 428pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D57069F1CE1000CFCEE + 1C530D58069F1CE1000CFCEE + 1C530D59069F1CE1000CFCEE + 1CDD528C0622207200134675 + 1C530D5A069F1CE1000CFCEE + 1CE0B1FE06471DED0097A5F4 + 1CD0528E0623707200166675 + + WindowString + 62 385 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + MENUSEPARATOR + + + Identifier + windowTool.debuggerConsole + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {650, 250}} + RubberWindowFrame + 516 632 650 250 0 0 1680 1027 + + Module + PBXDebugCLIModule + Proportion + 209pt + + + Proportion + 209pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAAD065D492600B07095 + 1C78EAAE065D492600B07095 + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 650 41 650 250 0 0 1280 1002 + WindowToolGUID + 1C78EAAD065D492600B07095 + WindowToolIsVisible + 0 + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.0950012207031 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + Identifier + windowTool.breakpoints + IsVertical + 0 + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 0 + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CDDB66807F98D9800BB5817 + 1CDDB66907F98D9800BB5817 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 315 424 744 409 0 0 1440 878 + WindowToolGUID + 1CDDB66807F98D9800BB5817 + WindowToolIsVisible + 1 + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + 0 + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + SchemeUserState + + Gain.xcscheme + + orderHint + 8 + + + SuppressBuildableAutocreation + + 8D01CCC60486CAD60068D4B7 + + primary + + + + + 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 @@ + + + + + SchemeUserState + + «PROJECTNAME».xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 8D01CCC60486CAD60068D4B7 + + primary + + + + + diff --git "a/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" "b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" new file mode 100755 index 0000000..0df2de4 --- /dev/null +++ "b/plugins/MacVST/DitherFloat/DitherFloat.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + DitherFloat + CFBundleIconFile + + CFBundleIdentifier + com.airwindows.DitherFloat + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleSignature + Dthr + CFBundleVersion + 1.0 + CSResourcesFileMapped + + + 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 \ 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 +#include +#include + +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 @@ _historyCapacity 0 bookmark - 8BBB33F821C46ADB00825986 + 8B79387A21F575DF006E9731 history - 8BBB33E421C45DDB00825986 + 8BBB33F821C46ADB00825986 SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 102}} RubberWindowFrame 320 286 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 102pt Proportion - 324pt + 339pt Tabs @@ -393,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} + {{10, 27}, {603, 312}} RubberWindowFrame 320 286 810 487 0 0 1440 878 @@ -477,11 +477,11 @@ TableOfContents - 8BBB33F921C46ADB00825986 + 8B79387B21F575DF006E9731 1CA23ED40692098700951B8B - 8BBB33FA21C46ADB00825986 + 8B79387C21F575DF006E9731 8B0237581D42B1C400E1E8C8 - 8BBB33FB21C46ADB00825986 + 8B79387D21F575DF006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 566520539.86159599 + 569734623.23729205 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,6 @@ 5 WindowOrderList - 8BBB33FC21C46ADB00825986 /Users/christopherjohnson/Desktop/MacVST/DitherMeDiskers/DitherMeDiskers.xcodeproj WindowString 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 = ""; - 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 @@ _historyCapacity 0 bookmark - 8BBB34C121C46EA800825986 + 8B79389A21F57607006E9731 history 8B416DB721B6143700DD5013 8B416DB821B6143700DD5013 8BBB310321B8993300825986 - 8BBB34C021C46EA800825986 + 8BBB34C121C46EA800825986 SplitCount @@ -371,18 +371,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 613 141 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -396,7 +396,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} + {{10, 27}, {603, 414}} RubberWindowFrame 613 141 810 487 0 0 1440 878 @@ -480,11 +480,11 @@ TableOfContents - 8BBB34C221C46EA800825986 + 8B79389B21F57607006E9731 1CA23ED40692098700951B8B - 8BBB34C321C46EA800825986 + 8B79389C21F57607006E9731 8B0237581D42B1C400E1E8C8 - 8BBB34C421C46EA800825986 + 8B79389D21F57607006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -637,7 +637,7 @@ StatusbarIsVisible TimeStamp - 566521512.17248595 + 569734663.38253498 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -654,7 +654,6 @@ 5 WindowOrderList - 8BBB34C521C46EA800825986 /Users/christopherjohnson/Desktop/MacVST/DitherMeTimbers/DitherMeTimbers.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8B914094213DCA1600BA6EEC + 8B79385A21F575BA006E9731 history 8B914093213DCA1600BA6EEC - 8B913F89213DBC2200BA6EEC + 8B914094213DCA1600BA6EEC SplitCount @@ -369,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 51}} + {{0, 0}, {603, 32}} RubberWindowFrame 34 315 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 51pt + 32pt Proportion - 390pt + 409pt Tabs @@ -394,7 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} + {{10, 27}, {603, 382}} RubberWindowFrame 34 315 810 487 0 0 1440 878 @@ -478,11 +478,11 @@ TableOfContents - 8B914095213DCA1600BA6EEC + 8B79385B21F575BA006E9731 1CA23ED40692098700951B8B - 8B914096213DCA1600BA6EEC + 8B79385C21F575BA006E9731 8B0237581D42B1C400E1E8C8 - 8B914097213DCA1600BA6EEC + 8B79385D21F575BA006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +635,7 @@ StatusbarIsVisible TimeStamp - 557697558.29189706 + 569734586.84466803 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,7 +652,6 @@ 5 WindowOrderList - 8B914098213DCA1600BA6EEC /Users/christopherjohnson/Desktop/MacVST/Ditherbox/Ditherbox.xcodeproj WindowString 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 @@ 185 RubberWindowFrame - 318 298 810 487 0 0 1440 878 + 73 294 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -339,7 +339,7 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - audioeffectx.cpp + DoublePaulProc.cpp PBXSplitModuleInNavigatorKey Split0 @@ -347,14 +347,15 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - audioeffectx.cpp + DoublePaulProc.cpp _historyCapacity 0 bookmark - 8B9D79991F7FA9C1007AB60F + 8B7938BA21F5762A006E9731 history - 8B9D6B781F7EE06F007AB60F + 8B913F4F213DBA1400BA6EEC + 8B913F51213DBA1400BA6EEC SplitCount @@ -368,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 117}} RubberWindowFrame - 318 298 810 487 0 0 1440 878 + 73 294 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 117pt Proportion - 428pt + 324pt Tabs @@ -393,9 +394,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} + {{10, 27}, {603, 297}} RubberWindowFrame - 318 298 810 487 0 0 1440 878 + 73 294 810 487 0 0 1440 878 Module XCDetailModule @@ -477,11 +478,11 @@ TableOfContents - 8B9D799A1F7FA9C1007AB60F + 8B7938BB21F5762A006E9731 1CA23ED40692098700951B8B - 8B9D799B1F7FA9C1007AB60F + 8B7938BC21F5762A006E9731 8B0237581D42B1C400E1E8C8 - 8B9D799C1F7FA9C1007AB60F + 8B7938BD21F5762A006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528460225.04550499 + 569734698.54333794 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,11 +652,10 @@ 5 WindowOrderList - 8BB6DDFD1E5A8BDB00F3CD1D /Users/christopherjohnson/Desktop/MacVST/DoublePaul/DoublePaul.xcodeproj WindowString - 318 298 810 487 0 0 1440 878 + 73 294 810 487 0 0 1440 878 WindowToolsV3 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 7 4 0 @@ -339,7 +339,7 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - Drive.h + DriveProc.cpp PBXSplitModuleInNavigatorKey Split0 @@ -347,16 +347,16 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - Drive.h + DriveProc.cpp _historyCapacity 0 bookmark - 8B9D79AE1F7FA9E9007AB60F + 8B7938EA21F5766D006E9731 history 8B93B4861DB80EC5000D49A5 - 8B93B4C41DB816DE000D49A5 - 8B9D6BA21F7EE49F007AB60F + 8B7938E821F5766D006E9731 + 8B7938E921F5766D006E9731 SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 86}} + {{0, 0}, {603, 69}} RubberWindowFrame 332 336 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 86pt + 69pt Proportion - 355pt + 372pt Tabs @@ -395,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} - RubberWindowFrame - 332 336 810 487 0 0 1440 878 + {{10, 27}, {603, 345}} Module XCDetailModule @@ -451,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 345}} + RubberWindowFrame + 332 336 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +479,11 @@ TableOfContents - 8B9D79AF1F7FA9E9007AB60F + 8B7938EB21F5766D006E9731 1CA23ED40692098700951B8B - 8B9D79B01F7FA9E9007AB60F + 8B7938EC21F5766D006E9731 8B0237581D42B1C400E1E8C8 - 8B9D79B11F7FA9E9007AB60F + 8B7938ED21F5766D006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 528460265.50522298 + 569734765.92090094 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,7 +653,7 @@ 5 WindowOrderList - 8B9D79B21F7FA9E9007AB60F + 8B7938EE21F5766D006E9731 /Users/christopherjohnson/Desktop/MacVST/Drive/Drive.xcodeproj WindowString 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -298,7 +300,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 7 4 0 @@ -321,7 +323,7 @@ 185 RubberWindowFrame - 28 345 810 487 0 0 1440 878 + 176 340 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -360,7 +362,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 28 345 810 487 0 0 1440 878 + 176 340 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -439,7 +441,7 @@ Frame {{10, 27}, {603, 414}} RubberWindowFrame - 28 345 810 487 0 0 1440 878 + 176 340 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -467,11 +469,11 @@ TableOfContents - 8B7E3F2420A72F9200482CB5 + 8B79390D21F576B0006E9731 1CA23ED40692098700951B8B - 8B7E3F2520A72F9200482CB5 + 8B79390E21F576B0006E9731 8B0237581D42B1C400E1E8C8 - 8B7E3F2620A72F9200482CB5 + 8B79390F21F576B0006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -644,7 +646,7 @@ StatusbarIsVisible TimeStamp - 547827602.36658394 + 569734832.13053405 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -661,11 +663,10 @@ 5 WindowOrderList - 8B7E3F2D20A72F9200482CB5 - /Users/christopherjohnson/Desktop/DrumSlam/DrumSlam.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/DrumSlam/DrumSlam.xcodeproj WindowString - 28 345 810 487 0 0 1440 878 + 176 340 810 487 0 0 1440 878 WindowToolsV3 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 @@ OpenEditors - - - Content - - PBXProjectModuleGUID - 8B560C6F217D21F300D3BC37 - PBXProjectModuleLabel - DubCenterProc.cpp - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 8B560C70217D21F300D3BC37 - PBXProjectModuleLabel - DubCenterProc.cpp - _historyCapacity - 0 - bookmark - 8B560C71217D21F300D3BC37 - history - - 8B560C61217D21A400D3BC37 - - - SplitCount - 1 - - StatusBarVisibility - - - Geometry - - Frame - {{0, 20}, {895, 734}} - PBXModuleWindowStatusBarHidden2 - - RubberWindowFrame - 45 103 895 775 0 0 1440 878 - - - + PerspectiveWidths 810 @@ -510,11 +469,11 @@ TableOfContents - 8B560C6C217D21F300D3BC37 + 8B79392221F576D2006E9731 1CA23ED40692098700951B8B - 8B560C6D217D21F300D3BC37 + 8B79392321F576D2006E9731 8B0237581D42B1C400E1E8C8 - 8B560C6E217D21F300D3BC37 + 8B79392421F576D2006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -667,7 +626,7 @@ StatusbarIsVisible TimeStamp - 561848819.78781903 + 569734870.07559299 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -685,7 +644,6 @@ WindowOrderList /Users/christopherjohnson/Desktop/MacVST/DubCenter/DubCenter.xcodeproj - 8B560C6F217D21F300D3BC37 WindowString 28 291 810 487 0 0 1440 878 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 5 4 0 @@ -323,7 +323,7 @@ 185 RubberWindowFrame - 86 201 810 487 0 0 1440 878 + 613 292 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -339,7 +339,7 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - DubSub.h + DubSub.cpp PBXSplitModuleInNavigatorKey Split0 @@ -347,16 +347,16 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - DubSub.h + DubSub.cpp _historyCapacity 0 bookmark - 8B42FE6F216992760092969A + 8B79394121F57705006E9731 history - 8B42FC0221604E960092969A - 8B42FC0321604E960092969A - 8B42FE27216978EE0092969A + 8B15DBE121788E19007AD769 + 8B15DC4F21789111007AD769 + 8B15DC6F217891D4007AD769 SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {603, 117}} RubberWindowFrame - 86 201 810 487 0 0 1440 878 + 613 292 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 117pt Proportion - 372pt + 324pt Tabs @@ -395,9 +395,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 297}} RubberWindowFrame - 86 201 810 487 0 0 1440 878 + 613 292 810 487 0 0 1440 878 Module XCDetailModule @@ -479,11 +479,11 @@ TableOfContents - 8B42FE70216992760092969A + 8B79394221F57705006E9731 1CA23ED40692098700951B8B - 8B42FE71216992760092969A + 8B79394321F57705006E9731 8B0237581D42B1C400E1E8C8 - 8B42FE72216992760092969A + 8B79394421F57705006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 560566902.22521102 + 569734917.70818102 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -656,7 +656,7 @@ /Users/christopherjohnson/Desktop/MacVST/DubSub/DubSub.xcodeproj WindowString - 86 201 810 487 0 0 1440 878 + 613 292 810 487 0 0 1440 878 WindowToolsV3 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 @@ _historyCapacity 0 bookmark - 8B9D79DA1F7FAA9D007AB60F + 8B79396121F5772F006E9731 history 8BCF31DB1F4E436800632CB6 - 8B9D6BC21F7EE4EE007AB60F + 8B9D79DA1F7FAA9D007AB60F SplitCount @@ -369,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 102}} + {{0, 0}, {603, 86}} RubberWindowFrame 354 325 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 102pt + 86pt Proportion - 339pt + 355pt Tabs @@ -394,7 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 312}} + {{10, 27}, {603, 328}} RubberWindowFrame 354 325 810 487 0 0 1440 878 @@ -478,11 +478,11 @@ TableOfContents - 8B9D79DB1F7FAA9D007AB60F + 8B79396221F5772F006E9731 1CA23ED40692098700951B8B - 8B9D79DC1F7FAA9D007AB60F + 8B79396321F5772F006E9731 8B0237581D42B1C400E1E8C8 - 8B9D79DD1F7FAA9D007AB60F + 8B79396421F5772F006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -655,7 +655,7 @@ StatusbarIsVisible TimeStamp - 528460445.29056901 + 569734959.42124605 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -672,7 +672,6 @@ 5 WindowOrderList - 8B9D79DE1F7FAA9D007AB60F /Users/christopherjohnson/Desktop/MacVST/DustBunny/DustBunny.xcodeproj WindowString 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -349,10 +351,10 @@ _historyCapacity 0 bookmark - 8B181AF8204C941100516BEE + 8B793A0321F57823006E9731 history - 8B181AF7204C941100516BEE + 8B181AF8204C941100516BEE SplitCount @@ -366,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame 15 373 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -391,7 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 15 373 810 487 0 0 1440 878 Module XCDetailModule @@ -446,8 +450,6 @@ Frame {{10, 27}, {603, 282}} - RubberWindowFrame - 15 373 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -475,11 +477,11 @@ TableOfContents - 8B181AAB204C8C4800516BEE + 8B793A0421F57823006E9731 1CA23ED40692098700951B8B - 8B181AAC204C8C4800516BEE + 8B793A0521F57823006E9731 8B0237581D42B1C400E1E8C8 - 8B181AAD204C8C4800516BEE + 8B793A0621F57823006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -632,7 +634,7 @@ StatusbarIsVisible TimeStamp - 541889553.15927601 + 569735203.85904706 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -649,8 +651,7 @@ 5 WindowOrderList - 8B181AF9204C941100516BEE - /Users/christopherjohnson/Desktop/EQ/EQ.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/EQ/EQ.xcodeproj WindowString 15 373 810 487 0 0 1440 878 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 @@ 185 RubberWindowFrame - 108 310 810 487 0 0 1440 878 + 267 298 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,10 +351,10 @@ _historyCapacity 0 bookmark - 8B9D79F01F7FAAB9007AB60F + 8B79398121F57771006E9731 history - 8B9D6BE11F7EE521007AB60F + 8B9D79F01F7FAAB9007AB60F SplitCount @@ -370,7 +370,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 108 310 810 487 0 0 1440 878 + 267 298 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -395,7 +395,7 @@ Frame {{10, 27}, {603, 414}} RubberWindowFrame - 108 310 810 487 0 0 1440 878 + 267 298 810 487 0 0 1440 878 Module XCDetailModule @@ -477,11 +477,11 @@ TableOfContents - 8B9D79F11F7FAAB9007AB60F + 8B79398221F57771006E9731 1CA23ED40692098700951B8B - 8B9D79F21F7FAAB9007AB60F + 8B79398321F57771006E9731 8B0237581D42B1C400E1E8C8 - 8B9D79F31F7FAAB9007AB60F + 8B79398421F57771006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528460473.03459197 + 569735025.80681503 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,11 +651,10 @@ 5 WindowOrderList - 8B9D79F41F7FAAB9007AB60F /Users/christopherjohnson/Desktop/MacVST/EdIsDim/EdIsDim.xcodeproj WindowString - 108 310 810 487 0 0 1440 878 + 267 298 810 487 0 0 1440 878 WindowToolsV3 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 @@ OpenEditors - - - Content - - PBXProjectModuleGUID - 8BC00A1120436E0500304BC7 - PBXProjectModuleLabel - ElectroHatProc.cpp - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 8BC00A1220436E0500304BC7 - PBXProjectModuleLabel - ElectroHatProc.cpp - _historyCapacity - 0 - bookmark - 8BC00A1F20436E0500304BC7 - history - - 8BC00A0C20436DEA00304BC7 - - - SplitCount - 1 - - StatusBarVisibility - - - Geometry - - Frame - {{0, 20}, {895, 734}} - PBXModuleWindowStatusBarHidden2 - - RubberWindowFrame - 57 103 895 775 0 0 1440 878 - - - + PerspectiveWidths 810 @@ -392,11 +351,11 @@ _historyCapacity 0 bookmark - 8BC00A1E20436E0500304BC7 + 8B7939A121F57797006E9731 history 8BC009F720436BB500304BC7 - 8BC009F920436BB500304BC7 + 8BC00A1E20436E0500304BC7 SplitCount @@ -410,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 102}} + {{0, 0}, {603, 86}} RubberWindowFrame 35 342 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 102pt + 86pt Proportion - 339pt + 355pt Tabs @@ -435,7 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 312}} + {{10, 27}, {603, 328}} RubberWindowFrame 35 342 810 487 0 0 1440 878 @@ -519,11 +478,11 @@ TableOfContents - 8BC00A0E20436E0500304BC7 + 8B7939A221F57797006E9731 1CA23ED40692098700951B8B - 8BC00A0F20436E0500304BC7 + 8B7939A321F57797006E9731 8B0237581D42B1C400E1E8C8 - 8BC00A1020436E0500304BC7 + 8B7939A421F57797006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -676,7 +635,7 @@ StatusbarIsVisible TimeStamp - 541289989.72780704 + 569735063.85601294 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -694,7 +653,6 @@ WindowOrderList /Users/christopherjohnson/Desktop/MacVST/ElectroHat/ElectroHat.xcodeproj - 8BC00A1120436E0500304BC7 WindowString 35 342 810 487 0 0 1440 878 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 @@ OpenEditors - - - Content - - PBXProjectModuleGUID - 8B7E3F5420A7CBF900482CB5 - PBXProjectModuleLabel - Energy.cpp - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 8B7E3F5520A7CBF900482CB5 - PBXProjectModuleLabel - Energy.cpp - _historyCapacity - 0 - bookmark - 8B7E3F5620A7CBF900482CB5 - history - - 8B7E3F4220A7CBD700482CB5 - - - SplitCount - 1 - - StatusBarVisibility - - - Geometry - - Frame - {{0, 20}, {895, 734}} - PBXModuleWindowStatusBarHidden2 - - RubberWindowFrame - 31 103 895 775 0 0 1440 878 - - - + PerspectiveWidths 810 @@ -364,7 +323,7 @@ 185 RubberWindowFrame - 4 348 810 487 0 0 1440 878 + 218 341 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -403,7 +362,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 4 348 810 487 0 0 1440 878 + 218 341 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -428,7 +387,7 @@ Frame {{10, 27}, {603, 414}} RubberWindowFrame - 4 348 810 487 0 0 1440 878 + 218 341 810 487 0 0 1440 878 Module XCDetailModule @@ -510,11 +469,11 @@ TableOfContents - 8B7E3F5120A7CBF900482CB5 + 8B7939C121F577BA006E9731 1CA23ED40692098700951B8B - 8B7E3F5220A7CBF900482CB5 + 8B7939C221F577BA006E9731 8B0237581D42B1C400E1E8C8 - 8B7E3F5320A7CBF900482CB5 + 8B7939C321F577BA006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -687,7 +646,7 @@ StatusbarIsVisible TimeStamp - 547867641.91280901 + 569735098.81678498 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -705,10 +664,9 @@ WindowOrderList /Users/christopherjohnson/Desktop/MacVST/Energy/Energy.xcodeproj - 8B7E3F5420A7CBF900482CB5 WindowString - 4 348 810 487 0 0 1440 878 + 218 341 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -298,7 +300,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 7 + 5 4 0 @@ -321,7 +323,7 @@ 185 RubberWindowFrame - 13 367 810 487 0 0 1440 878 + 348 289 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -349,10 +351,10 @@ _historyCapacity 0 bookmark - 8B4C96601F94E0F300064452 + 8B7939ED21F57803006E9731 history - 8B4C965F1F94E0F300064452 + 8B7939DE21F577D7006E9731 SplitCount @@ -366,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {603, 51}} RubberWindowFrame - 13 367 810 487 0 0 1440 878 + 348 289 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 51pt Proportion - 372pt + 390pt Tabs @@ -391,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 363}} Module XCDetailModule @@ -445,9 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 363}} RubberWindowFrame - 13 367 810 487 0 0 1440 878 + 348 289 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -475,11 +477,11 @@ TableOfContents - 8B4C96611F94E0F300064452 + 8B7939EE21F57803006E9731 1CA23ED40692098700951B8B - 8B4C96621F94E0F300064452 + 8B7939EF21F57803006E9731 8B0237581D42B1C400E1E8C8 - 8B4C96631F94E0F300064452 + 8B7939F021F57803006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -652,7 +654,7 @@ StatusbarIsVisible TimeStamp - 529850611.29679602 + 569735171.20292497 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -669,11 +671,10 @@ 5 WindowOrderList - 8B4C96641F94E0F300064452 - /Users/christopherjohnson/Desktop/Ensemble/Ensemble.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/Ensemble/Ensemble.xcodeproj WindowString - 13 367 810 487 0 0 1440 878 + 348 289 810 487 0 0 1440 878 WindowToolsV3 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 @@ 185 RubberWindowFrame - 653 231 810 487 0 0 1440 878 + 630 231 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -362,7 +362,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 653 231 810 487 0 0 1440 878 + 630 231 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -387,7 +387,7 @@ Frame {{10, 27}, {603, 414}} RubberWindowFrame - 653 231 810 487 0 0 1440 878 + 630 231 810 487 0 0 1440 878 Module XCDetailModule @@ -469,11 +469,11 @@ TableOfContents - 8BB5DD0E1FBCE05D008B4570 + 8B793A2521F57858006E9731 1CA23ED40692098700951B8B - 8BB5DD0F1FBCE05D008B4570 + 8B793A2621F57858006E9731 8B0237581D42B1C400E1E8C8 - 8BB5DD101FBCE05D008B4570 + 8B793A2721F57858006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 532472312.54818797 + 569735256.70818996 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,11 +643,10 @@ 5 WindowOrderList - 8BB5DD481FBCE1F8008B4570 /Users/christopherjohnson/Desktop/MacVST/EveryTrim/EveryTrim.xcodeproj WindowString - 653 231 810 487 0 0 1440 878 + 630 231 810 487 0 0 1440 878 WindowToolsV3 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 @@ 185 RubberWindowFrame - 630 284 810 487 0 0 1440 878 + 607 307 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,12 +351,12 @@ _historyCapacity 0 bookmark - 8B9D7A101F7FAAD9007AB60F + 8B793A4421F57884006E9731 history 8B4E72C81D7B161E00EE9940 8B21780D1D7BA3A500797BDD - 8B9D6C161F7EE565007AB60F + 8B9D7A101F7FAAD9007AB60F SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 51}} + {{0, 0}, {603, 32}} RubberWindowFrame - 630 284 810 487 0 0 1440 878 + 607 307 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 51pt + 32pt Proportion - 390pt + 409pt Tabs @@ -395,9 +395,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} + {{10, 27}, {603, 382}} RubberWindowFrame - 630 284 810 487 0 0 1440 878 + 607 307 810 487 0 0 1440 878 Module XCDetailModule @@ -479,11 +479,11 @@ TableOfContents - 8B9D7A111F7FAAD9007AB60F + 8B793A4521F57884006E9731 1CA23ED40692098700951B8B - 8B9D7A121F7FAAD9007AB60F + 8B793A4621F57884006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7A131F7FAAD9007AB60F + 8B793A4721F57884006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 528460505.71975499 + 569735300.74946201 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +653,10 @@ 5 WindowOrderList - 8B9D7A141F7FAAD9007AB60F /Users/christopherjohnson/Desktop/MacVST/FathomFive/FathomFive.xcodeproj WindowString - 630 284 810 487 0 0 1440 878 + 607 307 810 487 0 0 1440 878 WindowToolsV3 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 @@ 185 RubberWindowFrame - 21 338 810 487 0 0 1440 878 + 334 313 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,10 +351,10 @@ _historyCapacity 0 bookmark - 8B15DD34217AAF67007AD769 + 8B793A6E21F578D2006E9731 history - 8B42FCB721604F9E0092969A + 8B15DD34217AAF67007AD769 SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 102}} RubberWindowFrame - 21 338 810 487 0 0 1440 878 + 334 313 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 102pt Proportion - 324pt + 339pt Tabs @@ -393,9 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} + {{10, 27}, {603, 312}} RubberWindowFrame - 21 338 810 487 0 0 1440 878 + 334 313 810 487 0 0 1440 878 Module XCDetailModule @@ -477,11 +477,11 @@ TableOfContents - 8B15DD35217AAF67007AD769 + 8B793A6F21F578D2006E9731 1CA23ED40692098700951B8B - 8B15DD36217AAF67007AD769 + 8B793A7021F578D2006E9731 8B0237581D42B1C400E1E8C8 - 8B15DD37217AAF67007AD769 + 8B793A7121F578D2006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 561688423.58535099 + 569735378.06358504 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,12 +651,10 @@ 5 WindowOrderList - 8B15DD38217AAF67007AD769 - 8B15DD39217AAF67007AD769 - /Users/christopherjohnson/Desktop/Floor/Floor.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/Floor/Floor.xcodeproj WindowString - 21 338 810 487 0 0 1440 878 + 334 313 810 487 0 0 1440 878 WindowToolsV3 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 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - <No Editor> + PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 + PBXProjectModuleLabel + SplitCount 1 @@ -467,11 +469,11 @@ TableOfContents - 8B9D7A301F7FAB0C007AB60F + 8B793A8421F578F8006E9731 1CA23ED40692098700951B8B - 8B9D7A311F7FAB0C007AB60F + 8B793A8521F578F8006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7A321F7FAB0C007AB60F + 8B793A8621F578F8006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -624,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528460556.044348 + 569735416.520316 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -641,7 +643,6 @@ 5 WindowOrderList - 8B9D7A331F7FAB0C007AB60F /Users/christopherjohnson/Desktop/MacVST/Fracture/Fracture.xcodeproj WindowString 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 @@ OpenEditors - - - Content - - PBXProjectModuleGUID - 8B2B778A1F6D6FF800A2CD5B - PBXProjectModuleLabel - FromTape.h - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 8B2B778B1F6D6FF800A2CD5B - PBXProjectModuleLabel - FromTape.h - _historyCapacity - 0 - bookmark - 8B9D7A521F7FAB2D007AB60F - history - - 8B9D6C631F7EE5D4007AB60F - - - SplitCount - 1 - - StatusBarVisibility - - - Geometry - - Frame - {{0, 20}, {895, 734}} - PBXModuleWindowStatusBarHidden2 - - RubberWindowFrame - 545 103 895 775 0 0 1440 878 - - - + PerspectiveWidths 810 @@ -510,11 +469,11 @@ TableOfContents - 8B9D7A4F1F7FAB2D007AB60F + 8B793AA321F5791C006E9731 1CA23ED40692098700951B8B - 8B9D7A501F7FAB2D007AB60F + 8B793AA421F5791C006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7A511F7FAB2D007AB60F + 8B793AA521F5791C006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -687,7 +646,7 @@ StatusbarIsVisible TimeStamp - 528460589.56712198 + 569735452.09700799 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -704,7 +663,6 @@ 5 WindowOrderList - 8B9D7A531F7FAB2D007AB60F 8B2B778A1F6D6FF800A2CD5B /Users/christopherjohnson/Desktop/MacVST/FromTape/FromTape.xcodeproj 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 @@ 185 RubberWindowFrame - 17 371 810 487 0 0 1440 878 + 460 296 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,10 +351,10 @@ _historyCapacity 0 bookmark - 8B416DA521B60DFE00DD5013 + 8B793AC221F57942006E9731 history - 8BDA3BB721B3655A00CC56FA + 8B416DA521B60DFE00DD5013 SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 51}} + {{0, 0}, {603, 32}} RubberWindowFrame - 17 371 810 487 0 0 1440 878 + 460 296 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 51pt + 32pt Proportion - 390pt + 409pt Tabs @@ -393,9 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} + {{10, 27}, {603, 382}} RubberWindowFrame - 17 371 810 487 0 0 1440 878 + 460 296 810 487 0 0 1440 878 Module XCDetailModule @@ -477,11 +477,11 @@ TableOfContents - 8B416DA621B60DFE00DD5013 + 8B793AC321F57942006E9731 1CA23ED40692098700951B8B - 8B416DA721B60DFE00DD5013 + 8B793AC421F57942006E9731 8B0237581D42B1C400E1E8C8 - 8B416DA821B60DFE00DD5013 + 8B793AC521F57942006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 565579262.52925205 + 569735490.74607503 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -654,7 +654,7 @@ /Users/christopherjohnson/Desktop/MacVST/Gatelope/Gatelope.xcodeproj WindowString - 17 371 810 487 0 0 1440 878 + 460 296 810 487 0 0 1440 878 WindowToolsV3 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 @@ 185 RubberWindowFrame - 23 322 810 487 0 0 1440 878 + 504 266 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,10 +351,10 @@ _historyCapacity 0 bookmark - 8BC5D0B2209410C30058B257 + 8B793AF221F579C4006E9731 history - 8BC5D0B1209410C30058B257 + 8B793AE021F57961006E9731 SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame - 23 322 810 487 0 0 1440 878 + 504 266 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -393,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} - RubberWindowFrame - 23 322 810 487 0 0 1440 878 + {{10, 27}, {603, 297}} Module XCDetailModule @@ -449,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 504 266 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -477,11 +477,11 @@ TableOfContents - 8BC5D0B3209410C30058B257 + 8B793AF321F579C4006E9731 1CA23ED40692098700951B8B - 8BC5D0B4209410C30058B257 + 8B793AF421F579C4006E9731 8B0237581D42B1C400E1E8C8 - 8BC5D0B5209410C30058B257 + 8B793AF521F579C4006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 546574531.81958306 + 569735620.885432 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -654,7 +654,7 @@ /Users/christopherjohnson/Desktop/MacVST/Golem/Golem.xcodeproj WindowString - 23 322 810 487 0 0 1440 878 + 504 266 810 487 0 0 1440 878 WindowToolsV3 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 old mode 100644 new mode 100755 index 32ae3e2..d93196d --- 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 old mode 100644 new mode 100755 index 4a8fe96..c016b37 --- a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/christopherjohnson.perspectivev3 @@ -323,7 +323,7 @@ 185 RubberWindowFrame - 21 368 810 487 0 0 1440 878 + 630 296 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -362,7 +362,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 21 368 810 487 0 0 1440 878 + 630 296 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -387,7 +387,7 @@ Frame {{10, 27}, {603, 414}} RubberWindowFrame - 21 368 810 487 0 0 1440 878 + 630 296 810 487 0 0 1440 878 Module XCDetailModule @@ -469,11 +469,11 @@ TableOfContents - 8B4E5432201BA7F900B5DC2A + 8B793B0821F579E6006E9731 1CA23ED40692098700951B8B - 8B4E5433201BA7F900B5DC2A + 8B793B0921F579E6006E9731 8B0237581D42B1C400E1E8C8 - 8B4E5434201BA7F900B5DC2A + 8B793B0A21F579E6006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 538683385.46335804 + 569735654.76659203 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,10 +643,10 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/GrooveWear/GrooveWear.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/GrooveWear/GrooveWear.xcodeproj WindowString - 21 368 810 487 0 0 1440 878 + 630 296 810 487 0 0 1440 878 WindowToolsV3 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.mode1v3 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/spiadmin.pbxuser old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git "a/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" "b/plugins/MacVST/GrooveWear/GrooveWear.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" old mode 100644 new mode 100755 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 7 4 0 @@ -351,12 +351,12 @@ _historyCapacity 0 bookmark - 8B9D7A791F7FAB58007AB60F + 8B793B3421F57A3B006E9731 history 8BA186921D49975600F8B3DC 8B55B2CB1D5E372E00B8D4D6 - 8B9D6C941F7EE6EE007AB60F + 8B793B2521F57A02006E9731 SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 32}} + {{0, 0}, {603, 13}} RubberWindowFrame 306 299 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 32pt + 13pt Proportion - 409pt + 428pt Tabs @@ -395,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} - RubberWindowFrame - 306 299 810 487 0 0 1440 878 + {{10, 27}, {603, 401}} Module XCDetailModule @@ -451,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 401}} + RubberWindowFrame + 306 299 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +479,11 @@ TableOfContents - 8B9D7A7A1F7FAB58007AB60F + 8B793B3521F57A3B006E9731 1CA23ED40692098700951B8B - 8B9D7A7B1F7FAB58007AB60F + 8B793B3621F57A3B006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7A7C1F7FAB58007AB60F + 8B793B3721F57A3B006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 528460632.65863901 + 569735739.28810406 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,7 +653,7 @@ 5 WindowOrderList - 8B9D7A7D1F7FAB58007AB60F + 8B793B3821F57A3B006E9731 /Users/christopherjohnson/Desktop/MacVST/GuitarConditioner/GuitarConditioner.xcodeproj WindowString 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -349,10 +351,10 @@ _historyCapacity 0 bookmark - 8B181A1B204B984700516BEE + 8B793B5521F5F802006E9731 history - 8B181A1A204B984700516BEE + 8B181A1B204B984700516BEE SplitCount @@ -366,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame 23 367 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -391,7 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 23 367 810 487 0 0 1440 878 Module XCDetailModule @@ -446,8 +450,6 @@ Frame {{10, 27}, {603, 282}} - RubberWindowFrame - 23 367 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -475,11 +477,11 @@ TableOfContents - 8B1819D9204B91BA00516BEE + 8B793B5621F5F802006E9731 1CA23ED40692098700951B8B - 8B1819DA204B91BA00516BEE + 8B793B5721F5F802006E9731 8B0237581D42B1C400E1E8C8 - 8B1819DB204B91BA00516BEE + 8B793B5821F5F802006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -632,7 +634,7 @@ StatusbarIsVisible TimeStamp - 541825095.83224404 + 569767938.33907902 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -649,7 +651,7 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/HardVacuum/HardVacuum.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/HardVacuum/HardVacuum.xcodeproj WindowString 23 367 810 487 0 0 1440 878 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -349,10 +351,10 @@ _historyCapacity 0 bookmark - 8BB5DD521FBCE26D008B4570 + 8B793B8E21F5F8F6006E9731 history - 8BB5DD511FBCE26D008B4570 + 8BB5DD521FBCE26D008B4570 SplitCount @@ -366,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame 37 371 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -391,7 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 37 371 810 487 0 0 1440 878 Module XCDetailModule @@ -446,8 +450,6 @@ Frame {{10, 27}, {603, 282}} - RubberWindowFrame - 37 371 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -475,11 +477,11 @@ TableOfContents - 8BB5DD281FBCE0B3008B4570 + 8B793B8F21F5F8F6006E9731 1CA23ED40692098700951B8B - 8BB5DD291FBCE0B3008B4570 + 8B793B9021F5F8F6006E9731 8B0237581D42B1C400E1E8C8 - 8BB5DD2A1FBCE0B3008B4570 + 8B793B9121F5F8F6006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -632,7 +634,7 @@ StatusbarIsVisible TimeStamp - 532472429.63955802 + 569768182.06468904 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -649,7 +651,7 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/HermeTrim/HermeTrim.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/HermeTrim/HermeTrim.xcodeproj WindowString 37 371 810 487 0 0 1440 878 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 5 4 0 @@ -323,7 +323,7 @@ 185 RubberWindowFrame - 303 293 810 487 0 0 1440 878 + 278 293 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,10 +351,10 @@ _historyCapacity 0 bookmark - 8B9D7A8F1F7FAB72007AB60F + 8B793B7821F5F8CF006E9731 history - 8B9D6CBE1F7EE9E7007AB60F + 8B793B7321F5F897006E9731 SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 32}} + {{0, 0}, {603, 13}} RubberWindowFrame - 303 293 810 487 0 0 1440 878 + 278 293 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 32pt + 13pt Proportion - 409pt + 428pt Tabs @@ -393,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} - RubberWindowFrame - 303 293 810 487 0 0 1440 878 + {{10, 27}, {603, 401}} Module XCDetailModule @@ -449,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 401}} + RubberWindowFrame + 278 293 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -477,11 +477,11 @@ TableOfContents - 8B9D7A901F7FAB72007AB60F + 8B793B7921F5F8CF006E9731 1CA23ED40692098700951B8B - 8B9D7A911F7FAB72007AB60F + 8B793B7A21F5F8CF006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7A921F7FAB72007AB60F + 8B793B7B21F5F8CF006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528460658.10219902 + 569768143.68088698 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,11 +651,10 @@ 5 WindowOrderList - 8B9D7A931F7FAB72007AB60F /Users/christopherjohnson/Desktop/MacVST/Hermepass/Hermepass.xcodeproj WindowString - 303 293 810 487 0 0 1440 878 + 278 293 810 487 0 0 1440 878 WindowToolsV3 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 @@ TableOfContents - 8B9D7ACE1F7FABD1007AB60F + 8B793BAE21F5F91A006E9731 1CA23ED40692098700951B8B - 8B9D7ACF1F7FABD1007AB60F + 8B793BAF21F5F91A006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7AD01F7FABD1007AB60F + 8B793BB021F5F91A006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528460753.11869597 + 569768218.37077904 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,6 @@ 5 WindowOrderList - 8B9D7AD11F7FABD1007AB60F /Users/christopherjohnson/Desktop/MacVST/HighImpact/HighImpact.xcodeproj WindowString 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 5 4 0 @@ -351,10 +351,10 @@ _historyCapacity 0 bookmark - 8B9D7AED1F7FABEE007AB60F + 8B793BD921F5FB42006E9731 history - 8B9D6D1C1F7EEAA7007AB60F + 8B9D7AED1F7FABEE007AB60F SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 369 207 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -393,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} - RubberWindowFrame - 369 207 810 487 0 0 1440 878 + {{10, 27}, {603, 414}} Module XCDetailModule @@ -449,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 369 207 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -477,11 +477,11 @@ TableOfContents - 8B9D7AEE1F7FABEE007AB60F + 8B793BDA21F5FB42006E9731 1CA23ED40692098700951B8B - 8B9D7AEF1F7FABEE007AB60F + 8B793BDB21F5FB42006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7AF01F7FABEE007AB60F + 8B793BDC21F5FB42006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528460782.88018203 + 569768770.42441106 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,6 @@ 5 WindowOrderList - 8B9D7AF11F7FABEE007AB60F /Users/christopherjohnson/Desktop/MacVST/Highpass/Highpass.xcodeproj WindowString 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 @@ TableOfContents - 8B9D7B0D1F7FAC06007AB60F + 8B793BF921F5FCAE006E9731 1CA23ED40692098700951B8B - 8B9D7B0E1F7FAC06007AB60F + 8B793BFA21F5FCAE006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7B0F1F7FAC06007AB60F + 8B793BFB21F5FCAE006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528460806.70010799 + 569769134.11826503 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,6 @@ 5 WindowOrderList - 8B9D7B101F7FAC06007AB60F /Users/christopherjohnson/Desktop/MacVST/Hombre/Hombre.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8B9D7B361F7FAC33007AB60F + 8B793C0E21F5FCCD006E9731 history - 8B9D6D5B1F7EEB52007AB60F + 8B9D7B361F7FAC33007AB60F SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {604, 314}} + {{0, 0}, {604, 303}} RubberWindowFrame 564 142 811 710 0 0 1440 878 Module PBXNavigatorGroup Proportion - 314pt + 303pt Proportion - 350pt + 361pt Tabs @@ -393,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {604, 323}} + {{10, 27}, {604, 334}} RubberWindowFrame 564 142 811 710 0 0 1440 878 @@ -477,11 +477,11 @@ TableOfContents - 8B9D7B371F7FAC33007AB60F + 8B793C0F21F5FCCD006E9731 1CA23ED40692098700951B8B - 8B9D7B381F7FAC33007AB60F + 8B793C1021F5FCCD006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7B391F7FAC33007AB60F + 8B793C1121F5FCCD006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528460851.584521 + 569769165.367818 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,6 @@ 5 WindowOrderList - 8B9D7B3A1F7FAC33007AB60F /Users/christopherjohnson/Desktop/MacVST/IronOxide5/IronOxide5.xcodeproj WindowString 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 5 4 0 @@ -360,18 +360,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 415 94 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -385,9 +385,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} - RubberWindowFrame - 415 94 810 487 0 0 1440 878 + {{10, 27}, {603, 414}} Module XCDetailModule @@ -441,7 +439,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 415 94 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -469,11 +469,11 @@ TableOfContents - 8B9D7B4C1F7FAC58007AB60F + 8B793C3A21F5FF8A006E9731 1CA23ED40692098700951B8B - 8B9D7B4D1F7FAC58007AB60F + 8B793C3B21F5FF8A006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7B4E1F7FAC58007AB60F + 8B793C3C21F5FF8A006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528460888.62616801 + 569769866.66388798 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,6 @@ 5 WindowOrderList - 8B9D7B4F1F7FAC58007AB60F /Users/christopherjohnson/Desktop/MacVST/IronOxideClassic/IronOxideClassic.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8B9D7B751F7FACB8007AB60F + 8B793C5C21F60027006E9731 history - 8B9D6D9A1F7EF21C007AB60F + 8B9D7B751F7FACB8007AB60F SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 307 326 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -393,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} - RubberWindowFrame - 307 326 810 487 0 0 1440 878 + {{10, 27}, {603, 414}} Module XCDetailModule @@ -449,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 307 326 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -477,11 +477,11 @@ TableOfContents - 8B9D7B761F7FACB8007AB60F + 8B793C5D21F60027006E9731 1CA23ED40692098700951B8B - 8B9D7B771F7FACB8007AB60F + 8B793C5E21F60027006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7B781F7FACB8007AB60F + 8B793C5F21F60027006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -654,7 +654,7 @@ StatusbarIsVisible TimeStamp - 528460984.74037701 + 569770023.37923205 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -671,7 +671,6 @@ 5 WindowOrderList - 8B9D7B791F7FACB8007AB60F /Users/christopherjohnson/Desktop/MacVST/Logical4/Logical4.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8BCEFAAE2042230B002E8187 + 8B793C7221F60046006E9731 history - 8B277E0D1FD86E330038EA07 + 8BCEFAAE2042230B002E8187 SplitCount @@ -477,11 +477,11 @@ TableOfContents - 8BCEFAAF2042230B002E8187 + 8B793C7321F60046006E9731 1CA23ED40692098700951B8B - 8BCEFAB02042230B002E8187 + 8B793C7421F60046006E9731 8B0237581D42B1C400E1E8C8 - 8BCEFAB12042230B002E8187 + 8B793C7521F60046006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 541205259.86103797 + 569770054.94940603 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,6 @@ 5 WindowOrderList - 8BCEFAB22042230B002E8187 /Users/christopherjohnson/Desktop/MacVST/Loud/Loud.xcodeproj WindowString 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 5 4 0 @@ -351,12 +351,12 @@ _historyCapacity 0 bookmark - 8B9D7BAB1F7FACF3007AB60F + 8B793C9521F600A2006E9731 history 8B22B1231DB18F4A0075D7AA 8B22B1531DB190EA0075D7AA - 8B9D6DDA1F7EF2A5007AB60F + 8B793C9021F6007F006E9731 SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 194}} + {{0, 0}, {603, 182}} RubberWindowFrame 355 287 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 194pt + 182pt Proportion - 247pt + 259pt Tabs @@ -395,9 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 220}} - RubberWindowFrame - 355 287 810 487 0 0 1440 878 + {{10, 27}, {603, 232}} Module XCDetailModule @@ -451,7 +449,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 178}} + {{10, 27}, {603, 232}} + RubberWindowFrame + 355 287 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -479,11 +479,11 @@ TableOfContents - 8B9D7BAC1F7FACF3007AB60F + 8B793C9621F600A2006E9731 1CA23ED40692098700951B8B - 8B9D7BAD1F7FACF3007AB60F + 8B793C9721F600A2006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7BAE1F7FACF3007AB60F + 8B793C9821F600A2006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 528461043.96388102 + 569770146.430691 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,7 +653,7 @@ 5 WindowOrderList - 8B9D7BAF1F7FACF3007AB60F + 8B793C9921F600A2006E9731 /Users/christopherjohnson/Desktop/MacVST/Lowpass/Lowpass.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8B9D7BCD1F7FAD1A007AB60F + 8B793CB821F600C5006E9731 history - 8B9D6DFA1F7EF323007AB60F + 8B9D7BCD1F7FAD1A007AB60F SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 339 331 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -393,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} + {{10, 27}, {603, 414}} RubberWindowFrame 339 331 810 487 0 0 1440 878 @@ -477,11 +477,11 @@ TableOfContents - 8B9D7BCE1F7FAD1A007AB60F + 8B793CB921F600C5006E9731 1CA23ED40692098700951B8B - 8B9D7BCF1F7FAD1A007AB60F + 8B793CBA21F600C5006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7BD01F7FAD1A007AB60F + 8B793CBB21F600C5006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -654,7 +654,7 @@ StatusbarIsVisible TimeStamp - 528461082.07116401 + 569770181.85578704 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -671,7 +671,6 @@ 5 WindowOrderList - 8B9D7BD11F7FAD1A007AB60F /Users/christopherjohnson/Desktop/MacVST/Melt/Melt.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8B9D7BED1F7FAD3F007AB60F + 8B793CDA21F601C2006E9731 history - 8B9D6E101F7EF349007AB60F + 8B9D7BED1F7FAD3F007AB60F SplitCount @@ -477,11 +477,11 @@ TableOfContents - 8B9D7BEE1F7FAD3F007AB60F + 8B793CDB21F601C2006E9731 1CA23ED40692098700951B8B - 8B9D7BEF1F7FAD3F007AB60F + 8B793CDC21F601C2006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7BF01F7FAD3F007AB60F + 8B793CDD21F601C2006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -654,7 +654,7 @@ StatusbarIsVisible TimeStamp - 528461119.98817199 + 569770434.56493402 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -671,7 +671,6 @@ 5 WindowOrderList - 8B9D7BF11F7FAD3F007AB60F /Users/christopherjohnson/Desktop/MacVST/MidSide/MidSide.xcodeproj WindowString 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 @@ OpenEditors - - - Content - - PBXProjectModuleGUID - 8BE0C0741FB1C9E6000B2082 - PBXProjectModuleLabel - NCSeventeenProc.cpp - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 8BE0C0751FB1C9E6000B2082 - PBXProjectModuleLabel - NCSeventeenProc.cpp - _historyCapacity - 0 - bookmark - 8BE0C0761FB1C9E6000B2082 - history - - 8BE0C0611FB1C9B7000B2082 - - - SplitCount - 1 - - StatusBarVisibility - - - Geometry - - Frame - {{0, 20}, {1297, 742}} - PBXModuleWindowStatusBarHidden2 - - RubberWindowFrame - 13 95 1297 783 0 0 1440 878 - - - + PerspectiveWidths 810 @@ -392,12 +351,12 @@ _historyCapacity 0 bookmark - 8BE0C0701FB1C9E6000B2082 + 8B793CFA21F601E6006E9731 history 8B67C7A21FA3B4CC008C64D6 8B6692F41FB1C728007B3434 - 8B6692F61FB1C728007B3434 + 8BE0C0701FB1C9E6000B2082 SplitCount @@ -411,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 102}} + {{0, 0}, {603, 86}} RubberWindowFrame 249 231 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 102pt + 86pt Proportion - 339pt + 355pt Tabs @@ -436,7 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 312}} + {{10, 27}, {603, 328}} RubberWindowFrame 249 231 810 487 0 0 1440 878 @@ -520,11 +479,11 @@ TableOfContents - 8BE0C0711FB1C9E6000B2082 + 8B793CFB21F601E6006E9731 1CA23ED40692098700951B8B - 8BE0C0721FB1C9E6000B2082 + 8B793CFC21F601E6006E9731 8B0237581D42B1C400E1E8C8 - 8BE0C0731FB1C9E6000B2082 + 8B793CFD21F601E6006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -677,7 +636,7 @@ StatusbarIsVisible TimeStamp - 531745254.79790598 + 569770470.40799499 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -695,7 +654,6 @@ WindowOrderList /Users/christopherjohnson/Desktop/MacVST/NCSeventeen/NCSeventeen.xcodeproj - 8BE0C0741FB1C9E6000B2082 WindowString 249 231 810 487 0 0 1440 878 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 @@ _historyCapacity 0 bookmark - 8B4E5870201C0C8B00B5DC2A + 8B793D1A21F60235006E9731 history - 8B7ADC6220157443005F895F + 8B4E5870201C0C8B00B5DC2A SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {454, 9}} + {{0, 0}, {454, 0}} RubberWindowFrame 26 91 661 394 0 0 1440 878 Module PBXNavigatorGroup Proportion - 9pt + 0pt Proportion - 339pt + 348pt Tabs @@ -393,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {454, 312}} + {{10, 27}, {454, 321}} RubberWindowFrame 26 91 661 394 0 0 1440 878 @@ -477,11 +477,11 @@ TableOfContents - 8B4E5871201C0C8B00B5DC2A + 8B793D1B21F60235006E9731 1CA23ED40692098700951B8B - 8B4E5872201C0C8B00B5DC2A + 8B793D1C21F60235006E9731 8B0237581D42B1C400E1E8C8 - 8B4E5873201C0C8B00B5DC2A + 8B793D1D21F60235006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 538709131.54011202 + 569770549.64791 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode 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 @@ TableOfContents - 8B945E71204CB08000DFB653 + 8B793D3A21F60255006E9731 1CA23ED40692098700951B8B - 8B945E72204CB08000DFB653 + 8B793D3B21F60255006E9731 8B0237581D42B1C400E1E8C8 - 8B945E73204CB08000DFB653 + 8B793D3C21F60255006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 541896832.40515304 + 569770581.31031001 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode 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 @@ 258 RubberWindowFrame - 639 259 810 487 0 0 1440 878 + 630 259 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,12 +351,12 @@ _historyCapacity 0 bookmark - 8B7E3DD220A6735C00482CB5 + 8B91401E213DC60B00BA6EEC history 8B7E3DCF20A6735C00482CB5 8B7E3DD020A6735C00482CB5 - 8B7E3DD120A6735C00482CB5 + 8B91401D213DC60B00BA6EEC SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {530, 132}} + {{0, 0}, {530, 117}} RubberWindowFrame - 639 259 810 487 0 0 1440 878 + 630 259 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -395,9 +395,9 @@ GeometryConfiguration Frame - {{10, 27}, {530, 282}} + {{10, 27}, {530, 297}} RubberWindowFrame - 639 259 810 487 0 0 1440 878 + 630 259 810 487 0 0 1440 878 Module XCDetailModule @@ -479,11 +479,11 @@ TableOfContents - 8B7E3DD320A6735C00482CB5 + 8B91401F213DC60B00BA6EEC 1CA23ED40692098700951B8B - 8B7E3DD420A6735C00482CB5 + 8B914020213DC60B00BA6EEC 8B0237581D42B1C400E1E8C8 - 8B7E3DD520A6735C00482CB5 + 8B914021213DC60B00BA6EEC 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -636,7 +636,7 @@ StatusbarIsVisible TimeStamp - 547779420.72387397 + 557696523.36446095 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,11 +653,11 @@ 5 WindowOrderList - 8B7E3DD620A6735C00482CB5 + 8B914022213DC60B00BA6EEC /Users/christopherjohnson/Desktop/MacVST/NotJustAnotherDither/NotJustAnotherDither.xcodeproj WindowString - 639 259 810 487 0 0 1440 878 + 630 259 810 487 0 0 1440 878 WindowToolsV3 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -384,6 +386,8 @@ Frame {{10, 27}, {603, 414}} + RubberWindowFrame + 19 372 810 487 0 0 1440 878 Module XCDetailModule @@ -438,8 +442,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 19 372 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -467,11 +469,11 @@ TableOfContents - 8B181A2A204C7A3200516BEE + 8B793D5921F60278006E9731 1CA23ED40692098700951B8B - 8B181A2B204C7A3200516BEE + 8B793D5A21F60278006E9731 8B0237581D42B1C400E1E8C8 - 8B181A2C204C7A3200516BEE + 8B793D5B21F60278006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -624,7 +626,7 @@ StatusbarIsVisible TimeStamp - 541885613.92280805 + 569770616.13496995 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -641,9 +643,7 @@ 5 WindowOrderList - 8B181A59204C84AD00516BEE - 8B181A5A204C84AD00516BEE - /Users/christopherjohnson/Desktop/OneCornerClip/OneCornerClip.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/OneCornerClip/OneCornerClip.xcodeproj WindowString 19 372 810 487 0 0 1440 878 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 @@ _historyCapacity 0 bookmark - 8B4E574B201BE1E100B5DC2A + 8B793D7821F60308006E9731 history - 8B4E5710201BE13900B5DC2A + 8B4E574B201BE1E100B5DC2A SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame 27 370 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -393,7 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 27 370 810 487 0 0 1440 878 Module XCDetailModule @@ -448,8 +450,6 @@ Frame {{10, 27}, {603, 282}} - RubberWindowFrame - 27 370 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -477,11 +477,11 @@ TableOfContents - 8B4E574C201BE1E100B5DC2A + 8B793D7921F60308006E9731 1CA23ED40692098700951B8B - 8B4E574D201BE1E100B5DC2A + 8B793D7A21F60308006E9731 8B0237581D42B1C400E1E8C8 - 8B4E574E201BE1E100B5DC2A + 8B793D7B21F60308006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 538698209.87022996 + 569770760.80971301 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,7 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/PDBuss/PDBuss.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/PDBuss/PDBuss.xcodeproj WindowString 27 370 810 487 0 0 1440 878 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -349,11 +351,11 @@ _historyCapacity 0 bookmark - 8B4E5751201BE1E300B5DC2A + 8B793D9821F60328006E9731 history 8B4E574F201BE1E300B5DC2A - 8B4E5750201BE1E300B5DC2A + 8B4E5751201BE1E300B5DC2A SplitCount @@ -367,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame 24 89 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -392,7 +394,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 24 89 810 487 0 0 1440 878 Module XCDetailModule @@ -447,8 +451,6 @@ Frame {{10, 27}, {603, 282}} - RubberWindowFrame - 24 89 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -476,11 +478,11 @@ TableOfContents - 8B4E5752201BE1E300B5DC2A + 8B793D9921F60328006E9731 1CA23ED40692098700951B8B - 8B4E5753201BE1E300B5DC2A + 8B793D9A21F60328006E9731 8B0237581D42B1C400E1E8C8 - 8B4E5754201BE1E300B5DC2A + 8B793D9B21F60328006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -633,7 +635,7 @@ StatusbarIsVisible TimeStamp - 538698211.51852405 + 569770792.98222196 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -650,7 +652,7 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/PDChannel/PDChannel.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/PDChannel/PDChannel.xcodeproj WindowString 24 89 810 487 0 0 1440 878 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 @@ _historyCapacity 0 bookmark - 8B9D7CAA1F7FAEC4007AB60F + 8B793DB821F60356006E9731 history - 8B9D6EC41F7EF3B7007AB60F + 8B9D7CAA1F7FAEC4007AB60F SplitCount @@ -477,11 +477,11 @@ TableOfContents - 8B9D7CAB1F7FAEC4007AB60F + 8B793DB921F60356006E9731 1CA23ED40692098700951B8B - 8B9D7CAC1F7FAEC4007AB60F + 8B793DBA21F60356006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7CAD1F7FAEC4007AB60F + 8B793DBB21F60356006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528461508.86837101 + 569770838.654899 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,6 @@ 5 WindowOrderList - 8B9D7CAE1F7FAEC4007AB60F /Users/christopherjohnson/Desktop/MacVST/PhaseNudge/PhaseNudge.xcodeproj WindowString 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 5 4 0 @@ -351,10 +351,10 @@ _historyCapacity 0 bookmark - 8B9D7CCC1F7FAEE4007AB60F + 8B793DE421F603B1006E9731 history - 8B9D6EEE1F7EF3E2007AB60F + 8B9D7CCC1F7FAEE4007AB60F SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 304 344 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -393,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} - RubberWindowFrame - 304 344 810 487 0 0 1440 878 + {{10, 27}, {603, 414}} Module XCDetailModule @@ -449,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 304 344 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -477,11 +477,11 @@ TableOfContents - 8B9D7CCD1F7FAEE4007AB60F + 8B793DE521F603B1006E9731 1CA23ED40692098700951B8B - 8B9D7CCE1F7FAEE4007AB60F + 8B793DE621F603B1006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7CCF1F7FAEE4007AB60F + 8B793DE721F603B1006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -654,7 +654,7 @@ StatusbarIsVisible TimeStamp - 528461540.135059 + 569770929.49119902 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -671,7 +671,6 @@ 5 WindowOrderList - 8B9D7CD01F7FAEE4007AB60F /Users/christopherjohnson/Desktop/MacVST/Point/Point.xcodeproj WindowString 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 @@ TableOfContents - 8B6DBAC4213B60BA00E44739 + 8B793DFA21F603D1006E9731 1CA23ED40692098700951B8B - 8B6DBAC5213B60BA00E44739 + 8B793DFB21F603D1006E9731 8B0237581D42B1C400E1E8C8 - 8B6DBAC6213B60BA00E44739 + 8B793DFC21F603D1006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 557539514.49375904 + 569770961.06224799 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,8 +643,7 @@ 5 WindowOrderList - 8B6DBAC7213B60BA00E44739 - /Users/christopherjohnson/Desktop/Pop/Pop.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/Pop/Pop.xcodeproj WindowString 181 239 810 487 0 0 1440 878 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 @@ _historyCapacity 0 bookmark - 8B9D7CF61F7FAF1B007AB60F + 8B793E1921F60406006E9731 history - 8B9D6F151F7EF53E007AB60F + 8B9D7CF61F7FAF1B007AB60F SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 260 312 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -393,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} + {{10, 27}, {603, 414}} RubberWindowFrame 260 312 810 487 0 0 1440 878 @@ -477,11 +477,11 @@ TableOfContents - 8B9D7CF71F7FAF1B007AB60F + 8B793E1A21F60406006E9731 1CA23ED40692098700951B8B - 8B9D7CF81F7FAF1B007AB60F + 8B793E1B21F60406006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7CF91F7FAF1B007AB60F + 8B793E1C21F60406006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528461595.073053 + 569771014.65125096 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,6 @@ 5 WindowOrderList - 8B9D7CFA1F7FAF1B007AB60F /Users/christopherjohnson/Desktop/MacVST/PowerSag/PowerSag.xcodeproj WindowString 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 5 4 0 @@ -351,11 +351,11 @@ _historyCapacity 0 bookmark - 8B9D7D161F7FAF5A007AB60F + 8B793E3C21F60454006E9731 history 8B2E04191D8381D1001B9E01 - 8B9D6F2A1F7EF568007AB60F + 8B793E3721F60423006E9731 SplitCount @@ -369,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {603, 51}} RubberWindowFrame 630 371 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 51pt Proportion - 372pt + 390pt Tabs @@ -394,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} - RubberWindowFrame - 630 371 810 487 0 0 1440 878 + {{10, 27}, {603, 363}} Module XCDetailModule @@ -450,7 +448,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 363}} + RubberWindowFrame + 630 371 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +478,11 @@ TableOfContents - 8B9D7D171F7FAF5A007AB60F + 8B793E3D21F60454006E9731 1CA23ED40692098700951B8B - 8B9D7D181F7FAF5A007AB60F + 8B793E3E21F60454006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7D191F7FAF5A007AB60F + 8B793E3F21F60454006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528461658.22323 + 569771092.74144006 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,7 +652,6 @@ 5 WindowOrderList - 8B9D7D1A1F7FAF5A007AB60F /Users/christopherjohnson/Desktop/MacVST/Pressure4/Pressure4.xcodeproj WindowString 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 old mode 100644 new mode 100755 index a4b799a..05bbaee --- 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 old mode 100644 new mode 100755 index 735d7a1..a64a099 --- a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/christopherjohnson.perspectivev3 @@ -256,6 +256,8 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -349,10 +351,10 @@ _historyCapacity 0 bookmark - 8BBE45601FE5F4550022E6F7 + 8B793E5C21F60475006E9731 history - 8BBE455F1FE5F4550022E6F7 + 8BBE45601FE5F4550022E6F7 SplitCount @@ -366,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame 10 385 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -391,7 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 10 385 810 487 0 0 1440 878 Module XCDetailModule @@ -446,8 +450,6 @@ Frame {{10, 27}, {603, 282}} - RubberWindowFrame - 10 385 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -475,11 +477,11 @@ TableOfContents - 8BBE45611FE5F4550022E6F7 + 8B793E5D21F60475006E9731 1CA23ED40692098700951B8B - 8BBE45621FE5F4550022E6F7 + 8B793E5E21F60475006E9731 8B0237581D42B1C400E1E8C8 - 8BBE45631FE5F4550022E6F7 + 8B793E5F21F60475006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -632,7 +634,7 @@ StatusbarIsVisible TimeStamp - 535163989.59433597 + 569771125.16991305 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -649,8 +651,7 @@ 5 WindowOrderList - 8BBE45641FE5F4550022E6F7 - /Users/christopherjohnson/Desktop/PurestConsoleBuss/PurestConsoleBuss.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj WindowString 10 385 810 487 0 0 1440 878 diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/project.xcworkspace/contents.xcworkspacedata old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.mode1v3 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/spiadmin.pbxuser old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git "a/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" "b/plugins/MacVST/PurestConsoleBuss/PurestConsoleBuss.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 index cd6b4c4..9f0edd0 --- 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 old mode 100644 new mode 100755 index 91b4416..948cc4a --- a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/christopherjohnson.perspectivev3 @@ -222,48 +222,7 @@ OpenEditors - - - Content - - PBXProjectModuleGUID - 8BBE45271FE5F2760022E6F7 - PBXProjectModuleLabel - PurestConsoleChannelProc.cpp - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 8BBE45281FE5F2760022E6F7 - PBXProjectModuleLabel - PurestConsoleChannelProc.cpp - _historyCapacity - 0 - bookmark - 8BBE45291FE5F2760022E6F7 - history - - 8BBE45161FE5F1980022E6F7 - - - SplitCount - 1 - - StatusBarVisibility - - - Geometry - - Frame - {{0, 20}, {895, 734}} - PBXModuleWindowStatusBarHidden2 - - RubberWindowFrame - 8 103 895 775 0 0 1440 878 - - - + PerspectiveWidths 810 @@ -362,7 +321,7 @@ 236 RubberWindowFrame - 13 375 810 487 0 0 1440 878 + 406 301 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -390,10 +349,10 @@ _historyCapacity 0 bookmark - 8BBE45261FE5F2760022E6F7 + 8B793E7D21F604AB006E9731 history - 8BBE45251FE5F2760022E6F7 + 8B793E7C21F604AB006E9731 SplitCount @@ -407,18 +366,18 @@ GeometryConfiguration Frame - {{0, 0}, {552, 132}} + {{0, 0}, {552, 117}} RubberWindowFrame - 13 375 810 487 0 0 1440 878 + 406 301 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -432,7 +391,7 @@ GeometryConfiguration Frame - {{10, 27}, {552, 414}} + {{10, 27}, {552, 297}} Module XCDetailModule @@ -486,9 +445,9 @@ GeometryConfiguration Frame - {{10, 27}, {552, 282}} + {{10, 27}, {552, 297}} RubberWindowFrame - 13 375 810 487 0 0 1440 878 + 406 301 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -516,11 +475,11 @@ TableOfContents - 8BBE45051FE5F1020022E6F7 + 8B793E7E21F604AB006E9731 1CA23ED40692098700951B8B - 8BBE45061FE5F1020022E6F7 + 8B793E7F21F604AB006E9731 8B0237581D42B1C400E1E8C8 - 8BBE45071FE5F1020022E6F7 + 8B793E8021F604AB006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -673,7 +632,7 @@ StatusbarIsVisible TimeStamp - 535163510.630979 + 569771179.00788903 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -690,12 +649,11 @@ 5 WindowOrderList - 8BBE452A1FE5F2760022E6F7 8BBE45271FE5F2760022E6F7 - /Users/christopherjohnson/Desktop/PurestConsoleChannel/PurestConsoleChannel.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj WindowString - 13 375 810 487 0 0 1440 878 + 406 301 810 487 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/project.xcworkspace/contents.xcworkspacedata old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.mode1v3 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/spiadmin.pbxuser old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git "a/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" "b/plugins/MacVST/PurestConsoleChannel/PurestConsoleChannel.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 index 12c4f1e..d8eeda2 --- 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 old mode 100644 new mode 100755 index 41e246d..461e4df --- a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/christopherjohnson.perspectivev3 @@ -469,11 +469,11 @@ TableOfContents - 8B4E5444201BA92300B5DC2A + 8B793E9D21F604DA006E9731 1CA23ED40692098700951B8B - 8B4E5445201BA92300B5DC2A + 8B793E9E21F604DA006E9731 8B0237581D42B1C400E1E8C8 - 8B4E5446201BA92300B5DC2A + 8B793E9F21F604DA006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 538684550.59728301 + 569771226.28827202 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,7 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/PurestDrive/PurestDrive.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/PurestDrive/PurestDrive.xcodeproj WindowString 9 381 810 487 0 0 1440 878 diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/project.xcworkspace/contents.xcworkspacedata old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.mode1v3 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/spiadmin.pbxuser old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git "a/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" "b/plugins/MacVST/PurestDrive/PurestDrive.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" old mode 100644 new mode 100755 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 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 612 265 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -385,7 +385,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} + {{10, 27}, {603, 414}} RubberWindowFrame 612 265 810 487 0 0 1440 878 @@ -469,11 +469,11 @@ TableOfContents - 8B9D7D2C1F7FAF74007AB60F + 8B793EC621F6054B006E9731 1CA23ED40692098700951B8B - 8B9D7D2D1F7FAF74007AB60F + 8B793EC721F6054B006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7D2E1F7FAF74007AB60F + 8B793EC821F6054B006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528461684.32955098 + 569771339.31522799 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,6 @@ 5 WindowOrderList - 8B9D7D2F1F7FAF74007AB60F /Users/christopherjohnson/Desktop/MacVST/PurestEcho/PurestEcho.xcodeproj WindowString 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 old mode 100644 new mode 100755 index 11a21ab..60f46c3 --- 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 old mode 100644 new mode 100755 index f4f1de3..3986363 --- a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/christopherjohnson.perspectivev3 @@ -300,7 +300,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 5 + 6 4 0 @@ -323,7 +323,7 @@ 185 RubberWindowFrame - 711 333 810 487 0 0 1440 878 + 630 333 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -362,7 +362,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 711 333 810 487 0 0 1440 878 + 630 333 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -387,7 +387,7 @@ Frame {{10, 27}, {603, 414}} RubberWindowFrame - 711 333 810 487 0 0 1440 878 + 630 333 810 487 0 0 1440 878 Module XCDetailModule @@ -469,11 +469,11 @@ TableOfContents - 8BA972EE1FA145A50032B992 + 8B793EDC21F6057A006E9731 1CA23ED40692098700951B8B - 8BA972EF1FA145A50032B992 + 8B793EDD21F6057A006E9731 8B0237581D42B1C400E1E8C8 - 8BA972F01FA145A50032B992 + 8B793EDE21F6057A006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 530662821.72906101 + 569771386.05235398 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,11 +643,10 @@ 5 WindowOrderList - 8BA972F11FA145A50032B992 /Users/christopherjohnson/Desktop/MacVST/PurestGain/PurestGain.xcodeproj WindowString - 711 333 810 487 0 0 1440 878 + 630 333 810 487 0 0 1440 878 WindowToolsV3 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.mode1v3 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/spiadmin.pbxuser old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git "a/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" "b/plugins/MacVST/PurestGain/PurestGain.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" old mode 100644 new mode 100755 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 @@ _historyCapacity 0 bookmark - 8B2C4C221FC246470023028A + 8B793EFC21F605B1006E9731 history - 8B2C4C211FC246470023028A + 8B2C4C221FC246470023028A SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame 168 216 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -393,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 297}} RubberWindowFrame 168 216 810 487 0 0 1440 878 @@ -477,11 +477,11 @@ TableOfContents - 8B2C4C231FC246470023028A + 8B793EFD21F605B1006E9731 1CA23ED40692098700951B8B - 8B2C4C241FC246470023028A + 8B793EFE21F605B1006E9731 8B0237581D42B1C400E1E8C8 - 8B2C4C251FC246470023028A + 8B793EFF21F605B1006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 532825671.66727102 + 569771441.44578099 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,6 @@ 5 WindowOrderList - 8B2C4C261FC246470023028A /Users/christopherjohnson/Desktop/MacVST/PurestWarm/PurestWarm.xcodeproj WindowString 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 @@ GeometryConfiguration Frame - {{0, 0}, {603, 32}} + {{0, 0}, {603, 13}} RubberWindowFrame 498 357 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 32pt + 13pt Proportion - 409pt + 428pt Tabs @@ -385,7 +385,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} + {{10, 27}, {603, 401}} RubberWindowFrame 498 357 810 487 0 0 1440 878 @@ -469,11 +469,11 @@ TableOfContents - 8B9D7D6A1F7FAFB4007AB60F + 8B793F1C21F605CE006E9731 1CA23ED40692098700951B8B - 8B9D7D6B1F7FAFB4007AB60F + 8B793F1D21F605CE006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7D6C1F7FAFB4007AB60F + 8B793F1E21F605CE006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528461748.86590397 + 569771470.99615598 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,6 @@ 5 WindowOrderList - 8B9D7D6D1F7FAFB4007AB60F /Users/christopherjohnson/Desktop/MacVST/Pyewacket/Pyewacket.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8BBFF86220AD84A2005650EF + 8B793F3B21F605EC006E9731 history - 8BBFF86120AD84A2005650EF + 8BBFF86220AD84A2005650EF SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame 595 333 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -393,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 297}} RubberWindowFrame 595 333 810 487 0 0 1440 878 @@ -477,11 +477,11 @@ TableOfContents - 8BBFF86320AD84A2005650EF + 8B793F3C21F605EC006E9731 1CA23ED40692098700951B8B - 8BBFF86420AD84A2005650EF + 8B793F3D21F605EC006E9731 8B0237581D42B1C400E1E8C8 - 8BBFF86520AD84A2005650EF + 8B793F3E21F605EC006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 548242594.083197 + 569771500.34394598 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,6 @@ 5 WindowOrderList - 8BBFF86620AD84A2005650EF /Users/christopherjohnson/Desktop/MacVST/Righteous4/Righteous4.xcodeproj WindowString 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 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 428 317 810 487 0 0 1440 878 Module XCDetailModule @@ -441,7 +439,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 428 317 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -469,11 +469,11 @@ TableOfContents - 8B9D7D891F7FAFCE007AB60F + 8B793F6821F60667006E9731 1CA23ED40692098700951B8B - 8B9D7D8A1F7FAFCE007AB60F + 8B793F6921F60667006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7D8B1F7FAFCE007AB60F + 8B793F6A21F60667006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528461774.64021301 + 569771623.27479804 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,6 @@ 5 WindowOrderList - 8B9D7D8C1F7FAFCE007AB60F /Users/christopherjohnson/Desktop/MacVST/SideDull/SideDull.xcodeproj WindowString 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 5 4 0 @@ -351,10 +351,10 @@ _historyCapacity 0 bookmark - 8B9D7DB21F7FB00A007AB60F + 8B793F8921F606AF006E9731 history - 8B9D6FCC1F7EF6A6007AB60F + 8B9D7DB21F7FB00A007AB60F SplitCount @@ -394,8 +394,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 376 351 810 487 0 0 1440 878 Module XCDetailModule @@ -449,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 376 351 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -477,11 +477,11 @@ TableOfContents - 8B9D7DB31F7FB00A007AB60F + 8B793F8A21F606AF006E9731 1CA23ED40692098700951B8B - 8B9D7DB41F7FB00A007AB60F + 8B793F8B21F606AF006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7DB51F7FB00A007AB60F + 8B793F8C21F606AF006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528461834.34984702 + 569771695.78669202 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,8 @@ 5 WindowOrderList - 8B9D7DB61F7FB00A007AB60F + 8B793F8D21F606AF006E9731 + 8B793F8E21F606AF006E9731 /Users/christopherjohnson/Desktop/MacVST/Sidepass/Sidepass.xcodeproj WindowString 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 @@ OpenEditors - - - Content - - PBXProjectModuleGUID - 8B7E3E8520A6930B00482CB5 - PBXProjectModuleLabel - SingleEndedTriodeProc.cpp - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 8B7E3E8620A6930B00482CB5 - PBXProjectModuleLabel - SingleEndedTriodeProc.cpp - _historyCapacity - 0 - bookmark - 8B7E3E8720A6930B00482CB5 - history - - 8B7E3E7A20A690EE00482CB5 - - - SplitCount - 1 - - StatusBarVisibility - - - Geometry - - Frame - {{0, 20}, {895, 734}} - PBXModuleWindowStatusBarHidden2 - - RubberWindowFrame - 26 103 895 775 0 0 1440 878 - - - + PerspectiveWidths 810 @@ -297,6 +256,8 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -362,7 +323,7 @@ 185 RubberWindowFrame - 27 292 810 487 0 0 1440 878 + 143 323 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -390,10 +351,10 @@ _historyCapacity 0 bookmark - 8B7E3E8420A6930B00482CB5 + 8B793FA121F60766006E9731 history - 8B7E3E8320A6930B00482CB5 + 8B7E3E8420A6930B00482CB5 SplitCount @@ -407,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame - 27 292 810 487 0 0 1440 878 + 143 323 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -432,7 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 143 323 810 487 0 0 1440 878 Module XCDetailModule @@ -487,8 +450,6 @@ Frame {{10, 27}, {603, 282}} - RubberWindowFrame - 27 292 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -516,11 +477,11 @@ TableOfContents - 8B7E3E5D20A68F7800482CB5 + 8B793FA221F60766006E9731 1CA23ED40692098700951B8B - 8B7E3E5E20A68F7800482CB5 + 8B793FA321F60766006E9731 8B0237581D42B1C400E1E8C8 - 8B7E3E5F20A68F7800482CB5 + 8B793FA421F60766006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -673,7 +634,7 @@ StatusbarIsVisible TimeStamp - 547787531.91072297 + 569771878.44873595 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -691,10 +652,10 @@ WindowOrderList 8B7E3E8520A6930B00482CB5 - /Users/christopherjohnson/Desktop/SingleEndedTriode/SingleEndedTriode.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/SingleEndedTriode/SingleEndedTriode.xcodeproj WindowString - 27 292 810 487 0 0 1440 878 + 143 323 810 487 0 0 1440 878 WindowToolsV3 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 @@ _historyCapacity 0 bookmark - 8B9D7DC81F7FB021007AB60F + 8B793FC121F6088F006E9731 history 8B38EA6F1D5BFCFD003DFCC5 - 8B9D6FEC1F7EF6DF007AB60F + 8B9D7DC81F7FB021007AB60F SplitCount @@ -369,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 51}} + {{0, 0}, {603, 32}} RubberWindowFrame 490 362 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 51pt + 32pt Proportion - 390pt + 409pt Tabs @@ -394,7 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} + {{10, 27}, {603, 382}} RubberWindowFrame 490 362 810 487 0 0 1440 878 @@ -478,11 +478,11 @@ TableOfContents - 8B9D7DC91F7FB021007AB60F + 8B793FC221F6088F006E9731 1CA23ED40692098700951B8B - 8B9D7DCA1F7FB021007AB60F + 8B793FC321F6088F006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7DCB1F7FB021007AB60F + 8B793FC421F6088F006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528461857.798751 + 569772175.32019699 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,7 +652,6 @@ 5 WindowOrderList - 8B9D7DCC1F7FB021007AB60F /Users/christopherjohnson/Desktop/MacVST/Slew/Slew.xcodeproj WindowString 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 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - <No Editor> + PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 + PBXProjectModuleLabel + SplitCount 1 @@ -467,11 +469,11 @@ TableOfContents - 8B9D7DE81F7FB03B007AB60F + 8B793FE121F60920006E9731 1CA23ED40692098700951B8B - 8B9D7DE91F7FB03B007AB60F + 8B793FE221F60920006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7DEA1F7FB03B007AB60F + 8B793FE321F60920006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -644,7 +646,7 @@ StatusbarIsVisible TimeStamp - 528461883.34153903 + 569772320.81251204 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -661,7 +663,6 @@ 5 WindowOrderList - 8B9D7DEB1F7FB03B007AB60F /Users/christopherjohnson/Desktop/MacVST/Slew2/Slew2.xcodeproj WindowString 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 @@ GeometryConfiguration Frame - {{0, 0}, {603, 69}} + {{0, 0}, {603, 51}} RubberWindowFrame 471 286 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 69pt + 51pt Proportion - 372pt + 390pt Tabs @@ -385,7 +385,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 363}} RubberWindowFrame 471 286 810 487 0 0 1440 878 @@ -469,11 +469,11 @@ TableOfContents - 8B9D7E111F7FB071007AB60F + 8B79400021F6093C006E9731 1CA23ED40692098700951B8B - 8B9D7E121F7FB071007AB60F + 8B79400121F6093C006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7E131F7FB071007AB60F + 8B79400221F6093C006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528461937.63799101 + 569772348.11004496 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,6 @@ 5 WindowOrderList - 8B9D7E141F7FB071007AB60F /Users/christopherjohnson/Desktop/MacVST/SlewOnly/SlewOnly.xcodeproj WindowString 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 @@ 185 RubberWindowFrame - 21 283 810 487 0 0 1440 878 + 283 293 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -349,10 +349,10 @@ _historyCapacity 0 bookmark - 8BBFF88B20AD86E4005650EF + 8B79402021F60A00006E9731 history - 8BBFF88A20AD86E4005650EF + 8B79401F21F60A00006E9731 SplitCount @@ -366,18 +366,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame - 21 283 810 487 0 0 1440 878 + 283 293 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -391,7 +391,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} Module XCDetailModule @@ -445,9 +445,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 297}} RubberWindowFrame - 21 283 810 487 0 0 1440 878 + 283 293 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -475,11 +475,11 @@ TableOfContents - 8BBFF88C20AD86E4005650EF + 8B79402121F60A00006E9731 1CA23ED40692098700951B8B - 8BBFF88D20AD86E4005650EF + 8B79402221F60A00006E9731 8B0237581D42B1C400E1E8C8 - 8BBFF88E20AD86E4005650EF + 8B79402321F60A00006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -632,7 +632,7 @@ StatusbarIsVisible TimeStamp - 548243172.70111001 + 569772544.89690602 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -649,11 +649,10 @@ 5 WindowOrderList - 8BBFF88F20AD86E4005650EF - /Users/christopherjohnson/Desktop/Spiral/Spiral.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/Spiral/Spiral.xcodeproj WindowString - 21 283 810 487 0 0 1440 878 + 283 293 810 487 0 0 1440 878 WindowToolsV3 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 @@ _historyCapacity 0 bookmark - 8BBD1838210525AC0015A233 + 8B79404421F60A24006E9731 history - 8BBD182B21050DB30015A233 + 8BBD1838210525AC0015A233 SplitCount @@ -297,6 +297,8 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -362,7 +364,7 @@ 185 RubberWindowFrame - 5 340 810 487 0 0 1440 878 + 432 361 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -390,10 +392,10 @@ _historyCapacity 0 bookmark - 8BBD1835210525AC0015A233 + 8B79404021F60A24006E9731 history - 8BBD1834210525AC0015A233 + 8BBD1835210525AC0015A233 SplitCount @@ -407,18 +409,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame - 5 340 810 487 0 0 1440 878 + 432 361 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -432,7 +434,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 432 361 810 487 0 0 1440 878 Module XCDetailModule @@ -487,8 +491,6 @@ Frame {{10, 27}, {603, 282}} - RubberWindowFrame - 5 340 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -516,11 +518,11 @@ TableOfContents - 8BBD181021050A370015A233 + 8B79404121F60A24006E9731 1CA23ED40692098700951B8B - 8BBD181121050A370015A233 + 8B79404221F60A24006E9731 8B0237581D42B1C400E1E8C8 - 8BBD181221050A370015A233 + 8B79404321F60A24006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -673,7 +675,7 @@ StatusbarIsVisible TimeStamp - 553985452.30988598 + 569772580.33098996 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -691,10 +693,10 @@ WindowOrderList 8BBD1836210525AC0015A233 - /Users/christopherjohnson/Desktop/Spiral2/Spiral2.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/Spiral2/Spiral2.xcodeproj WindowString - 5 340 810 487 0 0 1440 878 + 432 361 810 487 0 0 1440 878 WindowToolsV3 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 @@ _historyCapacity 0 bookmark - 8B9D7E451F7FB0C9007AB60F + 8B79406121F60A46006E9731 history - 8B9D70751F7EF81B007AB60F + 8B9D7E451F7FB0C9007AB60F SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 32}} + {{0, 0}, {603, 13}} RubberWindowFrame 423 305 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 32pt + 13pt Proportion - 409pt + 428pt Tabs @@ -393,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} + {{10, 27}, {603, 401}} RubberWindowFrame 423 305 810 487 0 0 1440 878 @@ -477,11 +477,11 @@ TableOfContents - 8B9D7E461F7FB0C9007AB60F + 8B79406221F60A46006E9731 1CA23ED40692098700951B8B - 8B9D7E471F7FB0C9007AB60F + 8B79406321F60A46006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7E481F7FB0C9007AB60F + 8B79406421F60A46006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528462025.44259501 + 569772614.68796301 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,6 @@ 5 WindowOrderList - 8B9D7E491F7FB0C9007AB60F /Users/christopherjohnson/Desktop/MacVST/StarChild/StarChild.xcodeproj WindowString 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -298,7 +300,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 5 4 0 @@ -321,7 +323,7 @@ 185 RubberWindowFrame - 19 357 810 487 0 0 1440 878 + 326 318 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -360,7 +362,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 19 357 810 487 0 0 1440 878 + 326 318 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -439,7 +441,7 @@ Frame {{10, 27}, {603, 414}} RubberWindowFrame - 19 357 810 487 0 0 1440 878 + 326 318 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -467,11 +469,11 @@ TableOfContents - 8BC5CFB52093FD050058B257 + 8B79408D21F60A83006E9731 1CA23ED40692098700951B8B - 8BC5CFB62093FD050058B257 + 8B79408E21F60A83006E9731 8B0237581D42B1C400E1E8C8 - 8BC5CFB72093FD050058B257 + 8B79408F21F60A83006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -624,7 +626,7 @@ StatusbarIsVisible TimeStamp - 546571504.84971404 + 569772675.65113199 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -641,11 +643,11 @@ 5 WindowOrderList - 8BC5CFDD209404F00058B257 - /Users/christopherjohnson/Desktop/StereoFX/StereoFX.xcodeproj + 8B79409021F60A83006E9731 + /Users/christopherjohnson/Desktop/MacVST/StereoFX/StereoFX.xcodeproj WindowString - 19 357 810 487 0 0 1440 878 + 326 318 810 487 0 0 1440 878 WindowToolsV3 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 @@ GeometryConfiguration Frame - {{0, 0}, {603, 32}} + {{0, 0}, {603, 13}} RubberWindowFrame 397 265 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 32pt + 13pt Proportion - 409pt + 428pt Tabs @@ -385,7 +385,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} + {{10, 27}, {603, 401}} RubberWindowFrame 397 265 810 487 0 0 1440 878 @@ -469,11 +469,11 @@ TableOfContents - 8B9D7E651F7FB0E3007AB60F + 8B7940AD21F60AEF006E9731 1CA23ED40692098700951B8B - 8B9D7E661F7FB0E3007AB60F + 8B7940AE21F60AEF006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7E671F7FB0E3007AB60F + 8B7940AF21F60AEF006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528462051.69883603 + 569772783.81786597 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,6 @@ 5 WindowOrderList - 8B9D7E681F7FB0E3007AB60F /Users/christopherjohnson/Desktop/MacVST/SubsOnly/SubsOnly.xcodeproj WindowString 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 5 4 0 @@ -386,8 +386,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 456 253 810 487 0 0 1440 878 Module XCDetailModule @@ -441,7 +439,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 282}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 456 253 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -469,11 +469,11 @@ TableOfContents - 8B9D7E841F7FB6D2007AB60F + 8B7940CE21F60B33006E9731 1CA23ED40692098700951B8B - 8B9D7E851F7FB6D2007AB60F + 8B7940CF21F60B33006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7E861F7FB6D2007AB60F + 8B7940D021F60B33006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528463570.73526001 + 569772851.163517 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,7 @@ 5 WindowOrderList - 8B9D7E871F7FB6D2007AB60F + 8B7940D121F60B33006E9731 /Users/christopherjohnson/Desktop/MacVST/Surge/Surge.xcodeproj WindowString 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 5 4 0 @@ -351,10 +351,10 @@ _historyCapacity 0 bookmark - 8B9D7EA31F7FB6EC007AB60F + 8B7940F021F60B71006E9731 history - 8B9D70D31F7EF8CC007AB60F + 8B9D7EA31F7FB6EC007AB60F SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 384 385 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -393,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} - RubberWindowFrame - 384 385 810 487 0 0 1440 878 + {{10, 27}, {603, 414}} Module XCDetailModule @@ -449,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 384 385 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -477,11 +477,11 @@ TableOfContents - 8B9D7EA41F7FB6EC007AB60F + 8B7940F121F60B71006E9731 1CA23ED40692098700951B8B - 8B9D7EA51F7FB6EC007AB60F + 8B7940F221F60B71006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7EA61F7FB6EC007AB60F + 8B7940F321F60B71006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528463596.67712098 + 569772913.08327401 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,7 @@ 5 WindowOrderList - 8B9D7EA71F7FB6EC007AB60F + 8B7940F421F60B71006E9731 /Users/christopherjohnson/Desktop/MacVST/SurgeTide/SurgeTide.xcodeproj WindowString 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 @@ TableOfContents - 8BCC7CDC1FBD2FDD00982BD6 + 8B79410721F60B8F006E9731 1CA23ED40692098700951B8B - 8BCC7CDD1FBD2FDD00982BD6 + 8B79410821F60B8F006E9731 8B0237581D42B1C400E1E8C8 - 8BCC7CDE1FBD2FDD00982BD6 + 8B79410921F60B8F006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 532492253.86718899 + 569772943.08427894 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,7 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/Swell/Swell.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/Swell/Swell.xcodeproj WindowString 21 352 810 487 0 0 1440 878 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 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/christopherjohnson.perspectivev3 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/project.xcworkspace/contents.xcworkspacedata old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.mode1v3 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/spiadmin.pbxuser old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git "a/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" "b/plugins/MacVST/TPDFDither/TPDFDither.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" old mode 100644 new mode 100755 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 @@ 185 RubberWindowFrame - 670 293 810 487 0 0 1440 878 + 574 298 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,10 +351,10 @@ _historyCapacity 0 bookmark - 8BBB337021C45BB700825986 + 8B79412621F60BA9006E9731 history - 8BBB336F21C45BB700825986 + 8BBB337021C45BB700825986 SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 102}} + {{0, 0}, {603, 86}} RubberWindowFrame - 670 293 810 487 0 0 1440 878 + 574 298 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 102pt + 86pt Proportion - 339pt + 355pt Tabs @@ -393,9 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 312}} + {{10, 27}, {603, 328}} RubberWindowFrame - 670 293 810 487 0 0 1440 878 + 574 298 810 487 0 0 1440 878 Module XCDetailModule @@ -477,11 +477,11 @@ TableOfContents - 8BBB337121C45BB700825986 + 8B79412721F60BA9006E9731 1CA23ED40692098700951B8B - 8BBB337221C45BB700825986 + 8B79412821F60BA9006E9731 8B0237581D42B1C400E1E8C8 - 8BBB337321C45BB700825986 + 8B79412921F60BA9006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -654,7 +654,7 @@ StatusbarIsVisible TimeStamp - 566516663.29121006 + 569772969.46289504 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -674,7 +674,7 @@ /Users/christopherjohnson/Desktop/MacVST/TapeDelay/TapeDelay.xcodeproj WindowString - 670 293 810 487 0 0 1440 878 + 574 298 810 487 0 0 1440 878 WindowToolsV3 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 @@ PBXProjectModuleGUID 8B0237581D42B1C400E1E8C8 PBXProjectModuleLabel - Gain.h + TapeDitherProc.cpp PBXSplitModuleInNavigatorKey Split0 @@ -347,7 +347,15 @@ PBXProjectModuleGUID 8B0237591D42B1C400E1E8C8 PBXProjectModuleLabel - Gain.h + TapeDitherProc.cpp + _historyCapacity + 0 + bookmark + 8B913F80213DBBCF00BA6EEC + history + + 8B913F7F213DBBCF00BA6EEC + SplitCount 1 @@ -360,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 32}} + {{0, 0}, {603, 13}} RubberWindowFrame 379 285 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 32pt + 13pt Proportion - 409pt + 428pt Tabs @@ -385,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} + {{10, 27}, {603, 401}} RubberWindowFrame 379 285 810 487 0 0 1440 878 @@ -469,11 +477,11 @@ TableOfContents - 8B9D7EC31F7FB712007AB60F + 8B913F81213DBBCF00BA6EEC 1CA23ED40692098700951B8B - 8B9D7EC41F7FB712007AB60F + 8B913F82213DBBCF00BA6EEC 8B0237581D42B1C400E1E8C8 - 8B9D7EC51F7FB712007AB60F + 8B913F83213DBBCF00BA6EEC 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528463634.41372299 + 557693903.11264896 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +651,7 @@ 5 WindowOrderList - 8B9D7EC61F7FB712007AB60F + 8B913F84213DBBCF00BA6EEC /Users/christopherjohnson/Desktop/MacVST/TapeDither/TapeDither.xcodeproj WindowString 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 @@ GeometryConfiguration Frame - {{0, 0}, {531, 202}} + {{0, 0}, {531, 188}} RubberWindowFrame 280 175 841 654 0 0 1440 878 Module PBXNavigatorGroup Proportion - 202pt + 188pt Proportion - 406pt + 420pt Tabs @@ -386,9 +386,7 @@ GeometryConfiguration Frame - {{10, 27}, {531, 379}} - RubberWindowFrame - 280 175 841 654 0 0 1440 878 + {{10, 27}, {531, 393}} Module XCDetailModule @@ -442,7 +440,9 @@ GeometryConfiguration Frame - {{10, 27}, {531, 339}} + {{10, 27}, {531, 393}} + RubberWindowFrame + 280 175 841 654 0 0 1440 878 Module PBXBuildResultsModule @@ -470,11 +470,11 @@ TableOfContents - 8B9D7EE21F7FB727007AB60F + 8B79415321F60BEB006E9731 1CA23ED40692098700951B8B - 8B9D7EE31F7FB727007AB60F + 8B79415421F60BEB006E9731 8BD7274A1D46E5A5000176F0 - 8B9D7EE41F7FB727007AB60F + 8B79415521F60BEB006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -647,7 +647,7 @@ StatusbarIsVisible TimeStamp - 528463655.50013697 + 569773035.93911803 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -664,7 +664,6 @@ 5 WindowOrderList - 8B9D7EE51F7FB727007AB60F /Users/christopherjohnson/Desktop/MacVST/TapeDust/TapeDust.xcodeproj WindowString 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -384,6 +386,8 @@ Frame {{10, 27}, {603, 414}} + RubberWindowFrame + 60 334 810 487 0 0 1440 878 Module XCDetailModule @@ -438,8 +442,6 @@ Frame {{10, 27}, {603, 414}} - RubberWindowFrame - 60 334 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -467,11 +469,11 @@ TableOfContents - 8BBB339A21C45C7500825986 + 8B79416821F60C09006E9731 1CA23ED40692098700951B8B - 8BBB339B21C45C7500825986 + 8B79416921F60C09006E9731 8B0237581D42B1C400E1E8C8 - 8BBB339C21C45C7500825986 + 8B79416A21F60C09006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -624,7 +626,7 @@ StatusbarIsVisible TimeStamp - 566516853.28770995 + 569773065.92286897 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -641,8 +643,7 @@ 5 WindowOrderList - 8BBB339D21C45C7500825986 - /Users/christopherjohnson/Desktop/TapeFat/TapeFat.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/TapeFat/TapeFat.xcodeproj WindowString 60 334 810 487 0 0 1440 878 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 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 6 + 5 4 0 @@ -351,11 +351,10 @@ _historyCapacity 0 bookmark - 8B9D7F011F7FB742007AB60F + 8B79419321F60C4C006E9731 history - 8BFE4BF31D92E5D600BBC6AC - 8B9D712F1F7EF94F007AB60F + 8B9D7F011F7FB742007AB60F SplitCount @@ -369,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 459 303 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -394,9 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} - RubberWindowFrame - 459 303 810 487 0 0 1440 878 + {{10, 27}, {603, 414}} Module XCDetailModule @@ -450,7 +447,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 345}} + {{10, 27}, {603, 414}} + RubberWindowFrame + 459 303 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -478,11 +477,11 @@ TableOfContents - 8B9D7F021F7FB742007AB60F + 8B79419421F60C4C006E9731 1CA23ED40692098700951B8B - 8B9D7F031F7FB742007AB60F + 8B79419521F60C4C006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7F041F7FB742007AB60F + 8B79419621F60C4C006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528463682.24477601 + 569773132.16742396 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,7 +651,6 @@ 5 WindowOrderList - 8B9D7F051F7FB742007AB60F /Users/christopherjohnson/Desktop/MacVST/Thunder/Thunder.xcodeproj WindowString 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 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -351,13 +349,13 @@ _historyCapacity 0 bookmark - 8B9D7F411F7FB77C007AB60F + 8B7941D921F60CC1006E9731 history 8B1A33851F16D336004DE6C5 8B1A33A71F16D5B5004DE6C5 8B4846EC1F6D3E64007BD0D0 - 8B9D716F1F7EFA45007AB60F + 8B7941D521F60C99006E9731 SplitCount @@ -371,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 51}} + {{0, 0}, {603, 32}} RubberWindowFrame 575 295 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 51pt + 32pt Proportion - 390pt + 409pt Tabs @@ -396,9 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 363}} - RubberWindowFrame - 575 295 810 487 0 0 1440 878 + {{10, 27}, {603, 382}} Module XCDetailModule @@ -453,6 +449,8 @@ Frame {{10, 27}, {603, 382}} + RubberWindowFrame + 575 295 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -480,11 +478,11 @@ TableOfContents - 8B9D7F421F7FB77C007AB60F + 8B7941DA21F60CC1006E9731 1CA23ED40692098700951B8B - 8B9D7F431F7FB77C007AB60F + 8B7941DB21F60CC1006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7F441F7FB77C007AB60F + 8B7941DC21F60CC1006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -637,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528463740.98537701 + 569773249.12750697 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -654,7 +652,7 @@ 5 WindowOrderList - 8B9D7F451F7FB77C007AB60F + 8B7941DD21F60CC1006E9731 /Users/christopherjohnson/Desktop/MacVST/ToTape5/ToTape5.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8B7673412002CFD90068FDCE + 8B7941F021F60CDA006E9731 history - 8B4D27EC2002CE340051360A + 8B7673412002CFD90068FDCE SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 86}} + {{0, 0}, {603, 69}} RubberWindowFrame 594 373 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 86pt + 69pt Proportion - 355pt + 372pt Tabs @@ -393,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 328}} + {{10, 27}, {603, 345}} RubberWindowFrame 594 373 810 487 0 0 1440 878 @@ -477,11 +477,11 @@ TableOfContents - 8B7673422002CFD90068FDCE + 8B7941F121F60CDA006E9731 1CA23ED40692098700951B8B - 8B7673432002CFD90068FDCE + 8B7941F221F60CDA006E9731 8B0237581D42B1C400E1E8C8 - 8B7673442002CFD90068FDCE + 8B7941F321F60CDA006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 537055193.49498403 + 569773274.60291398 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode 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 @@ _historyCapacity 0 bookmark - 8B9D7F211F7FB75D007AB60F + 8B7941A921F60C62006E9731 history 8B42FB431DB15F0F0057B6AB - 8B9D714F1F7EF9AB007AB60F + 8B9D7F211F7FB75D007AB60F SplitCount @@ -369,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 575 281 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -394,7 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} + {{10, 27}, {603, 414}} RubberWindowFrame 575 281 810 487 0 0 1440 878 @@ -478,11 +478,11 @@ TableOfContents - 8B9D7F221F7FB75D007AB60F + 8B7941AA21F60C62006E9731 1CA23ED40692098700951B8B - 8B9D7F231F7FB75D007AB60F + 8B7941AB21F60C62006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7F241F7FB75D007AB60F + 8B7941AC21F60C62006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +635,7 @@ StatusbarIsVisible TimeStamp - 528463709.164518 + 569773154.60327995 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -652,7 +652,6 @@ 5 WindowOrderList - 8B9D7F251F7FB75D007AB60F /Users/christopherjohnson/Desktop/MacVST/ToneSlant/ToneSlant.xcodeproj WindowString 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 @@ TableOfContents - 8B9D7F801F7FB7C8007AB60F + 8B79421021F60D0A006E9731 1CA23ED40692098700951B8B - 8B9D7F811F7FB7C8007AB60F + 8B79421121F60D0A006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7F821F7FB7C8007AB60F + 8B79421221F60D0A006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 528463816.43040597 + 569773322.06946695 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,6 @@ 5 WindowOrderList - 8B9D7F831F7FB7C8007AB60F /Users/christopherjohnson/Desktop/MacVST/TransDesk/TransDesk.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8B9D7F9F1F7FB7DF007AB60F + 8B79422F21F60D22006E9731 history - 8B9D71CC1F7EFAE7007AB60F + 8B9D7F9F1F7FB7DF007AB60F SplitCount @@ -477,11 +477,11 @@ TableOfContents - 8B9D7FA01F7FB7DF007AB60F + 8B79423021F60D22006E9731 1CA23ED40692098700951B8B - 8B9D7FA11F7FB7DF007AB60F + 8B79423121F60D22006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7FA21F7FB7DF007AB60F + 8B79423221F60D22006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528463839.58097899 + 569773346.55622005 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,6 @@ 5 WindowOrderList - 8B9D7FA31F7FB7DF007AB60F /Users/christopherjohnson/Desktop/MacVST/Tremolo/Tremolo.xcodeproj WindowString 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 @@ _historyCapacity 0 bookmark - 8B9D7FBF1F7FB7FA007AB60F + 8B79424F21F60D4A006E9731 history - 8B9D71EC1F7EFB47007AB60F + 8B9D7FBF1F7FB7FA007AB60F SplitCount @@ -368,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 13}} + {{0, 0}, {603, 0}} RubberWindowFrame 422 271 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 13pt + 0pt Proportion - 428pt + 441pt Tabs @@ -393,7 +393,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 401}} + {{10, 27}, {603, 414}} RubberWindowFrame 422 271 810 487 0 0 1440 878 @@ -477,11 +477,11 @@ TableOfContents - 8B9D7FC01F7FB7FA007AB60F + 8B79425021F60D4A006E9731 1CA23ED40692098700951B8B - 8B9D7FC11F7FB7FA007AB60F + 8B79425121F60D4A006E9731 8B0237581D42B1C400E1E8C8 - 8B9D7FC21F7FB7FA007AB60F + 8B79425221F60D4A006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +634,7 @@ StatusbarIsVisible TimeStamp - 528463866.70419401 + 569773386.273072 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,7 +651,6 @@ 5 WindowOrderList - 8B9D7FC31F7FB7FA007AB60F /Users/christopherjohnson/Desktop/MacVST/TubeDesk/TubeDesk.xcodeproj WindowString 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 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -349,10 +351,10 @@ _historyCapacity 0 bookmark - 8B6DBA78213B59C900E44739 + 8B7942AD21F60DA4006E9731 history - 8B6DBA77213B59C900E44739 + 8B6DBA78213B59C900E44739 SplitCount @@ -366,18 +368,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 132}} + {{0, 0}, {603, 117}} RubberWindowFrame 64 284 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 132pt + 117pt Proportion - 309pt + 324pt Tabs @@ -391,7 +393,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 414}} + {{10, 27}, {603, 297}} + RubberWindowFrame + 64 284 810 487 0 0 1440 878 Module XCDetailModule @@ -446,8 +450,6 @@ Frame {{10, 27}, {603, 282}} - RubberWindowFrame - 64 284 810 487 0 0 1440 878 Module PBXBuildResultsModule @@ -475,11 +477,11 @@ TableOfContents - 8B6DBA79213B59C900E44739 + 8B7942AE21F60DA4006E9731 1CA23ED40692098700951B8B - 8B6DBA7A213B59C900E44739 + 8B7942AF21F60DA4006E9731 8B0237581D42B1C400E1E8C8 - 8B6DBA7B213B59C900E44739 + 8B7942B021F60DA4006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -632,7 +634,7 @@ StatusbarIsVisible TimeStamp - 557537737.84302604 + 569773476.89428103 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -649,7 +651,7 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/UnBox/UnBox.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/UnBox/UnBox.xcodeproj WindowString 64 284 810 487 0 0 1440 878 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 @@ 185 RubberWindowFrame - 50 341 810 487 0 0 1440 878 + 398 267 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -362,7 +362,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 50 341 810 487 0 0 1440 878 + 398 267 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -387,7 +387,7 @@ Frame {{10, 27}, {603, 414}} RubberWindowFrame - 50 341 810 487 0 0 1440 878 + 398 267 810 487 0 0 1440 878 Module XCDetailModule @@ -469,11 +469,11 @@ TableOfContents - 8BBD1887210542F70015A233 + 8B7942CD21F60DC2006E9731 1CA23ED40692098700951B8B - 8BBD1888210542F70015A233 + 8B7942CE21F60DC2006E9731 8B0237581D42B1C400E1E8C8 - 8BBD1889210542F70015A233 + 8B7942CF21F60DC2006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 553992991.79695594 + 569773506.89082396 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -646,7 +646,7 @@ /Users/christopherjohnson/Desktop/MacVST/VariMu/VariMu.xcodeproj WindowString - 50 341 810 487 0 0 1440 878 + 398 267 810 487 0 0 1440 878 WindowToolsV3 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 old mode 100644 new mode 100755 index cc6b613..2be57bf --- 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 old mode 100644 new mode 100755 index 2952204..91123cf --- a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/christopherjohnson.perspectivev3 @@ -469,11 +469,11 @@ TableOfContents - 8B4E5825201C035700B5DC2A + 8B7942EC21F60DE2006E9731 1CA23ED40692098700951B8B - 8B4E5826201C035700B5DC2A + 8B7942ED21F60DE2006E9731 8B0237581D42B1C400E1E8C8 - 8B4E5827201C035700B5DC2A + 8B7942EE21F60DE2006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 538709213.91348803 + 569773538.74268901 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,7 @@ 5 WindowOrderList - /Users/christopherjohnson/Desktop/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj + /Users/christopherjohnson/Desktop/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj WindowString 123 420 688 434 0 0 1440 878 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.mode1v3 b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.mode1v3 old mode 100644 new mode 100755 diff --git a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.pbxuser b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/spiadmin.pbxuser old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 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 old mode 100644 new mode 100755 diff --git "a/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" "b/plugins/MacVST/VoiceOfTheStarship/VoiceOfTheStarship.xcodeproj/xcuserdata/spiadmin.xcuserdatad/xcschemes/\302\253PROJECTNAME\302\273.xcscheme" old mode 100644 new mode 100755 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 @@ _historyCapacity 0 bookmark - 8BC5D07E20940F320058B257 + 8B79430B21F60E03006E9731 history 8BC5D04620940E2D0058B257 - 8BC5D07D20940F320058B257 + 8BC5D07E20940F320058B257 SplitCount @@ -369,18 +369,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 102}} + {{0, 0}, {603, 86}} RubberWindowFrame 29 317 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 102pt + 86pt Proportion - 339pt + 355pt Tabs @@ -394,7 +394,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 312}} + {{10, 27}, {603, 328}} RubberWindowFrame 29 317 810 487 0 0 1440 878 @@ -478,11 +478,11 @@ TableOfContents - 8BC5D07F20940F320058B257 + 8B79430C21F60E03006E9731 1CA23ED40692098700951B8B - 8BC5D08020940F320058B257 + 8B79430D21F60E03006E9731 8B0237581D42B1C400E1E8C8 - 8BC5D08120940F320058B257 + 8B79430E21F60E03006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -635,7 +635,7 @@ StatusbarIsVisible TimeStamp - 546574130.26758397 + 569773571.22399402 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode 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 @@ 185 RubberWindowFrame - 24 356 810 487 0 0 1440 878 + 426 311 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -362,7 +362,7 @@ Frame {{0, 0}, {603, 0}} RubberWindowFrame - 24 356 810 487 0 0 1440 878 + 426 311 810 487 0 0 1440 878 Module PBXNavigatorGroup @@ -387,7 +387,7 @@ Frame {{10, 27}, {603, 414}} RubberWindowFrame - 24 356 810 487 0 0 1440 878 + 426 311 810 487 0 0 1440 878 Module XCDetailModule @@ -469,11 +469,11 @@ TableOfContents - 8B2721E12173DF5E00396442 + 8B79426F21F60D67006E9731 1CA23ED40692098700951B8B - 8B2721E22173DF5E00396442 + 8B79427021F60D67006E9731 8B0237581D42B1C400E1E8C8 - 8B2721E32173DF5E00396442 + 8B79427121F60D67006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -646,7 +646,7 @@ StatusbarIsVisible TimeStamp - 561241950.77135801 + 569773415.70611095 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -663,11 +663,10 @@ 5 WindowOrderList - 8B2721E42173DF5E00396442 /Users/christopherjohnson/Desktop/MacVST/uLawDecode/uLawDecode.xcodeproj WindowString - 24 356 810 487 0 0 1440 878 + 426 311 810 487 0 0 1440 878 WindowToolsV3 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 @@ TableOfContents - 8B2721BE2173DF3C00396442 + 8B79428E21F60D86006E9731 1CA23ED40692098700951B8B - 8B2721BF2173DF3C00396442 + 8B79428F21F60D86006E9731 8B0237581D42B1C400E1E8C8 - 8B2721C02173DF3C00396442 + 8B79429021F60D86006E9731 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -626,7 +626,7 @@ StatusbarIsVisible TimeStamp - 561241916.28170097 + 569773446.35580504 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -643,7 +643,6 @@ 5 WindowOrderList - 8B2721C12173DF3C00396442 /Users/christopherjohnson/Desktop/MacVST/uLawEncode/uLawEncode.xcodeproj WindowString diff --git a/plugins/WinVST/ADClip7/.vs/VSTProject/v14/.suo b/plugins/WinVST/ADClip7/.vs/VSTProject/v14/.suo index 41b2402..51c82cf 100755 Binary files a/plugins/WinVST/ADClip7/.vs/VSTProject/v14/.suo and b/plugins/WinVST/ADClip7/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/ADT/.vs/VSTProject/v14/.suo and b/plugins/WinVST/ADT/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/AQuickVoiceClip/.vs/VSTProject/v14/.suo and b/plugins/WinVST/AQuickVoiceClip/.vs/VSTProject/v14/.suo 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 old mode 100644 new mode 100755 diff --git a/plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suo b/plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suo old mode 100644 new mode 100755 index 734c0c5..2ff1d0a Binary files a/plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Acceleration/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/Acceleration/Acceleration.cpp b/plugins/WinVST/Acceleration/Acceleration.cpp old mode 100644 new mode 100755 index f20c8f2..b2721d9 --- 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 old mode 100644 new mode 100755 index a152e25..02a3760 --- 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 old mode 100644 new mode 100755 index 4785e37..0151dbe --- 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 old mode 100644 new mode 100755 diff --git a/plugins/WinVST/Acceleration/VSTProject.vcxproj b/plugins/WinVST/Acceleration/VSTProject.vcxproj old mode 100644 new mode 100755 diff --git a/plugins/WinVST/Acceleration/VSTProject.vcxproj.filters b/plugins/WinVST/Acceleration/VSTProject.vcxproj.filters old mode 100644 new mode 100755 diff --git a/plugins/WinVST/Acceleration/VSTProject.vcxproj.user b/plugins/WinVST/Acceleration/VSTProject.vcxproj.user old mode 100644 new mode 100755 diff --git a/plugins/WinVST/Acceleration/vstplug.def b/plugins/WinVST/Acceleration/vstplug.def old mode 100644 new mode 100755 diff --git a/plugins/WinVST/Air/.vs/VSTProject/v14/.suo b/plugins/WinVST/Air/.vs/VSTProject/v14/.suo index 5e12ea1..50bebe3 100755 Binary files a/plugins/WinVST/Air/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Air/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/AtmosphereBuss/.vs/VSTProject/v14/.suo and b/plugins/WinVST/AtmosphereBuss/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/AtmosphereChannel/.vs/VSTProject/v14/.suo and b/plugins/WinVST/AtmosphereChannel/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Aura/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Aura/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Average/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Average/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/BassKit/.vs/VSTProject/v14/.suo and b/plugins/WinVST/BassKit/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/BitGlitter/.vs/VSTProject/v14/.suo and b/plugins/WinVST/BitGlitter/.vs/VSTProject/v14/.suo 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 old mode 100644 new mode 100755 diff --git a/plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suo b/plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suo old mode 100644 new mode 100755 index 0b76ac5..d9c85b0 Binary files a/plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suo and b/plugins/WinVST/BitShiftGain/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/BitShiftGain/BitShiftGain.cpp b/plugins/WinVST/BitShiftGain/BitShiftGain.cpp old mode 100644 new mode 100755 diff --git a/plugins/WinVST/BitShiftGain/BitShiftGain.h b/plugins/WinVST/BitShiftGain/BitShiftGain.h old mode 100644 new mode 100755 diff --git a/plugins/WinVST/BitShiftGain/BitShiftGainProc.cpp b/plugins/WinVST/BitShiftGain/BitShiftGainProc.cpp old mode 100644 new mode 100755 diff --git a/plugins/WinVST/BitShiftGain/VSTProject.sln b/plugins/WinVST/BitShiftGain/VSTProject.sln old mode 100644 new mode 100755 diff --git a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj old mode 100644 new mode 100755 diff --git a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.filters b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.filters old mode 100644 new mode 100755 diff --git a/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.user b/plugins/WinVST/BitShiftGain/VSTProject.vcxproj.user old mode 100644 new mode 100755 diff --git a/plugins/WinVST/BitShiftGain/vstplug.def b/plugins/WinVST/BitShiftGain/vstplug.def old mode 100644 new mode 100755 diff --git a/plugins/WinVST/Bite/.vs/VSTProject/v14/.suo b/plugins/WinVST/Bite/.vs/VSTProject/v14/.suo index a8fee43..3113a75 100755 Binary files a/plugins/WinVST/Bite/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Bite/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/BuildATPDF/.vs/VSTProject/v14/.suo and b/plugins/WinVST/BuildATPDF/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/BussColors4/.vs/VSTProject/v14/.suo b/plugins/WinVST/BussColors4/.vs/VSTProject/v14/.suo index 8ad21ec..d45891a 100755 Binary files a/plugins/WinVST/BussColors4/.vs/VSTProject/v14/.suo and b/plugins/WinVST/BussColors4/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/ButterComp/.vs/VSTProject/v14/.suo and b/plugins/WinVST/ButterComp/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/ButterComp2/.vs/VSTProject/v14/.suo and b/plugins/WinVST/ButterComp2/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/C5RawBuss/.vs/VSTProject/v14/.suo and b/plugins/WinVST/C5RawBuss/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/C5RawChannel/.vs/VSTProject/v14/.suo and b/plugins/WinVST/C5RawChannel/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/CStrip/.vs/VSTProject/v14/.suo and b/plugins/WinVST/CStrip/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Capacitor/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Capacitor/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Channel6/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Channel6/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Chorus/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Chorus/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/ChorusEnsemble/.vs/VSTProject/v14/.suo and b/plugins/WinVST/ChorusEnsemble/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/ClipOnly/.vs/VSTProject/v14/.suo and b/plugins/WinVST/ClipOnly/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/Console4Buss/.vs/VSTProject/v14/.suo b/plugins/WinVST/Console4Buss/.vs/VSTProject/v14/.suo index 82160f2..d8e035e 100755 Binary files a/plugins/WinVST/Console4Buss/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Console4Buss/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Console4Channel/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Console4Channel/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Console5Buss/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Console5Buss/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Console5Channel/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Console5Channel/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Console5DarkCh/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Console5DarkCh/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/CrunchyGrooveWear/.vs/VSTProject/v14/.suo and b/plugins/WinVST/CrunchyGrooveWear/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Crystal/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Crystal/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/DeEss/.vs/VSTProject/v14/.suo and b/plugins/WinVST/DeEss/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/DeRez/.vs/VSTProject/v14/.suo and b/plugins/WinVST/DeRez/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Density/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Density/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Desk/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Desk/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Desk4/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Desk4/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Distance/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Distance/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Distance2/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Distance2/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/WinVST/DitherFloat/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/WinVST/DitherFloat/.vs/VSTProject/v14/.suo 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 +#include +#include + +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/DitherFloat/VSTProject.sln b/plugins/WinVST/DitherFloat/VSTProject.sln new file mode 100755 index 0000000..694b424 --- /dev/null +++ b/plugins/WinVST/DitherFloat/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/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 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + + + + + + + + + + + {16F7AB3C-1AE0-4574-B60C-7B4DED82938C} + VSTProject + 8.1 + DitherFloat64 + + + + DynamicLibrary + true + v140 + NotSet + + + DynamicLibrary + false + v140 + false + NotSet + + + DynamicLibrary + true + v140 + NotSet + + + DynamicLibrary + false + v140 + false + NotSet + + + + + + + + + + + + + + + + + + + + + .dll + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH) + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH) + + + + Level3 + MaxSpeed + true + C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories) + WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions) + MultiThreadedDebug + Speed + false + Default + false + None + + + vstplug.def + libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries) + 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) + + + + + Level3 + MaxSpeed + true + C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories) + Speed + WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions) + false + MultiThreadedDebug + Default + false + None + + + 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) + libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries) + vstplug.def + + + + + Level3 + MaxSpeed + false + false + true + MultiThreaded + C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories) + None + Speed + WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions) + + + true + true + libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries) + 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) + vstplug.def + + + + + Level3 + MaxSpeed + false + false + true + C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories) + None + Speed + WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries) + 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) + vstplug.def + + + + + + \ 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 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ 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 @@ + + + + {ADEFF70D-84BF-47A1-91C3-FF6B0FC71218} + WindowsLocalDebugger + + + {ADEFF70D-84BF-47A1-91C3-FF6B0FC71218} + WindowsLocalDebugger + + + {ADEFF70D-84BF-47A1-91C3-FF6B0FC71218} + WindowsLocalDebugger + + + {ADEFF70D-84BF-47A1-91C3-FF6B0FC71218} + WindowsLocalDebugger + + \ 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 Binary files a/plugins/WinVST/Drive/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Drive/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/DrumSlam/.vs/VSTProject/v14/.suo and b/plugins/WinVST/DrumSlam/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/DubCenter/.vs/VSTProject/v14/.suo and b/plugins/WinVST/DubCenter/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/DubSub/.vs/VSTProject/v14/.suo and b/plugins/WinVST/DubSub/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/DustBunny/.vs/VSTProject/v14/.suo and b/plugins/WinVST/DustBunny/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/EQ/.vs/VSTProject/v14/.suo b/plugins/WinVST/EQ/.vs/VSTProject/v14/.suo index faccb3d..fec6949 100755 Binary files a/plugins/WinVST/EQ/.vs/VSTProject/v14/.suo and b/plugins/WinVST/EQ/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/EdIsDim/.vs/VSTProject/v14/.suo and b/plugins/WinVST/EdIsDim/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/ElectroHat/.vs/VSTProject/v14/.suo and b/plugins/WinVST/ElectroHat/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Energy/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Energy/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Ensemble/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Ensemble/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/EveryTrim/.vs/VSTProject/v14/.suo and b/plugins/WinVST/EveryTrim/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/FathomFive/.vs/VSTProject/v14/.suo and b/plugins/WinVST/FathomFive/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Floor/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Floor/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Fracture/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Fracture/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/FromTape/.vs/VSTProject/v14/.suo and b/plugins/WinVST/FromTape/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Gatelope/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Gatelope/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Golem/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Golem/.vs/VSTProject/v14/.suo 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 old mode 100644 new mode 100755 diff --git a/plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo b/plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo old mode 100644 new mode 100755 index 76a8251..526a0d5 Binary files a/plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo and b/plugins/WinVST/GrooveWear/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/GrooveWear/GrooveWear.cpp b/plugins/WinVST/GrooveWear/GrooveWear.cpp old mode 100644 new mode 100755 index e553daa..cbe1fc5 --- 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 old mode 100644 new mode 100755 index 7b933c2..4bf9745 --- 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 old mode 100644 new mode 100755 index a22f6df..e663203 --- 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 Binary files /dev/null and b/plugins/WinVST/GrooveWear/VSTProject.VC.db differ diff --git a/plugins/WinVST/GrooveWear/VSTProject.sln b/plugins/WinVST/GrooveWear/VSTProject.sln deleted file mode 100644 index 694b424..0000000 --- a/plugins/WinVST/GrooveWear/VSTProject.sln +++ /dev/null @@ -1,28 +0,0 @@ - -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/GrooveWear/VSTProject.vcxproj b/plugins/WinVST/GrooveWear/VSTProject.vcxproj old mode 100644 new mode 100755 diff --git a/plugins/WinVST/GrooveWear/VSTProject.vcxproj.filters b/plugins/WinVST/GrooveWear/VSTProject.vcxproj.filters old mode 100644 new mode 100755 diff --git a/plugins/WinVST/GrooveWear/VSTProject.vcxproj.user b/plugins/WinVST/GrooveWear/VSTProject.vcxproj.user old mode 100644 new mode 100755 diff --git a/plugins/WinVST/GrooveWear/vstplug.def b/plugins/WinVST/GrooveWear/vstplug.def old mode 100644 new mode 100755 diff --git a/plugins/WinVST/GuitarConditioner/.vs/VSTProject/v14/.suo b/plugins/WinVST/GuitarConditioner/.vs/VSTProject/v14/.suo index 9e37109..82c0a67 100755 Binary files a/plugins/WinVST/GuitarConditioner/.vs/VSTProject/v14/.suo and b/plugins/WinVST/GuitarConditioner/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/HardVacuum/.vs/VSTProject/v14/.suo and b/plugins/WinVST/HardVacuum/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/HermeTrim/.vs/VSTProject/v14/.suo and b/plugins/WinVST/HermeTrim/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Hermepass/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Hermepass/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/HighImpact/.vs/VSTProject/v14/.suo and b/plugins/WinVST/HighImpact/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Highpass/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Highpass/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Hombre/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Hombre/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/IronOxide5/.vs/VSTProject/v14/.suo and b/plugins/WinVST/IronOxide5/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/IronOxideClassic/.vs/VSTProject/v14/.suo and b/plugins/WinVST/IronOxideClassic/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Logical4/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Logical4/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Loud/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Loud/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Lowpass/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Lowpass/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Melt/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Melt/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/MidSide/.vs/VSTProject/v14/.suo and b/plugins/WinVST/MidSide/.vs/VSTProject/v14/.suo 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 Binary files /dev/null and b/plugins/WinVST/NC-17/.vs/Console4Channel64/v14/.suo 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 Binary files /dev/null and b/plugins/WinVST/NC-17/.vs/VSTProject/v14/.suo 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 +#include +#include + +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 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + + + + + + + + + + + {16F7AB3C-1AE0-4574-B60C-7B4DED82938C} + VSTProject + 8.1 + NC-1764 + + + + DynamicLibrary + true + v140 + NotSet + + + DynamicLibrary + false + v140 + false + NotSet + + + DynamicLibrary + true + v140 + NotSet + + + DynamicLibrary + false + v140 + false + NotSet + + + + + + + + + + + + + + + + + + + + + .dll + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH) + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + $(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH) + + + + Level3 + MaxSpeed + true + C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories) + WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions) + MultiThreadedDebug + Speed + false + Default + false + None + + + vstplug.def + libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries) + 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) + + + + + Level3 + MaxSpeed + true + C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories) + Speed + WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions) + false + MultiThreadedDebug + Default + false + None + + + 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) + libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries) + vstplug.def + + + + + Level3 + MaxSpeed + false + false + true + MultiThreaded + C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories) + None + Speed + WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions) + + + true + true + libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries) + 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) + vstplug.def + + + + + Level3 + MaxSpeed + false + false + true + C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories) + None + Speed + WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions) + MultiThreaded + + + true + true + libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries) + 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) + vstplug.def + + + + + + \ 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 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ 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 @@ + + + + {ADEFF70D-84BF-47A1-91C3-FF6B0FC71218} + WindowsLocalDebugger + + + {ADEFF70D-84BF-47A1-91C3-FF6B0FC71218} + WindowsLocalDebugger + + + {ADEFF70D-84BF-47A1-91C3-FF6B0FC71218} + WindowsLocalDebugger + + + {ADEFF70D-84BF-47A1-91C3-FF6B0FC71218} + WindowsLocalDebugger + + \ 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 Binary files a/plugins/WinVST/Noise/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Noise/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/NonlinearSpace/.vs/VSTProject/v14/.suo and b/plugins/WinVST/NonlinearSpace/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/OneCornerClip/.vs/VSTProject/v14/.suo and b/plugins/WinVST/OneCornerClip/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/PDBuss/.vs/VSTProject/v14/.suo and b/plugins/WinVST/PDBuss/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/PDChannel/.vs/VSTProject/v14/.suo and b/plugins/WinVST/PDChannel/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/PhaseNudge/.vs/VSTProject/v14/.suo and b/plugins/WinVST/PhaseNudge/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Point/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Point/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Pop/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Pop/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/PowerSag/.vs/VSTProject/v14/.suo and b/plugins/WinVST/PowerSag/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Pressure4/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Pressure4/.vs/VSTProject/v14/.suo 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 old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suo old mode 100644 new mode 100755 index be45c22..892a377 Binary files a/plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suo and b/plugins/WinVST/PurestConsoleBuss/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.cpp b/plugins/WinVST/PurestConsoleBuss/PurestConsoleBuss.cpp old mode 100644 new mode 100755 index ed0b223..2d8e619 --- 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 old mode 100644 new mode 100755 index 0d237ec..51495fc --- 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 old mode 100644 new mode 100755 index c06258a..6211eeb --- 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 old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.filters b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.filters old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.user b/plugins/WinVST/PurestConsoleBuss/VSTProject.vcxproj.user old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestConsoleBuss/vstplug.def b/plugins/WinVST/PurestConsoleBuss/vstplug.def old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestConsoleChannel/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/PurestConsoleChannel/.vs/Console4Channel64/v14/.suo old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suo old mode 100644 new mode 100755 index 506b762..1bcc2a5 Binary files a/plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suo and b/plugins/WinVST/PurestConsoleChannel/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.cpp b/plugins/WinVST/PurestConsoleChannel/PurestConsoleChannel.cpp old mode 100644 new mode 100755 index b9f3e04..35649a6 --- 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 old mode 100644 new mode 100755 index c0a1648..51e728f --- 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 old mode 100644 new mode 100755 index 630cba7..2fc513a --- 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 old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.filters b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.filters old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.user b/plugins/WinVST/PurestConsoleChannel/VSTProject.vcxproj.user old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestConsoleChannel/vstplug.def b/plugins/WinVST/PurestConsoleChannel/vstplug.def old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestDrive/.vs/Console4Channel64/v14/.suo b/plugins/WinVST/PurestDrive/.vs/Console4Channel64/v14/.suo old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo old mode 100644 new mode 100755 index 2c7648b..b079ddd Binary files a/plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo and b/plugins/WinVST/PurestDrive/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/PurestDrive/PurestDrive.cpp b/plugins/WinVST/PurestDrive/PurestDrive.cpp old mode 100644 new mode 100755 index e2451fe..a1d9264 --- 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 old mode 100644 new mode 100755 index 1f5b349..abcd65b --- 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 old mode 100644 new mode 100755 index e453883..f5cc804 --- 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 old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestDrive/VSTProject.vcxproj b/plugins/WinVST/PurestDrive/VSTProject.vcxproj old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestDrive/VSTProject.vcxproj.filters b/plugins/WinVST/PurestDrive/VSTProject.vcxproj.filters old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestDrive/VSTProject.vcxproj.user b/plugins/WinVST/PurestDrive/VSTProject.vcxproj.user old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestDrive/vstplug.def b/plugins/WinVST/PurestDrive/vstplug.def old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suo index 1ddbf82..8746b94 100755 Binary files a/plugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suo and b/plugins/WinVST/PurestEcho/.vs/VSTProject/v14/.suo 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 old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo old mode 100644 new mode 100755 index 60f3507..774fc5c Binary files a/plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo and b/plugins/WinVST/PurestGain/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/PurestGain/PurestGain.cpp b/plugins/WinVST/PurestGain/PurestGain.cpp old mode 100644 new mode 100755 index 3091a12..b1b77fe --- 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 old mode 100644 new mode 100755 index 7869425..9e2baea --- 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 old mode 100644 new mode 100755 index 38f2849..4aa6d96 --- 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 old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestGain/VSTProject.vcxproj b/plugins/WinVST/PurestGain/VSTProject.vcxproj old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestGain/VSTProject.vcxproj.filters b/plugins/WinVST/PurestGain/VSTProject.vcxproj.filters old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestGain/VSTProject.vcxproj.user b/plugins/WinVST/PurestGain/VSTProject.vcxproj.user old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestGain/vstplug.def b/plugins/WinVST/PurestGain/vstplug.def old mode 100644 new mode 100755 diff --git a/plugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suo b/plugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suo index 91f4254..4f4d82d 100755 Binary files a/plugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suo and b/plugins/WinVST/PurestWarm/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Pyewacket/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Pyewacket/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Righteous4/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Righteous4/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/SideDull/.vs/VSTProject/v14/.suo and b/plugins/WinVST/SideDull/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Sidepass/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Sidepass/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/SingleEndedTriode/.vs/VSTProject/v14/.suo and b/plugins/WinVST/SingleEndedTriode/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Slew/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Slew/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/Slew2/.vs/VSTProject/v14/.suo b/plugins/WinVST/Slew2/.vs/VSTProject/v14/.suo index b0d4c72..24ab216 100755 Binary files a/plugins/WinVST/Slew2/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Slew2/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suo b/plugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suo index 19a25dd..1a25a67 100755 Binary files a/plugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suo and b/plugins/WinVST/SlewOnly/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/Spiral/.vs/VSTProject/v14/.suo b/plugins/WinVST/Spiral/.vs/VSTProject/v14/.suo index 396d743..f9037d1 100755 Binary files a/plugins/WinVST/Spiral/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Spiral/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Spiral2/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Spiral2/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/StarChild/.vs/VSTProject/v14/.suo and b/plugins/WinVST/StarChild/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/StereoFX/.vs/VSTProject/v14/.suo and b/plugins/WinVST/StereoFX/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/SubsOnly/.vs/VSTProject/v14/.suo and b/plugins/WinVST/SubsOnly/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/Surge/.vs/VSTProject/v14/.suo b/plugins/WinVST/Surge/.vs/VSTProject/v14/.suo index 03e6045..5bdfe99 100755 Binary files a/plugins/WinVST/Surge/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Surge/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/SurgeTide/.vs/VSTProject/v14/.suo and b/plugins/WinVST/SurgeTide/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Swell/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Swell/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/TapeDelay/.vs/VSTProject/v14/.suo and b/plugins/WinVST/TapeDelay/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/TapeDust/.vs/VSTProject/v14/.suo and b/plugins/WinVST/TapeDust/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/TapeFat/.vs/VSTProject/v14/.suo and b/plugins/WinVST/TapeFat/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Thunder/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Thunder/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/ToTape5/.vs/VSTProject/v14/.suo and b/plugins/WinVST/ToTape5/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/ToVinyl4/.vs/VSTProject/v14/.suo and b/plugins/WinVST/ToVinyl4/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/ToneSlant/.vs/VSTProject/v14/.suo and b/plugins/WinVST/ToneSlant/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/TransDesk/.vs/VSTProject/v14/.suo and b/plugins/WinVST/TransDesk/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/Tremolo/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Tremolo/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/TubeDesk/.vs/VSTProject/v14/.suo and b/plugins/WinVST/TubeDesk/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/UnBox/.vs/VSTProject/v14/.suo and b/plugins/WinVST/UnBox/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/VariMu/.vs/VSTProject/v14/.suo and b/plugins/WinVST/VariMu/.vs/VSTProject/v14/.suo 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 old mode 100644 new mode 100755 diff --git a/plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suo b/plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suo old mode 100644 new mode 100755 index 29e8736..f4a0cef Binary files a/plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suo and b/plugins/WinVST/VoiceOfTheStarship/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/VoiceOfTheStarship/VSTProject.sln b/plugins/WinVST/VoiceOfTheStarship/VSTProject.sln old mode 100644 new mode 100755 diff --git a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj old mode 100644 new mode 100755 diff --git a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.filters b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.filters old mode 100644 new mode 100755 diff --git a/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.user b/plugins/WinVST/VoiceOfTheStarship/VSTProject.vcxproj.user old mode 100644 new mode 100755 diff --git a/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.cpp b/plugins/WinVST/VoiceOfTheStarship/VoiceOfTheStarship.cpp old mode 100644 new mode 100755 index c30bd47..19f1d94 --- 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 old mode 100644 new mode 100755 index febb344..519923b --- 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 old mode 100644 new mode 100755 index 32979d0..bbb14fa --- 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 old mode 100644 new mode 100755 diff --git a/plugins/WinVST/Wider/.vs/VSTProject/v14/.suo b/plugins/WinVST/Wider/.vs/VSTProject/v14/.suo index 6a45209..d5f3d7e 100755 Binary files a/plugins/WinVST/Wider/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Wider/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/uLawDecode/.vs/VSTProject/v14/.suo and b/plugins/WinVST/uLawDecode/.vs/VSTProject/v14/.suo 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 Binary files a/plugins/WinVST/uLawEncode/.vs/VSTProject/v14/.suo and b/plugins/WinVST/uLawEncode/.vs/VSTProject/v14/.suo 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. } -- cgit v1.2.3