Law and Software

Cheap and cheerful Zoom digital piano lessons

[July, 2020] Filed under: music

I’m giving some online music lessons. I have a Roland RD64, not a “real piano.” I use a Mac (currently on Mojave). And am using Zoom as the platform.

If you are using a piano, violin or other instrument, your microphone is going to do all the mixing you need. If you are using a digital instrument, why would you want to deal with microphone positioning when you have USB output.

However, going digital means learning far more than you ever wanted to know about Apple’s core audio, and Zoom’s features and limitations.

Here’s my story.

Playing a digital piano in Zoom

A first attempt – use line-in

One simple solution is use an audio-jack to USB connector from the audio output of the Roland to the Mac line-in. Zoom sees it as an alternate input, so I can switch Zoom input from the microphone to the Roland output. Everyone else hears the music fine.

But that is only half the solution. Everyone *except me* hears the keyboard. The other half is to run a Garageband project with audio line input, and press the Monitor button. The music comes through your headphones and you hear what you play.

The big downside to this is that you have to switch your outputs – do you have the microphone on or the piano. And when you start talking and the others wave frantically that they can’t hear you, they assume they have a problem with their setup that suddenly “stops working”

A Second Attempt: Mixing the Inputs

Zoom doesn’t seem to play well (yet) with aggregate channels in the Mac Core Audio. I tried creating a stereo channel that mixed Garageband output with the microphone, and it worked delightfully in Audacity. But the stereo option in Zoom picked its own selection from the aggregate and it didn’t work as I hoped.

The second solution works very well when only you need this complexity. For this solution H/T svconline . They were working with ProTools. I just use humble Garageband , but their idea woreds really well for me too.

I have included these steps in case your use-case can benefit from it. You may want to skip this section to the solution I use, which allows both sides of the zoom link to play midi and talk.

Their workaround is to make use of the “share computer sound” mixing that Zoom does behind the scenes when you do a “screen share” presentation. Zoom seamlessly mixes your voice/microphone with the content you are showing.

It can use the midi-in from the keyboard, not t the line-in. Zoom will mix voice and the midi output of your keyboard via Garageband into your Zoom session.

We create a multi-output channel on the mac that sends both to built-in output (so you can hear with your headphones) and also to Zoom (so others can hear it too). We then set the output of Garageband to this channel when you play the midi instrument.

In Zoom the sound setup is not changed: the microphone is your Zoom input, and your headphones are the “speakers.” But when you go into “share screen,” Zoom mixes the “computer sounds” from Garageband with your voice with no noticeable latency.

Here are the steps.

Step 1. Start a Zoom session on your own. No need for anyone to join. Now press “share screen.” Before you share, toggle the button that says “share computer sound.” At this point you might get a security check from the mac, as Zoom is installing it’s audio driver ZoomAudioDevice. We need access to this ZoomAudioDevice for all of this to work.

Step 2. Run utilities/Audio MIDI setup. “ZoomAudioDevice” should now be in the list of audio devices. At the bottom of the dialog, press + and choose “Create Multi-Output Device”.  I rename this new device Zoomlink to remember what it is for, and to avoid typing “MultiOutputDevice” in the rest of this note.

Step 3. Set up this new device. With the new Zoomlink aggregate selected, toggle two of the devices listed to the right. The order you choose them is important. First choose “Built In Output.”  Then choose ZoomAudioDevice

That’s all the hard work. Going forward we will use our new ZoomLink. Don’t accidentally try to use Zoom’s own ZoomAudioDevice instead

Now, restart your computer.

Step 4. Plug in the digital keyboard using its USB Midi output, if not already connected. And start GarageBand.

Step 5. Create a new Garageband project using the digital keyboard as its midi device. But before you press “Create,” check the fine print at the bottom left of the page, where it says “I hear with built-in output. Click that and change Garageband output to your new ZoomLink (not ZoomAudioDevice). The GarageBand audio panel may popup to show you your new setting.. 

Step 6. Plug in your headphones. Make sure you can hear yourself when you play. You may get some crazy feedback effects going forward if you are not using headphones

Step 7. Start up Zoom, and set it to use your microphone for input and your Built-in output (headphones) as speakers .

Step 8. Testing your setup is easy. Invite yourself (through a different email address) to the zoom session, accept it on your phone, and put your phone headset just in your left ear under your headphones. Then you will hear your side of the Zoom call in your right ear and in your left ear you will hear what the other person hears.

