{"action":"created","issue":{"url":"https://api.github.com/repos/bsutherland/JuceOPLVSTi/issues/49","repository_url":"https://api.github.com/repos/bsutherland/JuceOPLVSTi","labels_url":"https://api.github.com/repos/bsutherland/JuceOPLVSTi/issues/49/labels{/name}","comments_url":"https://api.github.com/repos/bsutherland/JuceOPLVSTi/issues/49/comments","events_url":"https://api.github.com/repos/bsutherland/JuceOPLVSTi/issues/49/events","html_url":"https://github.com/bsutherland/JuceOPLVSTi/issues/49","id":181542360,"number":49,"title":"Suggestions for new UI (both 2-OP and potential full OPL3 functionality)","user":{"login":"gdreyband","id":9372336,"avatar_url":"https://avatars2.githubusercontent.com/u/9372336?v=4","gravatar_id":"","url":"https://api.github.com/users/gdreyband","html_url":"https://github.com/gdreyband","followers_url":"https://api.github.com/users/gdreyband/followers","following_url":"https://api.github.com/users/gdreyband/following{/other_user}","gists_url":"https://api.github.com/users/gdreyband/gists{/gist_id}","starred_url":"https://api.github.com/users/gdreyband/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gdreyband/subscriptions","organizations_url":"https://api.github.com/users/gdreyband/orgs","repos_url":"https://api.github.com/users/gdreyband/repos","events_url":"https://api.github.com/users/gdreyband/events{/privacy}","received_events_url":"https://api.github.com/users/gdreyband/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":15,"created_at":"2016-10-06T22:33:49Z","updated_at":"2017-11-06T18:36:14Z","closed_at":"2017-01-29T05:23:58Z","author_association":"NONE","body":"It's me again!\n\nI've spend a few hours over the last few days drawing sketches and making UI mockups (they're very rough, so don't take the suggestions as too literal) for revisions of the UI.\n\nBefore I begin, I want to make a few comments. \n\n1) I tried to follow the documentation that I could find at this site, [http://www.fit.vutbr.cz/~arnost/opl/opl3.html](url) which means a few things: the algorithms in the 4-OP preview follow the order listed, and the feedback slider remains in Operator 1 instead of moving to a universal control (unlike other FM synths where the feedback moves around in the chain).\n\n2) I am doing this partly as a fun exercise, but also to gauge your interest. I have no expectations that you will implement any of this beyond perhaps the simplest changes that I suggested in the 2-OP version which was mostly re-arranging elements on the screen.\n\n3) I played around with the standard GUI editor in JUCE and I found it very difficult to achieve some of the objectives I originally wanted. The end result is that I tried to avoid changing elements too drastically to make it as feasible for you as possible. If you're interested, I could work on more dramatic variations, such as one that looks closer to Adlib tracker. It would require a lot more use of image components and custom elements, so I have refrained for now.\n\n4) I'm not a visual designer and this is my first attempt at trying to create / modify a synth plugin UI. Nothing is meant to be final, only a general representation of what I am going for. Ignore things like colors, poor grids and alignment, font, etc. I drew inspiration from synths like Massive, Dexed, Subtractor, and so forth.\n\n---\n\nWithout further ado:\n\n![2-op revised](https://cloud.githubusercontent.com/assets/9372336/19172347/4ad16ce6-8bd6-11e6-8df4-5d17674104db.png)\n\nThings to note about this version compared to the original:\n- I rearranged and resized elements and their orientation in what I believe are related groups that people will come back to frequently. The groups are: \n- [Waveform]\n- [Base Frequency / Envelope / Feedback]\n- [Envelope Dynamics]\n- [Relative Velocity]\n- [Master Volume]\n  The two groups to the right of the ADSR(F) might not need a line in-between. \n  As a result of these changes, the boxes are also a bit shorter.\n- I created a similar section organization in the Common elements box, most notably I moved the AM/FM algorithm switch to the common controls and added a visual representation including feedback. It's probably unnecessary in a 2-OP version (could be a toggle/mutually exclusive buttons/or remain a DDL), but it makes a lot of sense in a 4-OP version.\n\n---\n\nHere is the much more robust 4-OP version.\n\n![4-op reva](https://cloud.githubusercontent.com/assets/9372336/19172633/ad007528-8bd7-11e6-823e-3a67199baaff.png)\n\nChanges compared to the 2-OP UI revision:\n- The only major change is a selectable set of mutually exclusive buttons that cycle between the 4 OPL3 algorithms, included below.\n\n![algorithms](https://cloud.githubusercontent.com/assets/9372336/19172669/df0f3cde-8bd7-11e6-9834-0e142e89a666.png)\n\nIn addition, I also experimented a little bit with creating simple visual elements that are a bit \"flatter\" in the old school Windows 95 sense that fit a little bit better with the aesthetic.\n\n![4-op revb](https://cloud.githubusercontent.com/assets/9372336/19172706/0d6e5e66-8bd8-11e6-953e-ac97d5eaf743.png)\n- The only real difference here is making the bars and their sliders square, and experimenting a little bit in the toggle buttons of the four operators with how they look on vs. off.\n\n---\n\nSome other comments and notes:\n- I tried to play around with knobs, but the built-in knobs in JUCE are ugly and I haven't had an opportunity to try out making ones that look good. Most of the sliders would make as much sense using knobs, and would take up a lot less screen space.\n- Changing base frequency to a knob or a slider rather than a DDL probably makes more sense for quicker access for sound design, but for the moment is too much trouble because of the non-linear scale multiplication at either end (.5x and 15x respectively).\n- The DDLs for Velocity Sensitivity and Keyscale Attentuation would also probably make sense as a series of quick-select buttons since there are only 3 or 4 options, similar to what I showed in algorithm section, but were left alone for similar reasons. The same is true of Percussion Mode, but that would require 6 buttons or more likely a knob.\n- Regarding \"used channels\". I didn't mess with the used channels at the top, but in true OPL3 mode, there would be 18 2-OP voices or 9 4-OP voices. 9 voices is probably sufficient all the same though. \n- Similarly, I initially toyed with a version of the GUI that had 6 selectable algorithms (2 2-OP + 4 4-OP), but it would have resulted in either half of the operators being greyed out OR having them appear when selecting a 4-OP algo. I tried to have all elements on the screen visible and usable on the screen at all times, so neither approach made sense, and you can fake either 2-OP algo using selective usage of operators in pretty much any 4-OP algo. (Only A doesn't allow you to do 2-OP AM).\n- A small note but it may make sense to deviate from the documentation in Algorithm D like so:\n  1---\\\n  3-4-[]----\n  2---/\n  That way visually in the actual controls, 1 and 2 are \"AM\" and 3 and 4 are \"FM\", rather than crossing diagonally in the interface to do FM using 2 and 3.\n\nThis is an incredibly long post, and I apologize once again for using so many words, but I hope you don't mind too much. I love FM synthesis and finally found a place where I could possibly contribute meaningfully. Thanks for reading!\n"},"comment":{"url":"https://api.github.com/repos/bsutherland/JuceOPLVSTi/issues/comments/342242995","html_url":"https://github.com/bsutherland/JuceOPLVSTi/issues/49#issuecomment-342242995","issue_url":"https://api.github.com/repos/bsutherland/JuceOPLVSTi/issues/49","id":342242995,"user":{"login":"lind777","id":32000914,"avatar_url":"https://avatars3.githubusercontent.com/u/32000914?v=4","gravatar_id":"","url":"https://api.github.com/users/lind777","html_url":"https://github.com/lind777","followers_url":"https://api.github.com/users/lind777/followers","following_url":"https://api.github.com/users/lind777/following{/other_user}","gists_url":"https://api.github.com/users/lind777/gists{/gist_id}","starred_url":"https://api.github.com/users/lind777/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lind777/subscriptions","organizations_url":"https://api.github.com/users/lind777/orgs","repos_url":"https://api.github.com/users/lind777/repos","events_url":"https://api.github.com/users/lind777/events{/privacy}","received_events_url":"https://api.github.com/users/lind777/received_events","type":"User","site_admin":false},"created_at":"2017-11-06T18:36:14Z","updated_at":"2017-11-06T18:36:14Z","author_association":"NONE","body":"Is there presently any kind of workaround to set individual parameters and triggers per voice? It would make so much sense for using a single instance of the plugin as a drum module.\r\n\r\nI'm perfectly happy with the OPL2 implementation. I just thought of it seeing gdreyband's GUI suggestions."}}
{"actor":{"display_login":"lind777"}}