- UCLA M.S. Computer Science
- Android Developer
- Freelance IT
or, thoughts from a random graduate student
Finally found the need to have a real laptop available, so I went out and picked up a MacBook Air over the Thanksgiving break. Since I’ve gotten so used to XMonad for day to day use, it would have to be running Ubuntu. Turns out that there is an Ubuntu community wiki page available detailing what is necessary to get things going.
A script available on almostsure creates a bootable USB drive to install off of, and the almostsure post-install script takes care of installing most of the drivers and configuration you’d want. For reference, the important things (as of Nov 30, 2011) are the following:
The one thing NOT covered by the Ubuntu community wiki is the wireless driver. The MacBook Air 4,1 has a Broadcom BCM43224 chip, which is actually covered by several different drivers, b43 (if you hack around a bit), brcmsmac, and the wl Broadcom STA driver (closed source). Poking around seems to suggest that the best option is the brcmsmac module, as it is based off the open-sourced driver that Broadcom released late 2010, however owing to it’s immaturity, it still lives in the staging drivers section of the Linux kernel. It also seems to lack some features supported by the Broadcom STA drivers, namely power management, which is the main reason why I chose to use the closed source (the horror) Broadcom STA drivers available from the Ubuntu “restricted” repository under the brcmwl-kernel-source package.
The one item to note with this module is that the brcmwl-kernel-source package actually doesn’t have an updated blacklist file in /etc/modprobe.d, and will fail to blacklist the brcmsmac module available by default, potentially leading to problems. I had to add brcmsmac and bcma to the blacklist with the following:
sudo sh -c "echo 'blacklist brcmsmac' >> /etc/modprobe.d/blacklist-b43.conf" sudo sh -c "echo 'blacklist bcma' >> /etc/modprobe.d/blacklist-b43.conf"
This prevents the kernel from loading both drivers. Most of this information was found on the ArchLinux Broadcom wireless wiki page. And that concludes all the laptop configuration I had to do. All that remains is reconfiguring my XMonad settings for laptop use!
I used the following to get set up in Ubuntu. Connecting to IPSEC VPN requires installing network-manager-vpnc-gnome, which will pull in the required packages. Let’s do that by running sudo apt-get install network-manager-vpnc-gnome Next we need the settings, which can be pulled from the PCF file, or the PDF on the BOL website. (Requires login) NetworkManager requires the following:
Gateway: vpn.ucla.edu Group name: <group> User password: <your BOL user password> Group password: <decrypted group password> User name: <your BOL user name> Domain: blank Encryption: Secure NAT Traversal: Cisco UDP IKE DH Group: DH Group 2
I used the pcf2vpnc program to obtain the relevant group info from the PCF. The pcf2vpnc program should have been installed by the vpnc package, and can be found on Ubuntu at:
/usr/share/vpnc/pcf2vpnc
Lastly it’s important to allow IPSEC passthrough on your router should that not already be enabled.
I actually made a post on reddit about this a little bit ago, so I thought it might be a good idea to explain in more detail here.
There are an awful lot of settings available in MicDroid, and here's a bit more explanation about what they do.
Android Settings
Prevent Screen Lock: Self-explanatory, screen won't turn off while recording if this is on.
Enable Ads: Self-explanatory, disable this to not show ads.
Recording Settings
Enable Live Correction: Enables playback of tuned sound over speakers in realtime. Requires headphones, otherwise you get really nasty feedback. Also requires that your phone be powerful enough to run it. Realistically this means anything with an ARM v7 chip, which is pretty much all phones after the Motorola Droid 1 except the MyTouch Slide, HTC Aria, and any Samsung phone not as powerful as the Galaxy S (Galaxy, Intercept, etc).
Change Sample Rate: Allows user to change the sample rate of the recording from 44.1kHz to 8kHz. Higher numbers means better sound typically, although it does require your phone to be a bit more powerful. Also, not all phones can record at all sample rates. If you are having trouble getting your phone to record, try changing this to 8kHz or 22kHz.
Change Buffer Size: Allows user to change the buffer size (indirectly). Larger values means the buffer is larger. This value is actually a multiplier, so the difference between an 8x value and a 16x value is VERY large. Larger buffers mean there will be less skipping if your phone can't keep up with the recording and processing. Larger buffers also take much longer to fill than smaller ones, so if you are using Live Correction, it is HIGHLY recommended you keep this number SMALL. Samsung Galaxy S* users are recommended to bump up this setting if they experience trouble recording.
Key Settings
Change Key: Self-explanatory, this allows the user to change the key the program is tuning to. For purposes of this program, minor keys are the same as the relative major key. Musically this is not exactly correct, but due to the way the program processes the notes (it looks at key signature, not the order of notes), there is no difference.
Pitch Settings
Pull to Fixed Pitch: This oddly named setting controls the degree to which the pitch you hear is your voice, versus a specific pitch (Concert A by default). Higher numbers make it sound more like a generated tone. This should be defaulted to 0.0.
Pitch Shift: Controls how many notes the output is shifted by. Setting negative numbers tends to make the sound deeper, positive numbers tends to make the sound squeakier. Usually you don't need to change this setting too much, maybe a few notes negative if you find the default makes you sound rather chipmunk-like.
Correction Settings
Correction Strength: This aptly named setting controls the strength of the auto-correction. Higher numbers implies you want the program to make your voice sound more like the correct pitch. Leaving this at Full is generally fine.
Correction Smoothness: This setting controls how gradual the transition is from tuned note to tuned note. For a more natural sound (similar to what is used for vocals in most songs), set this to 'Some' or more. For the T-Pain/Madonna effect, this NEEDS to be set to 'No Smoothing'. The abrupt transitions between tuned notes is what gives this setting it's signature robotic sound.
Formant Correction: Allows formant correction. This option allows the following to be changed, but does nothing by itself if the Warp Amount is not changed.
Correction Warp Amount: This setting is meant to fix the chipmunk sound that frequently happens. Negative values attempt to counteract this by making the sound deeper. Positive values seem to make the sound even squeakier. I personally find that this setting is generally unneeded, as pitch-shifting tends to give a better result. Probably a better idea to use negative numbers, if at all.
Mix: This setting changes the amount of tuned (processed) sound output versus original (unprocessed) sound. Generally you want the tuned signal, as that's why you're running this app. :P
Default Settings
Reset to Default: self-explanatory, resets all settings to default.
*Samsung Galaxy S: These phones include the T-Mobile Vibrant, AT&T Captivate, Verizon Fascinate, and Sprint Epic 4G and US Cellular Mesmerize.