Leaf-shaped needle, VU damping, README version bump to v1.1

- Needle arrowhead: elongated diamond (leaf shape) with shadow
- VU mode: heavier spring/damping for lazy analog movement
- GR mode: unchanged responsive behavior
- README: all download links updated to v1.1
This commit is contained in:
hariel1985
2026-03-28 19:13:49 +01:00
szülő d750716608
commit eab1a739f2
2 fájl változott, egészen pontosan 45 új sor hozzáadva és 13 régi sor törölve

Fájl megtekintése

@@ -14,24 +14,24 @@ The optical stage provides smooth, program-dependent compression with a natural
## Download ## Download
**[Latest Release: v1.0](https://github.com/hariel1985/InstaShadow/releases/tag/v1.0)** **[Latest Release: v1.1](https://github.com/hariel1985/InstaShadow/releases/tag/v1.1)**
### Windows ### Windows
| File | Description | | File | Description |
|------|-------------| |------|-------------|
| [InstaShadow-VST3-Win64.zip](https://github.com/hariel1985/InstaShadow/releases/download/v1.0/InstaShadow-VST3-Win64.zip) | VST3 plugin — copy to `C:\Program Files\Common Files\VST3\` | | [InstaShadow-VST3-Win64.zip](https://github.com/hariel1985/InstaShadow/releases/download/v1.1/InstaShadow-VST3-Win64.zip) | VST3 plugin — copy to `C:\Program Files\Common Files\VST3\` |
### macOS (Universal Binary: Apple Silicon + Intel) ### macOS (Universal Binary: Apple Silicon + Intel)
| File | Description | | File | Description |
|------|-------------| |------|-------------|
| [InstaShadow-VST3-macOS.zip](https://github.com/hariel1985/InstaShadow/releases/download/v1.0/InstaShadow-VST3-macOS.zip) | VST3 plugin — copy to `~/Library/Audio/Plug-Ins/VST3/` | | [InstaShadow-VST3-macOS.zip](https://github.com/hariel1985/InstaShadow/releases/download/v1.1/InstaShadow-VST3-macOS.zip) | VST3 plugin — copy to `~/Library/Audio/Plug-Ins/VST3/` |
| [InstaShadow-AU-macOS.zip](https://github.com/hariel1985/InstaShadow/releases/download/v1.0/InstaShadow-AU-macOS.zip) | Audio Unit — copy to `~/Library/Audio/Plug-Ins/Components/` | | [InstaShadow-AU-macOS.zip](https://github.com/hariel1985/InstaShadow/releases/download/v1.1/InstaShadow-AU-macOS.zip) | Audio Unit — copy to `~/Library/Audio/Plug-Ins/Components/` |
### Linux (x64, built on Ubuntu 22.04) ### Linux (x64, built on Ubuntu 22.04)
| File | Description | | File | Description |
|------|-------------| |------|-------------|
| [InstaShadow-VST3-Linux-x64.zip](https://github.com/hariel1985/InstaShadow/releases/download/v1.0/InstaShadow-VST3-Linux-x64.zip) | VST3 plugin — copy to `~/.vst3/` | | [InstaShadow-VST3-Linux-x64.zip](https://github.com/hariel1985/InstaShadow/releases/download/v1.1/InstaShadow-VST3-Linux-x64.zip) | VST3 plugin — copy to `~/.vst3/` |
| [InstaShadow-LV2-Linux-x64.zip](https://github.com/hariel1985/InstaShadow/releases/download/v1.0/InstaShadow-LV2-Linux-x64.zip) | LV2 plugin — copy to `~/.lv2/` | | [InstaShadow-LV2-Linux-x64.zip](https://github.com/hariel1985/InstaShadow/releases/download/v1.1/InstaShadow-LV2-Linux-x64.zip) | LV2 plugin — copy to `~/.lv2/` |
> **macOS note:** Builds are Universal Binary (Apple Silicon + Intel). Not code-signed — after copying the plugin, remove the quarantine flag in Terminal: > **macOS note:** Builds are Universal Binary (Apple Silicon + Intel). Not code-signed — after copying the plugin, remove the quarantine flag in Terminal:
> ```bash > ```bash

Fájl megtekintése

@@ -64,19 +64,49 @@ public:
// Always use VU scale — in GR mode the needle just starts at 0 and goes left // Always use VU scale — in GR mode the needle just starts at 0 and goes left
drawVuScale (g, cx, cy, radius, startAngle, endAngle); drawVuScale (g, cx, cy, radius, startAngle, endAngle);
// Needle // Needle with leaf-shaped arrowhead
{ {
float angle = startAngle + needlePos * (endAngle - startAngle); float angle = startAngle + needlePos * (endAngle - startAngle);
float cosA = std::cos (angle); float cosA = std::cos (angle);
float sinA = std::sin (angle); float sinA = std::sin (angle);
g.setColour (juce::Colours::black.withAlpha (0.3f)); float tipX = cx + cosA * radius * 0.88f;
g.drawLine (cx + 1, cy + 1, float tipY = cy + sinA * radius * 0.88f;
cx + cosA * radius * 0.88f + 1, cy + sinA * radius * 0.88f + 1, 2.0f);
// Needle shadow
g.setColour (juce::Colours::black.withAlpha (0.25f));
g.drawLine (cx + 1, cy + 1, tipX + 1, tipY + 1, 1.5f);
// Needle shaft (thin line from pivot to base of arrowhead)
float shaftEnd = radius * 0.65f;
float shaftX = cx + cosA * shaftEnd;
float shaftY = cy + sinA * shaftEnd;
g.setColour (juce::Colour (0xff222222)); g.setColour (juce::Colour (0xff222222));
g.drawLine (cx, cy, cx + cosA * radius * 0.88f, cy + sinA * radius * 0.88f, 1.5f); g.drawLine (cx, cy, shaftX, shaftY, 1.2f);
// Leaf-shaped arrowhead (elongated diamond from shaft end to tip)
float leafW = radius * 0.035f; // half-width of leaf
float perpX = -sinA; // perpendicular to needle direction
float perpY = cosA;
juce::Path leaf;
leaf.startNewSubPath (shaftX, shaftY); // base (narrow)
leaf.lineTo (cx + cosA * radius * 0.76f + perpX * leafW,
cy + sinA * radius * 0.76f + perpY * leafW); // left bulge
leaf.lineTo (tipX, tipY); // tip (narrow)
leaf.lineTo (cx + cosA * radius * 0.76f - perpX * leafW,
cy + sinA * radius * 0.76f - perpY * leafW); // right bulge
leaf.closeSubPath();
// Shadow
g.setColour (juce::Colours::black.withAlpha (0.2f));
g.fillPath (leaf, juce::AffineTransform::translation (0.5f, 0.5f));
// Fill
g.setColour (juce::Colour (0xff111111));
g.fillPath (leaf);
// Pivot dot
g.setColour (juce::Colour (0xff333333)); g.setColour (juce::Colour (0xff333333));
g.fillEllipse (cx - 3, cy - 3, 6, 6); g.fillEllipse (cx - 3, cy - 3, 6, 6);
} }
@@ -99,8 +129,10 @@ private:
void applyNeedlePhysics (float target) void applyNeedlePhysics (float target)
{ {
constexpr float spring = 0.35f; // VU mode: heavier needle, more damping (lazy, smooth movement)
constexpr float damping = 0.55f; // GR mode: lighter needle, less damping (responsive to compression changes)
float spring = (mode == VU) ? 0.12f : 0.35f;
float damping = (mode == VU) ? 0.70f : 0.55f;
float force = spring * (target - needlePos); float force = spring * (target - needlePos);
needleVelocity = needleVelocity * (1.0f - damping) + force; needleVelocity = needleVelocity * (1.0f - damping) + force;