Step 9. Now “share screen,”   making sure “share computer sound” is toggled on – or your listeners won’t hear the midi output (although you will)

Step 9. Talk and play.  

If you hear your voice and no piano, are you in “screen share”?   If you hear piano and no voice, you may have to check all your settings. If you hear feedback take the headphones off immediately or unplug them. Do this before you try to switch off the sound. Otherwise…

I’d like to be able to mix everything without letting Zoom do it for me – but I am not there yet.

The solution. Two DAWs are better than one. And Blackhole is awesome.

The last attempt does work if you need to mix voice and midi. But if you and your student want to use it, Zoom does not allow the “computer sound” trick if you are both sharing your screens. Or maybe it only allows one at a time – whatever the reason, it becomes hard to use.

So I looked again.

I had been using one DAW (Garageband) and I was using it for midi input. And I was trying to build aggregate and multi-output devices combining the microphone (which is an input) with the DAW output.

In this use case, I cannot simply have a voice and a midi track in Garageband, since I want an aggregate output from Garageband that will send the midi to my headphones as well as out to Zoom. I need to hear the mid in my headphones with no latency, but not some weird echo of my voice.

The solution is to use a second DAW to process the microphone input. That way the task is to merge two DAW outputs. Not trying to merge a DAW output with microphone input. Yes it is obvious. Where did I put my retrospectivescope.

I chose Audacity as it is an old friend, and allows me to monitor inputs easily.

Step 1: download Blackhole (a modern version of Soundflower) from GitHub – you will have to register with an email address, and it sends you a download link.

Step 2: go to the Audio MIDI setup. Blackhole should be in the list of devices.

Step 3: Create a Multi-Output-Device (lets call it chaos) that consisted of Built-in Output, and Blackhole. You should enable (use) Built-In Output before Blackhole.

Step 4. Restart the computer.

Step 5: Make “chaos” the output from the midi instrument in GarageBand. Similar idea to before. Because the aggregate also has the built-in output, I hear it through my phones, and Zoom can send it down the wire.

Step 6: The change-up is to run Audacity. With old versions you need to create an Audio track. With the latest version, 2.4.2 that you download here there are just two steps.

First you set up its audio devices. We are using Audacity as a special channel for the microphone, so its input is the Mic and its output is Blackhole (mixing with the output of Garageband).


Next you use the “recording meter toolbar” and “Click to Start Monitoring.” In an older version of Audacity I had to create an Audio Track first.

Step 7: In Zoom, the “microphone’ is… Blackhole (not chaos). The result is that midi and voice are mixed in the Blackhole device and passed through to Zoom. And the speakers are your headphones. Test it in Zoom’s audio setup dialog, and maybe with yourself using another email in a real Zoom session.

This works for teacher and student. Both can be working with their digital piano through headphones and Zoom without risking waking the dead. It should also work with other free and purchased DAWs available on MacOS. Audacity seemed like the simplest solution..

I don’t think there is a downside to this. If the student doesn’t yet know about Blackhole and Audacity, then they learn about two excellent free resources. And they don’t have to mess with the ZoomAudioDevice, and we are not dependent on Zoom still working as advertised.

Overhead View

The other challenge was to create an overhead view of the keyboard. The pros use fancy webcams and boom mic stands and adaptors to position their camera overhead.

I used my phone rather than a webcam.

Since I have a high shelf near the keyboard, I didn’t need the boom mic arrangement, and instead bought a gooseneck phone-holder – usually intended for hands free conversations. It attaches to my shelf and I can adjust it to position the phone at the right distance.

Initially I connected the overhead-phone separately to the Zoom meeting – but that seemed to overload my wifi, and was a clumsy extra participant in the meeting when it went wrong. Now I use the phone as a virtual webcam. I couldn’t use Droidcam as it only works with Windows. But the Iriun apps on the phone and mac “just work” . . At first my version of Zoom didn’t show the virtual cam, but an upgrade to 5.x fixed things.

The result is that I can switch audio between keyboard and microphone, and video between normal and overhead as well, all from the same Zoom dashboard. And the total cost was about 20 bucks for the gooseneck.

When used with voice/keyboard mixing in screen share, what I do instead is to run the Quicktime viewer on my screen, with input from the webcam. But sometimes it is useful to display it from Zoom directly.

The only thing to remember to check before you go live is that the overhead view isn’t mirrored – the left side of the keyboard is really on the left side of the window.

