bitgapp / eqMac

macOS System-wide Audio Equalizer & Volume Mixer 🎧
https://eqmac.app
Apache License 2.0
5.63k stars 331 forks source link

Suggestions for upcoming version #138

Closed forthrin closed 4 years ago

forthrin commented 6 years ago

When I disconnect my sound card and click the eqMac2 icon to switch output device to internal sound card, it crashes. Probably the code doesn't handle absence of previous audio device.

Post here if someone has a fix.

alex-derzhi-sp commented 6 years ago

This is probably the same as #117

nodeful commented 6 years ago

First of all, I would like to apologize for the lack of communication and responses to the current issue and all other issues in general. I have made a conscious decision to focus most of my free time and focus on developing a more modern and new version of "eqMac". This means that I can't spend too much time looking back at old codebase and trying to make every user happy. This was the main reason I made this repository open-source, in hopes that other developers might help to sort out some issues and iron out all the bugs. Unfortunately, there are very few developers that are proficient in Core Audio and Objective-C or maybe they are just not interested in this repo, which I can understand. I promise that the next version will be much more polished and I will make some sort of a mainstream system were solving issues will be very easy and quick. Just sit tight and wait for a new release this coming summer. Thank you to everyone who gave "eqMac2" a try and I hope I won't disappoint you next time :)

Heres a sneak peak of the UI I am currently working on:

screen shot 2018-05-07 at 20 14 47
forthrin commented 6 years ago

@nodeful: It looks good! Very "audio plug-in" type of look, but in a good way (many audio plug-ins are an ugly mess). I was initially vetting for an "Apple look" to make it blend in with macOS, but I actually do like this design. Be looking forward to any possible beta testing.

forthrin commented 6 years ago

@nodeful: Some suggestions:

  1. Add an intelligent real-time compressor for music with parts hard to hear with earplugs, especially when on a plane or bus. (A good test case is "Indy's First Adventure" from the Indiana Jones III!)
  2. Assume that a majority of Apple users have EarPods or AirPods, so be sure to test with those and tune presets/defaults towards that.
  3. Assume that people with Macs (mostly laptops) frequently switch between earplugs and speakers, so you should make it possible to easily switch between presets for these.

I never relate to presets in terms of "Classical", "Funk", etc. I change EQ depending on how good my current speakers are. Earplugs = Boost bass and treble. High-End speakers: EQ = The Ultimate Sin.

You could detect whether audio is fed to minijack or USB. If the latter, assume HQ speakers.

glovejobs commented 5 years ago

Looking good on the UI. As UX UI designer I can say that the design though nice, seems busy and might deter new novice users. There are several other UX thoughts I have on the present live product and the new ui. I would rather like to do my part of doing a new design , so I am wondering if there is any possibility for a UX UI designer to contribute to the product design both in UI an UX.

forthrin commented 5 years ago

I tend to agree with @glovejobs: It looks nice, but unnecessarily complicated at the moment. Typical feature creep. Maybe good for a paid version if advanced tuning is something many users are really asking for, but I suspect most people (even myself who is a techie) just want to switch between a few presets, depending on what kind of speakers the audio is fed to at the current moment.

What's important is continuous use and seamless device switching. Currently this causes crashes and sudden full volume. Also inability to change volume and audio dropouts (eg. when using Logic).

Stuff like playing files and rendering to files seems out of scope. Before diving into the realms of advanced audio shaping, get a basic version working perfectly first. What would Steve Jobs do?

PS! One feature you could also look into is the ability to feed different audio streams to different targets, ie. play audio from VLC to USB-connected speakers, while feeding audio from iTunes to a Bluetooth speaker. macOS has no built-in support for this, and the paid-for Airfoil is the only software I knew that does this, so if you tap into this you'll have a huge draw for your software.

PPS! The latter is arguably out of scope for an Equalizer, but maybe the focus could be more a "speaker adapter" than a "bandwidth selector". I don't know what your product vision is, but it's worth a thought.

nodeful commented 5 years ago

Thank you for all your suggestions.

  1. I will make sure to adapt the presets to most commonly used hardware setups.
  2. I do agree UI looks very funky, I'm not a good designer myself so I bought a design pack that I'm using. Since my last post, I actually got friends with a good Front-end developer and I'm trying to bring him on board to help with UI/UX. If anyone wants to contribute please send some quick idea drafts to bitgapp@bitgapp.com (don't spend too much time on them)
  3. Playing files and rendering (exporting) is being implemented so the App can be published to the AppStore, this won't be the main feature of the app.
  4. Audio Routing is a very interesting concept but very hard to implement, would love to extend eqMac to that eventually. Unfortunately, I am still one guy in my room with a spare hour a day and very minimal Mac dev experience :) So, for now, I will focus on delivering a very minimalist but stable release
forthrin commented 5 years ago

@nodeful: Great feedback. I do know UX (logics, not graphics). Let me have a think about it. Maybe you can find another developer who knows audio routing? This is, after all, the magic of open source. Surely there must be another guy in a room with this knowledge. To be able to to low level stuff like this, you must have more than minimal Mac developer experience. Give yourself some credit, man :)

