Forum
    • Categories
    • Register
    • Login
    1. Home
    2. dannytaurus
    • Profile
    • Following 3
    • Followers 1
    • Topics 72
    • Posts 569
    • Groups 0

    dannytaurus

    @dannytaurus

    222
    Reputation
    131
    Profile views
    569
    Posts
    1
    Followers
    3
    Following
    Joined
    Last Online
    Website meatbeats.com
    Location Los Angeles

    dannytaurus Unfollow Follow

    Best posts made by dannytaurus

    • Happy New Year! 🥳 🎉

      Just wanted to wish everyone a happy, productive and prosperous new year!

      posted in General Questions
      dannytaurusD
      dannytaurus
    • [PR] Overlay image toggle button

      I like using overlay images to ensure my Figma design is translated properly to HISE. Currently, the only way I know to toggle the image visibility is to select/unselect the image, or quickly slide the alpha slider, which is difficult because of the 'invert' half of the slider.

      This PR adds a toggle button between the image dropdown and the alpha slider. It uses an existing image icon for the button and respects the alpha slider value.

      This allows me to toggle the image without taking my eyes off the interface, making it easier to spot changes.

      PR here: https://github.com/christophhart/HISE/pull/825

      HISE-Overlay-Image-Toggle.gif

      posted in General Questions
      dannytaurusD
      dannytaurus
    • RE: Look & Feel - ComboBox Background.

      @David-Healey I just had a go at fixing this. Is that what you mean?

      HISE-PopupTransparentBackground.gif

      HiseSnippet 1112.3ocsVs2aaaCDmJIJKwacqEne.H7e4roYH+pIcACMO8pwxCi4rhMDDTPKcxhKRjFRTMwXneH12z8MH6ndXKO6klZfI.av6Eue2wi2w9QRGHNVFQLpb0jw.w3qLGLQn7O1mwEjdmPL9ZyyYwJHhlw5nIiYwwfKwvX8eRyvX6MHoe+8aNhEvDNvLVDx6jbG3LdHWMia+C9YdPPWlKbEOrj1sOnmiTbrLPlf3YcSaxXlysrQvELsZqYRdKK1mX7sl1scX60zqSqVu9061wcH330.FtqCytCyqCC41l0tSi1DiMO0kqjQCTLEDia5QR2IC7k2Ixbv63w7gAflnAY.54L1ji84At8KRNwDhwF8mkpVOKU8Ryy4t7o7mkxddp.5LKJmzLV6wfTiOCHYTBRajAoWXNvIhOVMShFOeoYOAdB5wvylxPISWxZ+05lGKQMDp5gragtQHwTKp0z11hh+sy9UpfmOwJZ.yi9izBSbh.LRNS5vBNSJu8PgaW.BpoUGUrdDLhqqe5lHbTbonVU2H1c8kiSFeNHRNBOhGEISDtUsndE5LxhJG9G6T4OqPwuQ0iAUVcQsp12am+UEcQlXOrd5W.GUsqssrsz.F+cCJ9iOQTzSAg+29+CrHJCiXjUcFFs3dVvdLy8PjCJ7Z1012P+NZSKJ65FSW07F52SaqW0Jc0M6uPHo2Vd7a4i7CveJvk9FZln35ih.PP+gozCCRf4CacpCb0QOSLJ.pkiHK5d6TBmJ3dUAPy0HCt6YUDCHnmsNE1Md0LFstYIHu.U24yUyfEJuKVaTq5IfGKIPgI1FsqaOUtNyeHFpBv8JDVowuFeVSQoEsZ.3opVbBlU1crLbn7H48MJU7MRikvwRAnc3TMzVNkPCnEJOwhhc1u37lJEWHUvkhZ5i7sq7wJz+sHOukJSiiHYP.DsTw5FbQOlg0DIgCgHK7PRexVnHdgd9tDa9z5R3jkVJonTzSvUWNFxo6JCb0290qWrmBIOup6tjiPTUUZukmm2aoHuR3t5VKSSyjzPnbyexu16DlhUrY39h9ZLDo35Px3D3C3vgrFWaadBDeqRNF6yO8.kXrUlqeVQaMl.BR86VloqaPturCmTl.KICKFlr8lDxCOLO2lkYeG2U4OyZ9A9f9tXYNjR35KdhoDDclFMyPlowKwEgrTdqunO+8CzXCSLei4kBnxU2IqbkOd8GGXtPedbBizMIfoleridfbt.rJatd8594hXtZR4A1eFyhrezYQOUH9By9bki+xw3ZKAiXsy+GXLeB9yLO0yC6bNCfaX182V0w0eB2icpUbwnyYpHttF3hjvAXYnCfdWf0xw55h0z2Ayns0z5Lv.P3lR7.9kKrgl1HWXiBgX0kSj78NY2b0uQXqTNHlDougZa7wbHMcIWVCwmr7dGm42pELr4pZXqU0v1qpgcVUCe0pZ3tqpg68oMT+hxCSTxvrqMDx48OMs4pgwoBFVAlVsR9GztgJYG
      
      Content.makeFrontInterface(200, 200);
      
      const laf = Content.createLocalLookAndFeel();
      
      laf.registerFunction("drawPopupMenuBackground", function(g, obj)
      {
          g.setColour("0x00000000"); // any transparent colour
          g.fillRect([0,0,200,200]);
      });
      
      laf.registerFunction("drawPopupMenuItem", function(g, obj)
      {
          var a = obj.area;
      
          var padArea = [a[0] + 2, a[1] + 2, a[2] - 4, a[3] - 4];
          g.setColour(obj.isHighlighted ? Colours.green : Colours.blue);
          g.fillRoundedRectangle(padArea, 8);
      
          var textArea = [padArea[0] + 8, padArea[1], padArea[2] - 16, padArea[3]];
          g.setColour(Colours.white);
          g.setFont("Default", 14.0);
          g.drawAlignedText(obj.text, textArea, "left");
      });
      
      const ComboBox1 = Content.getComponent("ComboBox1");
      ComboBox1.setLocalLookAndFeel(laf);
      

      The drawPopupMenuBackground object should probably include an area, and the popup menu items still have a subtle drop shadow. But they're both fixes for another day.

      PR here, if it's useful: https://github.com/christophhart/HISE/pull/805

      posted in General Questions
      dannytaurusD
      dannytaurus
    • RE: Turn a unit on/off

      @bendurso Today I learned that right-clicking a module in edit mode shows a different context menu to right-clicking not in edit mode. 😀

      posted in General Questions
      dannytaurusD
      dannytaurus
    • Added phase offset to Waveform Generator

      PR that adds StartPhase1 and StartPhase2 to Waveform Generator.

      Coded for my own needs but someone else might find it useful.

      Works great for setting a random phase offset on MIDI note-on.

      Works independently for Osc1 and Osc2.

      https://github.com/christophhart/HISE/pull/792

      EDIT: from this conversation https://forum.hise.audio/topic/13720/free-running-or-randomised-phase-for-waveform-generator-oscillators/9

      posted in General Questions
      dannytaurusD
      dannytaurus
    • RE: How/Where do you actually market/sell your plugins?

      I'm fortunate that I started with a (small) audience, and I'm selling to a focussed crowd. My plugins serve a very specific niche and the producers there are always hungry for more authentic products.

      I've never done any paid ads. I might do an experiment on Instagram one day. I see a lot of adverts for plugins in my feed and I'm curious how effective they are.

      I sell on Gumroad. They take about 15% fee, then you pay payment processor fees. I haven't done the maths for the total cut but I'd say it's less than 20%.

      It's a good deal for me because it includes basic web presence, file hosting, secure delivery, payment processing (cards, Apple Pay, Google and PayPal), email marketing and analytics.

      I started selling in September 2022. I'd done a couple of free plugins before that through various platforms like SimpleGoods and SendOwl but didn't take it seriously until later.

      When I started selling I posted each new product on my Facebook and Instagram accounts. The engagement was pretty good to start with but I noticed that over time, I got more results from sending emails to my ever-growing email list. When I launch a new product now, I only send it to my email list at first. Then later I post short clips to Instagram but they're supplemental to the email list.

      You NEED an email list. They say "the money's in the list" and in my experience, that's 100% correct.

      Free products are a great way to build your email list. Most people stay subscribed and as long as you don't flood them with emails, they're happy to receive them.

      This is my email strategy:

      • Launch email for every new product with 20% discount code, valid for 2 weeks
      • Reminder email 48 hours before the launch discount ends
      • One email per month with 20% discount off a single product, valid for 2-3 days

      That's it. I don't like to bombard my list with too many emails. I'm on some Gumroad seller lists where they send continual discounts, sometimes daily. This would be way too much for me as a customer.

      Gumroad includes email marketing, which is a bonus because when your list gets large things like Mailchimp, ConvertKit, etc get into the $100's/month.

      I can target emails to people who have or haven't bought specific products. Very handy for offering a discount only to those who haven't bought something. Or offering a discount for a product Y to those who have already bought product X. You can also target by how much someone has spent, so you can offer extra discounts or free stuff to your most loyal customers.

      Gumroad also includes extra features like affiliates (having others push your products for a % split), collaborators (where you can split a products revenue with someone else), email automations (for sending drip emails to customers - I don't use those) and upsells (recommended products at checkout).

      It does have some downsides. The download links in the receipt emails sometimes don't work and you have to send a link manually to the customer (Gumroad have so far refused to acknowledge this as an issue). I also find their fees to be expensive compared to other services, but for what I get built-in I still think it's worth it for now.

      Something else that might be of interest is that Gumroad recently made the source code available, so if there's a feature you want to add and you're handy with Ruby on Rails and JavaScript you might be able to contribute.

      posted in General Questions
      dannytaurusD
      dannytaurus
    • RE: Any interest in a SemiTones control for Waveform Generator?

      Happy to report this has been merged in to develop branch! 🎉

      posted in Feature Requests
      dannytaurusD
      dannytaurus
    • Un-quarantine VST3/AU plugins on macOS

      Just leaving this here in case it helps anyone searching for quarantine issues on macOS.

      Remove the quarantine flag on a VST3/AU plugin so you can move it between Macs while testing:

      xattr -rd com.apple.quarantine "/Library/Audio/Plug-Ins/Components/MyPlugin.component"
      // or
      xattr -rd com.apple.quarantine "/Library/Audio/Plug-Ins/VST3/MyPlugin.vst3"
      

      That's if they're in the standard location. If they're somewhere else, like the User folder, adpapt the file path.

      posted in General Questions
      dannytaurusD
      dannytaurus
    • RE: Vertical preset browser

      @David-Healey @Oli-Ullmann Sounds like the HISE store will let folks create and sell things like this.

      I'd pay good money for well designed widgets like that. Such a time-saver.

      Looking forward to it!

      posted in General Questions
      dannytaurusD
      dannytaurus
    • IDEA: nullable button radio groups

      💡This is just an idea.
      🗑️ It may be useless
      🤦 It may already exist
      🤷 It's definitely already solved by a simple script.
      🤔 However...

      I wanted some buttons to show/hide some panels in my plugin, but I also needed to be able to turn all panels off. Something that comes up often for a lot of devs, I'm sure.

      The button radioGroup feature is almost right for it, but just needs that one last part.

      Since all the code for radio group buttons is already there, I just added a way to set specific radio groups as nullable.

      PR here: https://github.com/christophhart/HISE/pull/823

      Usage (snippet below):

      // Set Nullable Radio Group by ID
      Content.setRadioGroupNullable(2, true);
      
      // Set Nullable then back to regular Radio Group
      Content.setRadioGroupNullable(3, true);
      Content.setRadioGroupNullable(3, false);
      
      // Test invalid radio group ID, console shows:
      // Interface:! No buttons with radio group 99 found
      Content.setRadioGroupNullable(99, true);
      
      // Test wrong number of arguements, console shows:
      // Interface:! Too few arguments: 1, (Expected: 2)
      Content.setRadioGroupNullable(1);
      

      Here's a demo video: https://share.cleanshot.com/v6tfjFN6

      In the video:

      • First row is regular radio buttons. When one is active, then one always has to remain active
      • Second row is nullable radio buttons. Even after activating, they can all be turned off
      • Third row is a test of making a radio group nullable then back to regular
      • Fourth row is regular buttons, not in radio group - just to show normal button behaviour is still intact

      Screenshot of the demo:

      CleanShot 2025-12-21 at 22.28.07@2x.png

      Here's a snippet (the nullable calls won't work unless you have the PR merged, of course):

      HiseSnippet 1535.3oc0Y0saaaCElJIZq1YsnEnC6pAvkap8PVq+owsNaCyM+0YrlTi5rh0qZoknrIpLofDUR8JJPeT1iReSVeD1aP1gTx1Rqxxo1IEq9hfvCO+7cN7vCOjpiuvhFDH7QFEOdjGEY7UlcGwkC1c.gwQs2CYbMyCIARpONhzNi7HAATajgwpOTQvnvZH8u+4W1g3R3VzojPnmJXVzGwFxjSo1o0uwbcOfXSOlMLA22sUaKAeWgqHDvyplUPdDqWR5SOhnXaESzuRBFfL9dy6a0ytQSax850nQu6U0xtoSkpMITZu5ac+5zsrZXU0oAoBx3K12lIE9ckDIM.Yr1NB6QcGHNkGYfmxBX8bopAUQcAKGQ9.gqsxEUTQ6Nf4Z2YbfJ.AZoyzv1pQgsaZdHylMg9zv200SfmJQx.nwJog2pofW0jvqRB3kAjLR.o0hfzML6Z4y7jSmQgm0MaygUSGBrNkDJQ7hV4uW0bWAvAWd6gjWROvGFLQhRMpTYSL7mx+Xwh24N3tTI9nPWWB.R7SH1LA9g9hPuhiUQ.UpIqoNlyR01DK8CoYoD4.JGejf+CKfZqOQsykOGhavX6eLMPhY7SHtLaru1Z8U7iau2lXHgLP.nH.VTB1Vw9jfw1eG.TbuPoD3AeJSNHkzMahcDgbaPl7gSyloBGZ3bJD16i4gC6Aa7DNXhe+P5PPGAyCRGKDXG5oZIzBrMt5l3R6+JOpkjZuMtV44hnpJn3H7wk7f.CdLy8oxG35tqXnmfqzboM73taTtL161JrnXyW3VZRrUqgd4qgdRtRCutXgdJv7ThaHsjJ8JZbrN2k351CpETBXOlDvxaJVjwcYbJ1IjaIYBNd57krFakMwmnzp1HtBKhKFfM9mwSXPAqRaHouRtQ4a6S8bUY5ZjsINxEA3jvElf+RvjkS46QVBf1DDI3GIjzGyKUtHXe.y3+6TNNYNWrJco9YNspzoedBVJJ6Yr2OlQn7P5ZNlytlSxRhVQ9eBFE71bl7wdT9rJThhCZv+86s2iHIpBUwz.97n9RlBBF6QOANlHprUAy8nAuTJ7PFe6jHMTHWpm8ZwE01QusCwrUB.KUU8gxXuZ5YIOq0nICdKok+jj7jmWEPNg1l2wmBYZpZfnyk8VWau99TvwSXQ9kmEKpsXOXYLgAe2oWdFTGRqkSHE71rrGp0RDRqkaH8B1h5PZs7BoWFFrddFrUXlF7JKSLsdtwzKXKpyZpmSVyBYOy7sWk713+5ETy5XWk72hun5VmHTI2Myu97r.b0XU+HROpqVyWwT++Um4l1m0RcHGx3aLeBsenKwOYyU3pHnCn97gQFwzk5HQIs6WNG6Val1kEa2xlY0UGtFtDbRjjAc7bKUiP2pbFH4TlsbvDU9WiZ8w.s5yBZuyOFZ+j44qETb8DfU2oy4AsxVeLKf2clAxQwn8qMgNGvjT.qxbV9JLGqt0LsZ6IoMYEQBxvtNvY7cY+Yh61UqU5Px6CaMfx5OPl75eIgawzvsCgGC2BlPWW4cbeKZqdBeapeZDfPQTUPOLHIcljNb7sNK7EHzYmklZsjjGiZSiaBiR6TnWjxEVeVtv5ZWH+RyKoSbFJSmHlblNgowagAmLt8uzEclouTT6K4dt1x4J.fyxUFSdNqGKj6jaeAu26yH2QmokeiUKo+7oKSSuwOulRWVOYo13uPdSdMKgO8+edSwbyyxuYyk0eV37ry+99baOeIw+m1885rq7ZM9Eu4yn8J5rq7aGeY8mOsmWla6+Koqbwkn8gOo70MOTXCWbPl9EtUeGf3IXhzeh.0SSxCXxQIeThKrm897BwaX1gIsFjMFWICLhPWJXL9iEbUy8cbnVxo.bMyC9iKmuL.5IhP0sUNjH8YPFGzC+vtPRgEErNGxJUOAnwJpxjQiqnFqh.coba8fyfewSVUM1HdxpimDMjX4KdtUzCOp9bDWQSAvDW+oaJXdnZLbES8iQlLNOjYydtkUZU8ABVaQEr9hJ3cWTA2ZQErwhJ38VTAu+7ET8wqdPnTLLZaCBcXm80ujqgw9b0UA0Yqn+EXWJL4H
      
      posted in General Questions
      dannytaurusD
      dannytaurus

    Latest posts made by dannytaurus

    • RE: Phase Correlation Meter

      @resonant FYI +1 is the correct value for a mono signal.

      It means there is 100% correlation between the left and right signals, which is the same as saying mono.

      posted in Scripting
      dannytaurusD
      dannytaurus
    • RE: Phase Correlation Meter

      @resonant Looks like the correct formula for correlation is:

      1.0 - (abs(left - right) / max(abs(left), abs(right)))
      

      From the HISE source StereoInfo::calculate function:

      void MainTopBar::ClickablePeakMeter::PopupComponent::StereoInfo::calculate(float left, float right)
      {
      	auto normGain = hmath::max(hmath::abs(left), hmath::abs(right));
      
      	if(normGain > smoothedGain)
      		smoothedGain = normGain;
      	else
      		smoothedGain *= coeff;
      
      	if(normGain > 0.0f)
      	{
      		auto thisPan = hmath::abs(left) * -1.0f + hmath::abs(right);
      		thisPan /= normGain;
      		auto thisCorellation = 1.0 - (hmath::abs(left - right) / normGain);
      
      		auto idx = jlimit(0, 100, roundToInt(101.0f * (thisPan * 0.5f + 0.5f)));
      
      		panPos[0][idx] += normGain;
      
      		smoothedPan = coeff * smoothedPan + (1.0f - coeff) * thisPan;
      
      		smoothedCorrellation += thisCorellation;
      
      		min_c = jmin<float>(min_c, smoothedCorrellation);
      		max_c = jmax<float>(max_c, smoothedCorrellation);
      	}
      }
      

      You would also need to implement some smoothing too.

      posted in Scripting
      dannytaurusD
      dannytaurus
    • Happy New Year! 🥳 🎉

      Just wanted to wish everyone a happy, productive and prosperous new year!

      posted in General Questions
      dannytaurusD
      dannytaurus
    • RE: Enable Multi Output in Logic

      @daniloprates The guide I linked to above has all the info.

      You need to compile HISE with 2 preprocessor definitions added to the Projucer, under Extra Preprocessor Definitions:

      NUM_MAX_CHANNELS=16
      HISE_NUM_PLUGIN_CHANNELS=16
      

      Then in your HISE plugin project settings, under Extra Definitions Windows & OSX:

      HISE_NUM_PLUGIN_CHANNELS=16
      

      This will give you 16 internal routing channels in your plugin, and expose 16 outputs to your host/DAW.

      posted in General Questions
      dannytaurusD
      dannytaurus
    • RE: Enable Multi Output in Logic

      @daniloprates You don't need to patch the JUCE source code to get multiple outputs working in Logic.

      I would recommend against patching the JUCE code at all.

      You just need to compile HISE and set up your project for multiple outputs and it'll work fine in Logic.

      posted in General Questions
      dannytaurusD
      dannytaurus
    • RE: Colours added/removed in UI XML

      Oh werps! Just saw Christoph's reply after posting mine. 😜

      Well, good to know for sure that position is rounded to integers.

      posted in General Questions
      dannytaurusD
      dannytaurus
    • RE: Colours added/removed in UI XML

      @Orvillain Oh, interesting! I'll dig deeper into the code.

      As far as I could see originally, all position and size properties are cast to int when they're read from the XML. They're stored as strings in the XML, and when they're read back in to create the component properties, they're cast as integer.

      I thought the UI layout system only used integers for position and size.

      You can demonstrate this by zooming the Interface Designer to 400% and changing a component's x, y, width or height to a half-pixel value in the sidebar. You'll notice the position and size don't change in the actual UI, even though the float value is shown in the sidebar.

      The half-pixel float value is even stored in the XML, and those float values are restored to the sidebar on load - but when you change the floats back to integers in the sidebar, you'll notice the component doesn't change. It was already set on integer pixel values.

      This is the reason I chose to cast position and size to integers rather than floats. Having everything as floats would be fine with me, except that it implies a level of precision that you don't actually get in the UI.

      posted in General Questions
      dannytaurusD
      dannytaurus
    • RE: Colours added/removed in UI XML

      @David-Healey Sorry, shoulda been more explicit about what I was posting!

      posted in General Questions
      dannytaurusD
      dannytaurus
    • RE: Colours added/removed in UI XML

      @Orvillain Yeah, I made a PR that casts all x, y, width and height values to int before saving the XML.

      PR here: https://github.com/christophhart/HISE/pull/831

      But I can't pin down why the colours are added and removed.

      posted in General Questions
      dannytaurusD
      dannytaurus
    • RE: Colours added/removed in UI XML

      @David-Healey That's a git diff. The - lines represent the removed lines and the + lines are the added lines.

      It shows after the first save, the bgColour and itemColour properties were removed. Then later, after another save they were added back in.

      I guess if you don't use git on the command line you probably don't recognise the format, sorry! 😜

      EDIT: edited the original to show the old/new lines

      posted in General Questions
      dannytaurusD
      dannytaurus