postscript: these settings have worked fine for the last few months – with one addition. Zoom applies filters to the sound connection to improve the quality of voice. These filters chew at piano sounds, particularly when both people are playing either at the same time or close. In your zoom settings you can toggle to “allow original sound” and then this option appears onscreen for both sides to allow (or not). This solved the sound quality problem.

With or Without DACA You Are Still American DREAMers

[November, 2016] Filed under: DACA,Immigration Law

I’d like to make a few comments. They may be helpful

Since the election, many people are making scary comments and predictions about immigration in the new Donald Trump world.  I don’t believe that these nightmare predictions trouble the undocumented community too much – you are a tough bunch. People who have fled the gangs in Central America or other terrible experiences, and have risked their lives crossing desert and the Rio Grande are survivors. People who have lived here for years, honestly and bravely raising their families for a better life despite all the roadblocks that face them are determined in the face of adversity.  But your children, raised here – even if not born here – are American kids (as President Obama calls them). And for them, the country they  love is changing in inexplicable ways. And their social media is full of very dire and terrifying opinion.  This post is for these children and young adults. I have learned a huge amount from you all, and some I count as precious friends. more…

10 no-compromise steps to fast webpage delivery

[September, 2015] Filed under: website performance

I have two active sites. This one, and – my community immigration law office site. I keep them separate because I am not writing a splog. I need this blog space to write about anything and everything without worrying whether clients will approve or disapprove or whether it will affect my search position.

This post is about improving google’s assessment of my office site’s performance from embarrassing to  the high 90s. As an immigration lawyer, being found in search is very important. As a low-fee community lawyer, being found organically is the only game in town because high-stakes advertising isn’t in my budget.


Pro Bono Considered Harmful

[September, 2015] Filed under: Ethics,law

Giving back is good. This truth we hold to be  self-evident. Lawyers learn the importance of service from their first days in law school. Securities lawyers take asylum cases, high-powered litigators mediate landlord-tenant disputes and fight evictions. So many important issues that need the volunteer pro-bono attorney. So much neglect, so many wrongs that need to be righted. And these challenges are often a welcome change from the day to day lawyering that these lawyers are skilled in. more…

Chrome works fine on my low cost unlocked firephone. So does Gmail

[August, 2015] Filed under: amazon fire phone

I have Chrome on my Amazon firephone. I use gmail all the time. And I didn’t try to install google play services. I know there are ways to do it – but I don’t like the idea of installing rogue “copies” of key google services. Yawn, boring lawyer. more…

Ten Immigration Lawyers at the bottom of the sea is a good start

Filed under: Immigration Law

Today someone came in to the office wanting a second opinion about their immigration lawyer. That is all I want to say about that. I won’t give such an opinion, but I will talk to people about expectations. I’m not going to say whether someone’s lawyer was right or wrong, too expensive, too distracted or part of the problem. But I do want to talk about some things you need to keep in mind. more…


[August, 2015] Filed under: mashups


The Truthiness of Judge Hanen’s Opinion

[March, 2015] Filed under: DACA,DAPA,Ethics,Immigration Law

I wrote this analysis earlier in the year, when Judge Hanen applied his injunction. But I wrote it for myself, not with a view to publish. I assumed that the lawyers would raise all these issues and more, and the appeals court would sort out the mess. Since Judge Hanen severely reprimanded the government lawyers for “misleading” him about the three-year DACA awards that were accidentally given after his injunction, I assume that the misinformation in his opinion was also accidental – probably due to misleading arguments in briefs offered to him by the parties. more…

DAPA – my concerns

[November, 2014] Filed under: DACA,DAPA,Immigration Law

I haven’t changed my view from August about deferred action. But it is all we’re likely to get for a while, so I’ll quit complaining about it, and get on with the work.  My concern is that the nonprofits gearing up for the very large DAPA demand are going to follow the same strategy of workshops and volunteers that they used for DACA.


DACA – work makes you free

[August, 2014] Filed under: DACA,Immigration Law,law

Another day spent with kids doing their DACA renewals, and some just starting out on this road. DACA may be the best there is but it is not good. The kids have to sit at the back of the bus. They are separate but equal. Just without any pretense of equal. They have lawful presence but not lawful status. They are statusless. They didn’t ask for this and they act grateful for the crumbs thrown from the master’s table. Filling out the forms feels like helping stitch a triangle onto their shirts. I cannot tell the difference between these young people and “real americans” other than this triangle that they have to wear. I am the kapo who puts them in the safe line for the work detail

Next Page »