The first thing I would do is draw up a feature chart (basic version, advanced version). Then look at how best to fit the basic functionality into macOS. The current menu is actually quite good, albeit a bit quirky with how one saves presets, etc. I'll get back to you if I come up with someone useful.

forthrin commented 5 years ago

@nodeful: A question: Does macOS allow modifying the standard volume dropdown menu? ie. add menu elements with custom behaviour?

nodeful commented 5 years ago

@forthrin I don't believe Apple allows you to change any aspect of the default UI. macOS is a pretty closed down system... I actually thought about your comments about the "feature creeps" and decided that I will try an push a basic app first with as much functionality as eqMac2 has currently, just with all the new codebase (unfortunately closed source for now).

forthrin commented 5 years ago

@nodeful: Glad to be of help. Maybe you could use the Github Wiki functionality to make descriptive lists for planning the road ahead. Then we could see your direction and give feedback.

Lists/tables to consider (just use simple bullet points):

(*) I suggest the dropdown menu to contain only frequently accessed features, ie. preset selection, and possibly the equalizer itself, whereas all configuration, "Check Updates", etc. should go to a separate settings section. Maybe you could use the macOS capability for custom System Preferences?

I'll be happy to support you with ideas and feedback, as well as testing preliminary versions.

darkfader commented 5 years ago

My headphone (akg k701) bass needs about +11 dB amplification (using sort of average, some other freq needs -8 dB). But songs with heavy bass sounds distorted (on max volume). Audio MIDI Setup app tells me input is 40,5 dB input (48kHz). If I change it to a few dB lower and amp a few notches higher, it sounds much better already. I would like to see what happens if eqMac2 has volume control for input and output. I would like it in same comfortable range as my normal speakers if possible so I don't get scared when switching between headphones and speakers. An input overload indicator would be nice (or even a graph on absolute range. my displayport/HDMI downconverts 32 bit to 24 bit too...) to see how far the volume needs adjustment and to see if the equalizer works as it should.

Juanlvs commented 5 years ago

Hello, Please add parametric EQ filters. I would like to use Room EQ wizard to measure my room (or headphones), match to target with auto EQ and improve the acoustics response. As an advance feature it would be awesome to be able to EQ per channel (or speaker) for each audio device available on the OS app "Audio MIDI Setup".

nodeful commented 4 years ago

Hey everyone. Excuse me for the lack of updates. I have been really busy on the new version of eqMac. I am happy to announce an open beta release. You can download it here: https://eqmac.app There are a lot of known bugs that I could not fix just yet:

