@d-healey thanks for clearing that up. The instructions said open either standalone or plugin version so I was unsure which. The standalone version has compiled with no issues. Thanks

Best posts made by Tangerine_Sounds
-
RE: Compiling HISE for the first time - Build Failed
-
RE: How/Where do you actually market/sell your plugins?
@Matt_SF All really good points.
Again, Im no expert but I've read / listened to a few books on the subject.
For anyone completely new to all of this there are some influencers in this field you could look at:-
-
Graham Cochrane. His focus is on creating courses and online communities but also building an audience through email. Check out his book 'How to get paid for what you know'.
-
Gary Vee (Vaynerchuk). He is big on organic social content to drive awareness. Check out his book 'Day Trading Attention'
-
Alex Hormozi. His book '$100M Leads' is all about finding an audience and selling to them.
That's probably enough for now.
My struggle is how to apply the principals to a specific niche.
The authors I have named are not targeting musicians as their customer base (actually that's how Graham Cochrane started but he's kind of moved on from that).
A lot of the advice is to find a problem or pain point that your customers want solving. You could say that for musicians that problem is 'I want my music to sound awesome' and our solution is 'buy my plugin'. But there's a lot of competition out there so its difficult to stand out.Ultimately there is no 'one size fits all' formula for any of this so its about trying different things and seeing what works for you.
-
-
RE: Sampler Workflow Advice
@d-healey thank you, this video is exactly what i need.
The samples don't need changing on the fly so using one sampler makes things a lot simpler for me. -
RE: Delay Tempo Sync
@Chazrox I came to the same conclusion. Without any scripting HISE is just reading the value as 1 - 18 (in the 18 steps of tempo divisions) and then translating that to m/s. This is not what we want.
After lots of back n forth with CHatGPT I came up with the following:
HiseSnippet 1995.3ocuXssaabbFdnjVmPl3TmfdYuX.unfJlUlqNE45XXFIJUKDIGUSEiBXXXLb2YIG3c2gYmgJhsv.8xdWep5SPdA5U859Dz1++Y1k6rhTxTpoUvq4ty+g46+3b3rLY.WojYjZMNe5XNo1m50eZpdzAiXhTxw8H09LuSYJMOiZGZ+oiYJEOjTq1p+NbfZ0WiX96e9r8Ywrz.d4PDxqjh.9IhDgtbzy59sh33iXg7yEINbuc2iCjoGHikS.7rpWGxXVv6XC4ufgrshG44L0HRsuzaP3lcB82MXOe+M2Ym85LXusBd7fshXasMmM3wc1ym83ch5rMo18NLTnkY80LMWQps19xvo8GI+wT6D7JgRLHlie3S5Cyrc3ijwgnIhiRNXjHN7rBGkh.Z4rR21pV21uz6TQnX13ktuGXHPKkv0AVakpva0Jvy+5f2BfTMGHslERetW+fLwXcIEDOeh2woPzLhAwIWnX4krxe69dGHANR0ajvdG+nL3iYRzZ2NcZSg+a8mznwidDsGOlMkdNOYrjBoMA3XujeAOSwoxrPd1ukdhLcHWoogFViDYJcapZjLSiiFCoVMffN7pF0ROwEfICeSeJ80Mnve960l5+UvytvyNvy1vyVvylviO7zosgO5iaSo.uTfWJvKE3kB7RAdo.uTfWZmFuA.ty7cBa.OtbxZ5+nc297lssuT7aO6Kas44EuT7KPoPN+cyo5uawu4xsWNg8x+wQnh4JepJlohIJed1LeX+lF3C93uebHlv.tO.9MDowhTNMZRZfF7czLdTFWMxZasVuwepQ8XY.KlJTlPEFo.StHLOjqOPBCmBezp4.cpIpZ3r45H0WwhmvaAg7b07tT4fStVEfTMZ3jlkhDOH95k.HZmRnafUnFMpKhnsbv65MpClQgcjFxuDT2oL8nMxjSRCaYvjCXQsTuBeIrKaAIu12EosLDa6lFrQLOcndD82P8A4ofe9fXVx37oSwh3wSaff.LlMTb.4Z9k5lUzwqML+FiQT+8MpCCwcg9EvyGF3yMCnXOj1jlnL9GiteuMUPKhE5okQesjBI3PMXdJNMLulBoj.MdEJNvPnZt7F.DmpNRlUTD1pPx1zAiSv7HLs0ZG+vDFTAm8BoleJV+.8D5zg9HjwmXXKiqmjkdE99RZqs2.YqPyfwXMii.+FMHVp3p4vs0+GIynL5PwE7TvMfdjI7EYBGXUx4tsSNF0PqD0LCo9RXE47.4J8DQQ.UejZmYDF.yxw4YXvnyJx.FPr1RXFmJne8U5skmmAjd3CqjWWXwFrbMdtpp50h2XSXxk2fSS1EafBLXHWtToXS65lBKCiecgoAXv.h5klJx.p25tFIZYXN86wb6736L5EAxmyRCi4NqI.ocCGFOenRlVoUC1ZHSF2JnnuPaaH1IZYWB4oTyFTvRlCih3APQhQK9MM1mgIr14az5LwfIZdK6PyZkTn3xP1soglsyjQCzmBA30w9DGkw44vSCMwnsbqyxCw1BcSQchLjiszwFd15YWhhTfVmM5LGA1k.gM2oikFFDv+gsoxq2CljkAPdQ08JfyxpWH+FL2CSGBQDzZetTo2ebhoGuCaKae1RIRvL245ib0bVSKRasnsYlQCyLUqpSTyz8rNonu1lYovLKzOhN2qw6VDvust3EVsZVU3IF+8U.pwbrqWzmqM8ey6ikvzAiDoCmEJtofVQOMWETMPZ8FKWDzIbb0PVENJBwKUiyxf0hcAFZXvBaOTYOHltCK2FNTHUSufCXwwCfS.zZwsJx2CZevACMbPDQCyfkGTzARHdUVNpVPuGi19VPFXm5vFTCe6I+W144mosXcq23SQur5WemuxMWwizsoKrZbI0vKECGcSpnxNdVV.caLgb.LSjaWtlaq7EmnMedAFTVzYcfhuPmDJbc5uK0taa..zqRJJZgzxQPLOagjQSN6lDrU5jjA7L2TVjQ3PfUOY48VtSVFXcaNLh8.D5uaLO+6a9nwjb+NbhzUxQHvp1bdzOK+7n6OQqkoDAnjegWkZAhwHbuQAx0oj9wB33kFk7odkg0qpgecWx2ebOllgGQNGa.dGCMdEnaoVO9Eh.t8.y085wUuSKGCy1rjFvStzv+xYS7Cx5Nc1G+4eeWhi9pubVRoxHoNJiD1EWfCOH+rdDDXcKfg68E4W5hRyG2W7Gq3ISDgv9xNSpDXBDR4e8ug+d1esqZRTj.j2yCVuf3hTOKRueNRMEX4FdkyrgX0q1t0Hjo3K+CXBwys.Ycd34cIj4ubhG3cpLbRLSW8tRvaTJm.hR2Kn.uDhT.8ScspawEnz4Fu.kkEhet2YBXQ8EiwUV.FwJg+Gfw7qc59d1UhJA3ZdG8Gtw6XZska5+.WAl68M8IVr7QdlLBCJ9X669UPRk19kdneU2pc2cobDmGhclcjn6Va8SOqXbWALDNQ9imASHrg7eXld9K+T2mKlaTRutmJbJx96OqrdxMCa0elthNxKkSzvdUf0tyLkauXRRe4jr.NtTSJrzEV6rB1C09cG7aDD84oglOvB1bh9320xI5WP7+KyQBKHS91.aiYLW3iMi.1cp4dZq6cJ9M0+pMiIDnIj3sAAUU0bBt4cUvstqBt8cUvctqBt6cUvu5tJ3deXAwap9alnkI1NaDxomcnYwyZ0NLkAY4lxXx+gvLMQ7
When testing this, don't look at the readout of knobDelayL (in the UI), instead look at the label text and the values within the Delay1 module.
The function of the knob is reversed when in tempo sync mode. For example, when the knob is fully to the left in the UI the label reads 1/64T. But in the Delay1 module the knob is fully Right and still reads 1/64T. Once you hide the default knob with either look and feel or a film strip you can just show the label and the user will be non the wiser. This is the behaviour that most people expect when using Delay controls.
Also, when the tempo sync button is toggled there is a calculation between time in ms and tempo divisions which uses the current tempo. This is based on Engine.getHostBpm(); although I'm not sure what the default tempo is in HISE while you are building your project. I think it is 120Bpm but perhaps @Christoph-Hart can confirm?
-
RE: Delay Tempo Sync
@Chazrox Thanks for trying. I'll post another snippet (when I get time) which shows where I'm up to currently
-
RE: Creating a custom preset save button
@d-healey I'm not using the postPresetSave function. I'm just using the same code as in your video.
I'll try it in a new HISE project and send a snippet
Latest posts made by Tangerine_Sounds
-
RE: Key Limit waveform generator based on Sample maps
@Chazrox Amazing! Thanks.
The Choke Group Processor is a new one for me but it does the job!
-
Key Limit waveform generator based on Sample maps
Re: Key limit waveform generator
I'd like to limit the key range of my Waveform generator based on the currently loaded sample map in my sampler module.
I've used David's video on key colouring based on sample maps and this works fine
https://youtu.be/H1OCC-EDl14?si=9XpCB-L5L0mpLjBLIts seems like it wouldn't be too hard to then extend this to limit the range of the waveform generator but I'm struggling...
My understanding is that you have to use a midi Script Processor underneath the Waveform generator. I've used this before to set the key range as a constant. See referenced topic.
In this example I've got as far as finding the low and high key based on the sample map and printing these values to the console.
HiseSnippet 2184.3oc6Z0sSijbEtafFM3c1rY2rQaTjVoJnbgIChsay+gkLlerAz.CHalYxFonIk6trcoocUs5pLLNSlaxSTdD1KxCPdDxk4x8MXxopta2UaLrrDlIjMXI.Wm5bN0WcpSc9oaNIl6SDBdrkcoSGDQrrenSyALY2c5hoLqC10x9KcNkHjnWfOizlG2CsGggdBY.pAl0gXs8fHrPPBrrsmbOkH1yLkk9y283swgXlOImjk0y4TexgzdTYN0Sp9DZXXcb.4TZOCtWp5A9b1N7Pde.dS53ZEg8eEtC4oXEaS3XsOVz0x923zJnhaf2J9q44UY4kWys0ZK5udqEaiWbIBt05tq4gWe41tKYYOcs.pjG2ThkDgk8TayCFzrK+bVxB7bpf1JjnF3Y0DV4Dx04gApsnhp0NcogAmjY2DVV1NmjaEmLwJ94NGQCnComaM+o5IP4RXZ.smnH7lr.77LgmqA7FCjrMfzTIP5ScZ5GSij4ynvyG4b.SRhai8KdVlvq0D+qoc1gCbvjKzC+JR8XXvPIJuhq67H3WysQoRe0Wg1byMQGc7tO6vZnF0pWqQsmtSslJpkJUBNJAuHAtWTHIFsIR6ksPGhrYBoxyl9E2YAskv8qHCpSCkE4ufgEjRCzbCpWt3QrvShIgbb.He1t.zvN7dQbFLn7r4rLqwdndelujxYHIGIHZbf709gBTKLXgPvbYakd3nHJqidaRYgTFA0NSdPX3pRhKrn7bkdSID7AVkFDkdwggl5VOIbGCUlB.1cCDE80HuJqAe4QOZN8rpO0XcfEYAScWlNOJcUV3bpr6VgQcwkynzJDt2LOxcgklSsISgv9zNcCgej5c.rm.jHPTFJlDbMPxaFhGZaT4TiwBTwS4RxS62qEI9HsZKSmKG52H3C3QA9JJvqTvaK81wdR0OJ.t1fF0gPagiUAqF6QThTYQ2.HoiqM7rJj6iCQ8nLUHuMAavpaXRG+5D5to102C1r2Tv5oDTo3DDMWNxnaLF99coHbtbjZv2aSMmkxDHUYe8lYhMBpGdeTc5skTFSa0WRJO6g7y0oDlc9Lbsw2qLJ2ugBkrZ4BAWVE7PxBQwT0szPP+fdlE8nKp+QXsqRsY7ZpVsWyP+FHDPKvMHH2OPcx0hK6hv5whqvYAT5tTQTHdvVrfhtKibgOYouLWrMLbjOMl1oCDMIgWAB2VE1KwEQcAEEkEICfUdTKkQ8P3uP.ncfnIsfK5kyPaYpHkKX1L.pNl+UEmHyRd4aN.nFQGOfQkTv42WE957tP4.O6.jRaI1rqPMnRkFZJ4LkW+wLsoaFvRfFcp1sG6bp.4w7PUJiwMspFh3qRvxL8Ms4QmgC6SFxHjmrXxWmKO4qYsA9I4ULXjyTVniiHrKqhAqzjQv2d1A6hkXUF6TZ.eQjXIUAA6cImA0Kkj+dFmcIhWI4QPoOCyfA0qISK3HItWc3fPBGqmRAnRgT4ehiIIOqWaVN1fgCP+kpmSCjcGRH5uVsKQkdHm+uoZJFS.TIG3PtEGGGX0pSVYZyLcPPv6TbSkjd4Te26d2urH0Joj0LKIuVlybF7zllI9i1NJe2YgU6EJHN6uE44tf67JZo9XG6KgaWIgPgoaiCED87PjIPLfz55g6SSFAgw0i2ouPx6sWLNpK0WTPxcIsw8CkaAwiwwpxXgYkw8SlbaUFU8EYv2BlvcgUVW+Ys0bWcc2U8zbcJuSmPxQ7.RAMqJfAJHjwHgJnno8LA44Dev6y.KCWMXx5gXYS4fvQzzI0xNBFkN3EGKyWkJYzqwBLV6UJ8Vky3PmooRbl93rREw.eZunG5jGywvE5Owql6B8s+gpVWrrSnfWdPe.9EqBV0qP5DvsyBkdpJujInxAl8RbqUZ70EhepyIToe2wiwIFCFg6vuOvXZCEerSs1sAOjb.NkS8e+U18vTWuk+patwDJO3R5P7g5VDfQjXuaiFBit1MDZO46i94l9NW+b2eu5Nz8pakk+KSV9OyooLlfgpZ6j19qFCkbxZF9C68ozH7Mo+YC191pa2GrQwEo92ppWps5w6yJrVoHuAARbJUI+xm7AUazXuXd+nQk56dr1o3zXHsJXJLm3XFAr0Ry83NwbgnMrcz5RXN0I8i6nrU4TZPNiDKJRCJTHMInpNOaaUcXBh57k5eDFZQoPQR5Uw8Tr9LdBmjwdiLtxHiWbjwKMx3kGY7JiLd07wIFTnyPkmwm3.FDDCpOFANixKT05zWupVAsoStav41zNCWoDJ2Gl71OLYgmL2LYXrIUY3qwNCt9ATTX7ybRq.MiZkBn7HNiG0kyn9Ec1kI8QZh8wtgfNwg6Z4T97pMHgDrv315ut5gPJcbbw6v+frEd+feJki875W3j.WjJ9E5+cSuM4+2jd6pLQ+jzjaHcOJ2AOCeniNDLRkw7CI7Zv6q5SOKCjCjlpIjZ1mXlrZBUBvjwtpwJPzjvBzCTsSmNoWVlM0jdYSZ4moJX+j9ccW11SRXpLN5pvBgblgltnBn..EjfrQlFwuHwH9QNpmskto.s86m6X9xhHwJq6U0Xv+31uPljGH.TOASDwEDOSM2jzidJzvqn.0QjnxXkn.0cIx9rhpNgTAtTlh5fovyzmIiXEyZifDxETFLtflNxrrj+4iqoOuZRfcdvwBevvnryEKFJTPzOxDOSAyIWwj7933.3LrP9jqt+Juezze00+8k8ybtvKbZbu2L6+tSx6f5viewKeRsuAsIZoEyduT6evd6mRbU2Ml49GI5+4ORz6q769J+tuxu65U9oBl+561mhegCjKsBReTh9uyY4Ghx.+wxZzC6GyeoeRZLUfkGno.1Vl9eRnYbNRMF4YoSsYdf0Cpq3k99EU0EDrxMUvEuoBtzMUvkuoBtxMUvUuoBt12ufpx91puj2K49GT96I0R5Twt1vNUlz5eSGrO4x
However, I cant figure out how to connect this to the Script Processor to update the key range of the waveform generator. Any ideas?
-
RE: Delay Tempo Sync
@Chazrox I came to the same conclusion. Without any scripting HISE is just reading the value as 1 - 18 (in the 18 steps of tempo divisions) and then translating that to m/s. This is not what we want.
After lots of back n forth with CHatGPT I came up with the following:
HiseSnippet 1995.3ocuXssaabbFdnjVmPl3TmfdYuX.unfJlUlqNE45XXFIJUKDIGUSEiBXXXLb2YIG3c2gYmgJhsv.8xdWep5SPdA5U859Dz1++Y1k6rhTxTpoUvq4ty+g46+3b3rLY.WojYjZMNe5XNo1m50eZpdzAiXhTxw8H09LuSYJMOiZGZ+oiYJEOjTq1p+NbfZ0WiX96e9r8Ywrz.d4PDxqjh.9IhDgtbzy59sh33iXg7yEINbuc2iCjoGHikS.7rpWGxXVv6XC4ufgrshG44L0HRsuzaP3lcB82MXOe+M2Ym85LXusBd7fshXasMmM3wc1ym83ch5rMo18NLTnkY80LMWQps19xvo8GI+wT6D7JgRLHlie3S5Cyrc3ijwgnIhiRNXjHN7rBGkh.Z4rR21pV21uz6TQnX13ktuGXHPKkv0AVakpva0Jvy+5f2BfTMGHslERetW+fLwXcIEDOeh2woPzLhAwIWnX4krxe69dGHANR0ajvdG+nL3iYRzZ2NcZSg+a8mznwidDsGOlMkdNOYrjBoMA3XujeAOSwoxrPd1ukdhLcHWoogFViDYJcapZjLSiiFCoVMffN7pF0ROwEfICeSeJ80Mnve960l5+UvytvyNvy1vyVvylviO7zosgO5iaSo.uTfWJvKE3kB7RAdo.uTfWZmFuA.ty7cBa.OtbxZ5+nc297lssuT7aO6Kas44EuT7KPoPN+cyo5uawu4xsWNg8x+wQnh4JepJlohIJed1LeX+lF3C93uebHlv.tO.9MDowhTNMZRZfF7czLdTFWMxZasVuwepQ8XY.KlJTlPEFo.StHLOjqOPBCmBezp4.cpIpZ3r45H0WwhmvaAg7b07tT4fStVEfTMZ3jlkhDOH95k.HZmRnafUnFMpKhnsbv65MpClQgcjFxuDT2oL8nMxjSRCaYvjCXQsTuBeIrKaAIu12EosLDa6lFrQLOcndD82P8A4ofe9fXVx37oSwh3wSaff.LlMTb.4Z9k5lUzwqML+FiQT+8MpCCwcg9EvyGF3yMCnXOj1jlnL9GiteuMUPKhE5okQesjBI3PMXdJNMLulBoj.MdEJNvPnZt7F.DmpNRlUTD1pPx1zAiSv7HLs0ZG+vDFTAm8BoleJV+.8D5zg9HjwmXXKiqmjkdE99RZqs2.YqPyfwXMii.+FMHVp3p4vs0+GIynL5PwE7TvMfdjI7EYBGXUx4tsSNF0PqD0LCo9RXE47.4J8DQQ.UejZmYDF.yxw4YXvnyJx.FPr1RXFmJne8U5skmmAjd3CqjWWXwFrbMdtpp50h2XSXxk2fSS1EafBLXHWtToXS65lBKCiecgoAXv.h5klJx.p25tFIZYXN86wb6736L5EAxmyRCi4NqI.ocCGFOenRlVoUC1ZHSF2JnnuPaaH1IZYWB4oTyFTvRlCih3APQhQK9MM1mgIr14az5LwfIZdK6PyZkTn3xP1soglsyjQCzmBA30w9DGkw44vSCMwnsbqyxCw1BcSQchLjiszwFd15YWhhTfVmM5LGA1k.gM2oikFFDv+gsoxq2CljkAPdQ08JfyxpWH+FL2CSGBQDzZetTo2ebhoGuCaKae1RIRvL245ib0bVSKRasnsYlQCyLUqpSTyz8rNonu1lYovLKzOhN2qw6VDvust3EVsZVU3IF+8U.pwbrqWzmqM8ey6ikvzAiDoCmEJtofVQOMWETMPZ8FKWDzIbb0PVENJBwKUiyxf0hcAFZXvBaOTYOHltCK2FNTHUSufCXwwCfS.zZwsJx2CZevACMbPDQCyfkGTzARHdUVNpVPuGi19VPFXm5vFTCe6I+W144mosXcq23SQur5WemuxMWwizsoKrZbI0vKECGcSpnxNdVV.caLgb.LSjaWtlaq7EmnMedAFTVzYcfhuPmDJbc5uK0taa..zqRJJZgzxQPLOagjQSN6lDrU5jjA7L2TVjQ3PfUOY48VtSVFXcaNLh8.D5uaLO+6a9nwjb+NbhzUxQHvp1bdzOK+7n6OQqkoDAnjegWkZAhwHbuQAx0oj9wB33kFk7odkg0qpgecWx2ebOllgGQNGa.dGCMdEnaoVO9Eh.t8.y085wUuSKGCy1rjFvStzv+xYS7Cx5Nc1G+4eeWhi9pubVRoxHoNJiD1EWfCOH+rdDDXcKfg68E4W5hRyG2W7Gq3ISDgv9xNSpDXBDR4e8ug+d1esqZRTj.j2yCVuf3hTOKRueNRMEX4FdkyrgX0q1t0Hjo3K+CXBwys.Ycd34cIj4ubhG3cpLbRLSW8tRvaTJm.hR2Kn.uDhT.8ScspawEnz4Fu.kkEhet2YBXQ8EiwUV.FwJg+Gfw7qc59d1UhJA3ZdG8Gtw6XZska5+.WAl68M8IVr7QdlLBCJ9X669UPRk19kdneU2pc2cobDmGhclcjn6Va8SOqXbWALDNQ9imASHrg7eXld9K+T2mKlaTRutmJbJx96OqrdxMCa0elthNxKkSzvdUf0tyLkauXRRe4jr.NtTSJrzEV6rB1C09cG7aDD84oglOvB1bh9320xI5WP7+KyQBKHS91.aiYLW3iMi.1cp4dZq6cJ9M0+pMiIDnIj3sAAUU0bBt4cUvstqBt8cUvctqBt6cUvu5tJ3deXAwap9alnkI1NaDxomcnYwyZ0NLkAY4lxXx+gvLMQ7
When testing this, don't look at the readout of knobDelayL (in the UI), instead look at the label text and the values within the Delay1 module.
The function of the knob is reversed when in tempo sync mode. For example, when the knob is fully to the left in the UI the label reads 1/64T. But in the Delay1 module the knob is fully Right and still reads 1/64T. Once you hide the default knob with either look and feel or a film strip you can just show the label and the user will be non the wiser. This is the behaviour that most people expect when using Delay controls.
Also, when the tempo sync button is toggled there is a calculation between time in ms and tempo divisions which uses the current tempo. This is based on Engine.getHostBpm(); although I'm not sure what the default tempo is in HISE while you are building your project. I think it is 120Bpm but perhaps @Christoph-Hart can confirm?
-
RE: Delay Tempo Sync
@Chazrox Thanks for trying. I'll post another snippet (when I get time) which shows where I'm up to currently
-
RE: Delay Tempo Sync
@Xearox73 What is this doing different to the last one? Sorry, I couldn't spot anything, maybe I missed it
-
RE: Delay Tempo Sync
@Xearox73 did you try the snippet in a fresh project? It should work.
I couldn't figure out how to get it to work with the Link button (for Left and Right Delay times), so in the end I left the Left and Right permanently linked. Its not something that's critical for my project though.I then had to do a bit more work so when the tempo sync button is switched on it mirrors the equivalent value (as close as possible) in note divisions depending on the tempo.
For example at 120Bpm a delay of 500ms is 1/4 etc
I got this feature to work 90% of the time but still need to tweak it.
Keep trying!
-
RE: How/Where do you actually market/sell your plugins?
@Matt_SF All really good points.
Again, Im no expert but I've read / listened to a few books on the subject.
For anyone completely new to all of this there are some influencers in this field you could look at:-
-
Graham Cochrane. His focus is on creating courses and online communities but also building an audience through email. Check out his book 'How to get paid for what you know'.
-
Gary Vee (Vaynerchuk). He is big on organic social content to drive awareness. Check out his book 'Day Trading Attention'
-
Alex Hormozi. His book '$100M Leads' is all about finding an audience and selling to them.
That's probably enough for now.
My struggle is how to apply the principals to a specific niche.
The authors I have named are not targeting musicians as their customer base (actually that's how Graham Cochrane started but he's kind of moved on from that).
A lot of the advice is to find a problem or pain point that your customers want solving. You could say that for musicians that problem is 'I want my music to sound awesome' and our solution is 'buy my plugin'. But there's a lot of competition out there so its difficult to stand out.Ultimately there is no 'one size fits all' formula for any of this so its about trying different things and seeing what works for you.
-