So as you can see there's still some work to be done but at least it's a completely modern tech stack that I am fully willing to work on: 100% Swift, User Space driver and a Web UI, instead of C++, Kernel Drivers. As I said, should work on Catalina and should not have any pesky ear drum blasting volume bugs (at least I didn't come across any). I'm open to feedback and issue reports here: https://github.com/bitgapp/eqmac That repo will become the main repo for eqMac and this repo will be archived eventually. And yes it's called just eqMac, not eqMac3 :) And it will stay that way forever.

forthrin commented 4 years ago

Nice progress. Some feedback:

  1. UI looks good. Impeccable, in fact.
  2. I was asked to give eqMac access to my microphone (which it does not need), which makes it seem like spyware.
  3. I was asked to allow incoming connections to eqMac (which it does not need), which makes it seem like spyware.
  4. I was asked for my root password. I realise this is necessary. You might want to point people to the source code if they want to confirm the elevated permissions aren't misused.
  5. "Booster" volume is same as system volume, which is somewhat confusing. Do we need this at all, since volume is on the macOS top bar?
  6. Balance: Who ever changes this?
  7. The equalizer itself seems to work nicely as far as I can tell, with relatively and acceptably short latency.
  8. GUI flickering. You probably know this.
  9. Maybe skip the "Gain" row, and just show a hovering value while dragging each individual slider? It's sort of repetetive and squeezed in with a small font as it is.
  10. What will the "Headphones" thing do? Do you plan link profiles to listening devices? If so, this is very good.
  11. "No, cancel" and "Yes, remove" is non-standard button text. "Cancel" and "Remove" is sufficient. Make "Cancel" red if you like, but deleting a preset is a minor loss that doesn't really need big warning signs.
  12. The sliding effect between Basic and Advanced is slow and unnecessary. I don't like it for macOS' full screen switching either. Make it happen instantly. And see if you can avoid the height difference, to make a uniform window size. (See point 8).
  13. Equalizer settings (the height of the sliders) often follow the shape of a smooth graph or an exponential curve. Here's a neat idea: Let the user draw the equalizer curve by moving his finger along the touchpad. The touchpad has about the same dimensions as the equalizer slider widget. If you do this to perfection it wil give a both cool and efficient user experience.
  14. Bug (maybe not fixable?): If I start VLC after eqMac, there is no sound from VLC.

That's it for now. Will share more when next version comes. Keep up the good work!

forthrin commented 4 years ago

I thought some more about equalizer modes. I realised it's actually a complex combination of factors that contribute to this, which lends itself to some thinking, since it may not be so straight forward how to shape the GUI and general logic of the software from this.

Consider the role of:

  1. The speakers
  2. The audio type
  3. Adjustment to individual recordings
  4. Playing around

Point by point:

If my speakers are poor, I need more eq (bass). If my speakers are good, eq is an abomination.

If my audio type is retro tunes (SIDs, MODs), I need more eq (bass, and treble to taste), maybe even if my speakers are good.

Now, the current design seems derived from 80s home equalizer design, ie. you select "R&B" eq for R&B recordings, which I've never understood. An "R&B" setting does not make all R&B music better. (And "R&B" is a very wide term to boot.) It depends on the recording, probably the age of the recording more than anything else, ie. how good the recording studio technology was at that decade, and then there's temporal phenomenon or styles like the loudness war that come into play.

It's fun to play with sliders and experiment, if even for a minute, so there needs to be a way to do anything you want or the user would feel boxed in. But for most people this is a passing fancy.

In conclusion, I'm not sure what is the best way to go about this. Maybe the best is actually to just have a list of presets, but not name them after musical genres, but after their visual profile (the slider curve). I think the best solution would emerge from a good discussion around these things.

A footnote: Boosting bass causes tracks that already are full of bass to clip. Is it possible to counter this by analysing the music? Ie. boost bass only if bass is thin, and do it less or not at all if there is already plenty of bass? (Maybe this requires complex analysis outside the scope of the software, but I wanted to mention it anyway...)

nodeful commented 4 years ago
  1. Thanks
  2. The way eqMac (or any other alternative to it for that matter) works is by routing system audio to Input channel of a driver device, capturing that and piping it through the selected output device.
  3. The UI is web based and I need to launch an HTTP server that hosts the UI files (HTML, CSS, JS) from Application Support directory. I can disable that if there is internet and my remote server is working fine, but in cases when that is not the case there is no way you can have the app working offline otherwise.
  4. Any other alternative to eqMac also asks for the system password to install driver. No way around it and not planning to release the new source any time soon.
  5. I decided to combine those to conserve space and have 2 functions in 1 element. I think it's pretty clear what it does.
  6. Yeah maybe not the most used feature, but where else would one put it? You may have noticed the UI looks like module blocks, my plan eventually is that you can enable/disable these blocks if you are not using them, and reorder etc. Once There's more blocks :)
  7. You are lucky then with your device setup. I still have issues myself, but I'll get better
  8. As I mentioned the UI is web based and I need to sync it's dimensions with the native macOS Window. There's much that can be improved once I'll have the time.
  9. Yeah maybe, but sometimes you want to see all the gains at once, plus eventually wanted to make those values editable by typing so will keep them in for now.
  10. At the moment it just shows all your output device and you can switch to any (replicates native macOS switching) Yes eventually I want to make it possible to save different "Presets" or profiles for each device. But sounds like a complicated state to manage and explain to users. For the moment just save different presets per each device.
  11. I agree, thanks for suggestion.
  12. No way it's ever going to be uniform especially once I add "Expert EQ", I had it without the animation and it looks even choppier, I think the key is to just improve the dimensions synching as I mentioned in 8.
  13. Basically what I wanted to do for the Expert EQ. Plus with a load of more features.
  14. That is weird doesn't happen to me. Try playing with VLC Audio Settings and see if you can point it to the right device (it should just stream audio to the selected output device)

Response to your last message @forthrin: I know, I never use the built in presets myself, and I understand that all music and devices are different and need different settings as a result. But people would go haywire if didn't add the default presets 😄 So I took the presets that the iTunes equalizer comes with 🤷‍♂ You always have an option to disable them in the Advanced EQ settings. In the Expert EQ I plan to have more "magical" features that adjust the EQ based on best settings for the device you are using or music you are listening etc. But yeah very complex feature that will take time to implement.

Thanks again for you feedback.

forthrin commented 4 years ago

Thanks for your feedback on my feedback!

So the presets are from iTunes? If you decide to keep it that way, put it in a FAQ or something so people know at least why.

Also, give a heads up dialog at the very start of the first run of why you are going to ask for three permissions: Microphone, network connections and root password. (Most of the software I use barely ask for even one of them, so anyone with a minimum concern for security is going to be wary of this, particularly with no source code available. You're basically asking to take over about every aspect of people's computer.)

A possible solution could be to make the source of freeware part of the program openly available, but I guess it would be impractical (or impossible?) to put the non-free part of the source code in a separate library. Just a thought...

nodeful commented 4 years ago

Hey everyone 👋 I will be open sourcing the new version of eqMac, therefore, I am closing this issue and repository as I will be transfering nodeful/eqMac2 repo to bitgapp/eqMac Please bear with me for the next couple of days as I setup that new repo. The eqMac2 code will be living in the old-eqMac2 branch if anyone is interested in referencing it for whatever reason. Please try out the new version and report bugs to the new repo. Thanks for using eqMac.