Apple have reviewed and accepted the iShowU Studio Gesture Recorder iOS app into the iOS AppStore. If you haven’t read my previous post, the gesture recorder app is a way to get iOS device gestures recorded in iShowU Studio.
Progress: The next step (which I’ve almost completed) is to have iShowU Studio be able to record the iOS device directly, as an additional camera. This is sort-of-working here in a test build. The mechanics, UI changes and so forth are in place, but unfortunately I’m seeing some weird artifacting on the video itself. So, more research required. Odd, since it works fine on it’s own.
I’ve been working on a feature that lets you record iOS gestures (movement / touches) from your iPad/iPhone directly into iShowU Studio. I’ll post up a new build for you to play with real soon! It’s more or less done, I’m just waiting to see what happens with the iOS app (i.e: will Apple accept it?). This build of Studio is intended to become v1.2.0 (stable).
So what is it? Put simply, it’s shinywhitebox’s take on allowing you to represent gestures or touches that occur during the recording of an iOS app. Put simply, once you’ve got the iOS app installed (it’s currently in submission at the App Store) you can connect to Studio and begin recording gestures either directly into the timeline of the project or as “templates” into the Gesture Template Manager.
Design – why direct?
I spent quite a lot of time with different design ideas. The first design involved having somewhat fixed gesture segments, with properties such as “number of touches”, “direction of movement”. I felt this was limiting and really just “meh”.
My second attempt allowed direct on screen editing of the gesture start / end. It was like a simple non-keyframed animation that had a start and end point. You would modify the number of touches via the segment properties, but the actual placement and direction of movement were controller via two “handles” on the gesture itself which represented the starting and ending positions. This was an improvement, but came clunky when I began to work out how to represent rotation. The interface and interaction quickly got messy, I thought.
So, attempt #3 was to discard the entire idea of “editing” the gesture and just record whatever happened on some touch surface. I began by thinking that the touch pad would be a good idea, then I thought: “if you’re recording iOS stuff, you’ve got the perfect recording touch surface - the device itself”. The iShowU Studio Gesture Recorder was born.
Now, a Gesture segment is a container used to playback a series of touch movements that occur over time. If a built in gesture doesn’t fit your needs, no problem! … you can simply record whatever you want and have that played back instead. Of course you can move / scale the recorded gestures as you see fit (which is pretty neat imho).
I’m always keen to get your feedback. Let me know what you think! Let me know what can be improved. My next lot of work will focus on annoying things like the “blackness” that sometimes appears while scrubbing through the timeline, and better performance during editing.
Oh, and let’s not forget: I need to yet add the ability to record the iPhone/iPad directly into Studio. You can do it really easily right now using Quicktime (Yosemite/iOS 8 only), but it’d be nice to be able to make a recording directly without having to go through QT.
Also, be warned: If you try to publish a movie into iTunes Connect that is taken directly with QT, it will likely fail because the FPS is too high. Ask me how I know The upshot is that apps like Studio will offer some time saving, because by default everything will export at a sanity-inducing 30fps, and then (hopefully) iTunes Connect won’t throw a wobbly.
This week we were lucky enough to catch up with one of our loyal customers, online gamer Marshall Sutcliffe, to hear about how shinywhitebox’s screen capture product iShowU HD Pro is helping him reach his followers – and make magic happen in the online gaming world!
Marshall Sutcliffe, American Podcaster and Broadcaster, uses iShowU HD Pro to record himself playing the online card game Magic: the Gathering, an online tradable card game, and connect with his 40,000 followers.
With over 12 million players throughout the globe, Magic is like many popular online games, gathering whole communities with dedicated fan bases to expert players like Marshall.
Marshall’s regular recordings are used by websites or put up on his own YouTube channel, which have over 40,000 active watchers. Each video uploaded is 2-3 hours long, and as he does this twice a week, he knew he would require a robust program.
Why iShowU HD Pro?
“I looked around at what my options were, and I really liked the layout and design approach to iShowU HD Pro. I use the program multiple times per week as part of my work routine and it has never given me grief. Over the five years I’ve changed computers, used it on both a laptop and a desktop, and never had any reason to change it. It does what I want it to do, every time.”
“I would recommend iShowU HD Pro for anyone looking to do any type of screen capture work on a Mac. It’s robust, solid, and works with all of my microphones and software.”
- Marshall Sutcliffe, Podcaster/Broadcaster/Poker Player, USA.
I’m not sure why it’s taken me until now (probably something to do with all that otherwork!), but I’ve just finished implementing the most requested feature from the initial beta test of iShowU Studio – selection of partial screen areas.
Simply put, this new feature lets you create iShowU Studio projects from a sub-region of the screen. That is, a “smaller bit” ™.
I’ve taken all the best bits from both iShowU v1, iShowU HD and Studio and wrapped them all up into a single selection interface. You can:
Select by drawing a rectangle (like in HD)
Move the selection rectangle by dragging it about or resizing it (v1 & HD)
Still select the full screen (easily! … ala Studio)
Move it using keyboard arrow keys (*new!* taa-daaaa).
Resize it using keyboard arrow keys (just hold SHIFT at the same time)
Select any window under the mouse (like in HD… but in Studio, it’s not a mode… just press option and ta-daaaa, done).
I’m actually pretty excited about this one. It brings new flexibility and I think I’ve managed to make it both blend with the existing ethos of Studio and yet present as a really simple to use set of functions. Yay.
Here’s a demo of me playing around selecting different areas on the retina. The demo doesn’t do it justice tho. You have to have a play with it to see just how easy it is to select whatever area you want now.
This (and some of last) week have been spent digging into some gremlin like issues with iShowU HD. I’ve been focusing on:
Why the heck the silly “can’t find display <big long awful number here>” message appears for some users…
How iShowU HD behaves in a multi monitor environment, and;
The main thing I’m trying to do is understand what’s causing these irritating messages to appear. The reason it’s “hard” is that I don’t get them on any machine here.
To this end; I’ve made a number of improvements to the way the capture space is handled. In the process I think I’ve fixed a number of bugs, and sped things up at the same time. I’ve had early reports from some users I’ve been in touch with that the changes have been good.
Speed wise, it turns out that if “drop duplicate frames” is enabled (a sensible default, in theory) that capture can be quite slow for about 30 seconds. After which it magically speeds up. But annoyingly, it’s not just slow … it’s jerky and horrid. So now I’ve made that option disabled by default. It can be enabled if you need it, of course. Oh, and wouldn’t you guess? It doesn’t happen on Yosemite. Go figure.
This brings it’s performance much more in line with pre 10.7.x. It’s faster to start capture and smoother to boot.
If you’ve any issues, don’t hesitate to get in touch over at the bleeding edge page on Facebook. It’s a quick easy way to get in touch. I do read email, and support tickets but these typically have a longer turnaround time (day or two).
I’ve been keeping the rules tho: Haven’t fed the codebase water, fed it after midnight (debatable) nor exposed it to bright light.
Pick up the new build using the normal methods. i.e: software update within the app, making sure “beta updates” is enabled in the iShowU HD preferences software update pane.
I spent some quality time with Studio yesterday to produce five quick start videos for … iShowU Studio. These are aimed at introducing the app, its layout to both new and existing users. The series covers some basic editing as well as touching on a couple of more advanced features such as freeze-frame and pan/zoom.
These videos are now online, available both in our video section and also as a playlist on YouTube. Here’s a brief synopsis of each:
Introduction, what Studio “is” and a quick tour of the UI. I also covered basic insertion of shapes.
Basic Editing, how to select objects, multiple selection, lasso dragging, delete, trim and region cut
Properties & Visualization, modifying the look of objects and using mouse & keyboard visualizers
Advanced Editing, introduction to Pan/Zoom & Freeze Frame, an also freezing using an audio insert. Examples of all of these are included in the video.
Sharing, how to share as a QuickTime file, sharing to YouTube and also authentication with YouTube via oAuth.
Probably the hardest part (for me) was making these videos short. As a precursor to this effort I spent some time planning a table of contents of all features of Studio. If I were to keep the videos at about 4m each I think I ended up with about 17 videos in total! When you pause and write down all the little things Studio can do, you end up with a lot of material to cover!
As always, I’m keen for further suggestions for more video. I feel “aware” that these cover the basics, and those users who have more experience may be interested in more complex workflows. Fire suggestions my way!
I feel like I’m getting a handle on how to produce them reasonably quickly. These five took me about 8-10 hours and that time includes script writing, proofing, production, encoding, uploading and blog posts.
I’ll probably make a post at some point about the workflow I’m currently using (it’s essentially: all audio first, make the video fit). I’m finding that doing the script first, audio and then video means I have very very little rework (if any, in fact).
I thought I’d do something a little different (you know, because I can’t spend all day coding, right?) and run a competition involving iShowU Studio. The idea is simple: You create a awesome looking small video showing how you make use of Studio and we give away some neat prizes including an Apple TV, iPod shuffle and iTunes vouchers.
Full details are over on here on the main website. You can register from that page and we’ll send an confirmation email a few minutes later along with instructions and super interesting things like terms & conditions
I’m keen to see what people come up with! I’ve been talking to a few people recently and it’s been exciting to see what people are doing with iShowU. I’m hoping this competition shows up some more projects that people are working on, and I’m looking forward to the response!
Why are still reading? Go over to the competition page and register now!
I’ve recently been refactoring the text implementation in iShowU Studio. Previously I had used Cocoa’s built in NSString additions (drawAtPoint: etc), which appeared to work pretty well apart from some minor hiccups trying to get the text vertically centred.
In the initial release of Studio I got around the vertical problem by munging the values. The font was fixed, so I could get away with that.
Version 1.0.4 of Studio introduced the ability to change the font. Things started to go … quite … wrong. Cocoa’s idea of what constitutes a text rectangle (aka: bounding box) is weird, and often just downright plain wrong. Here’s an example:
Not what the doctor ordered. Very incorrect bounding boxes.
The red line represents what Cocoas NSString additions think the bounding box is. Notice it’s too tall. That’d result in the text being too low when vertically centred. Sometimes it’s right. Sometimes it’s not.
The blue box is what NSLayoutManager thinks. Um, I’m not a rocket scientist, but I’m pretty sure that text is not going to fit in there. What’s worse is that sometimes each of the methods above gets it right, sometimes not. And they are both inconsistent. Pretty much completely useless if you want to present correctly vertically centred text. And before you ask, because I just know it’s on the tip of your tongue, yes I did set the NSTypesetter behaviour to NSTypesetterBehavior_10_2_WithCompatibility.
In short, unless I’m doing something stupid (always possible) various fonts yield very very different bounding boxes. Nothing is consistent, so if you’re going to try to layout this text vertically centred, good luck with that.
CoreText – no so hard after all
I scratched my head over this one for a couple of days, pondering what to do while I worked on some other code. Enter, CoreText.
Turns out it actually works. The bounding boxes returned are way more sane. Here’s the same text, with the same font, but rendered using CoreText:
Look at that! It’s a sensible bounding box!
I must give credit to Jjgod Jiang for his slides on text layout. With that I was able to create a simple class that’d a) perform the right layout and b) provide decent bounding boxes that were consistent across all fonts.
So, if you find yourself struggling to perform layout with the Cocoa NSFont/NSLayoutManager classes, or if you want to discover correct bounding boxes for arbitrary (and possibly multi line) strings, turn to CoreText. It’s simple enough to use, and it actually works.
As I’ve been using Studio myself, I’ve come across a few bugs (lets call the fixes improvements to general editing shall we?). The most obvious this week was some strange behaviour with freeze-frame. I couldn’t freeze the end of a segment. Nothing would happen. Huh? … And when I did finally create the frame I wanted I couldn’t resize it to take up the available free space. Grr.
These issues are now fixed, with a few other bug fixes thrown in for good measure. Now Studio is behaving far more sensibly when doing freeze operations. Yay!
Don’t loose the plot
One of our customers, Alain Desson also kindly emailed me a nicely detailed report of odd Autosave behaviour. Because of this, I was able to quickly find and fix the problem. Good thing too, since this particular bug could have resulted in lost files! Eek! Thanks Alain!
If you’re curious, here is what would happen (all in the past now, a great reason to update!):
You’d schedule a recording using the timer.
Recording would proceed, but during the recording you would click on something else, thus iShowU Studio would no longer be the focused/active app.
Recording would complete, and iShowU Studio would bring up the new doc in the background.
15s later – Studio would decide to delete the saved document from disk. Not good.
Note that this only happened if (2) was true. Sometimes AppKit is downright weird. This ended up being a one line fix, and now works just fine.
It’s not all bug fixing here. I’ve been working on a rewrite of the properties panel, I’m thinking about how to introduce nice transitions, and I’m pondering how I’ll go about moving all the assets from their projects into a general “per volume” storage vault.
In my post the other day about the new features in iShowU Studio, I completely forgot to mention the new locking feature.
Each segment can now be locked. This prevents the segment from being moved, scaled or rotated. It also prevents the segment being split, or deleted or region cut. You can still change it’s properties, it’s just “locked” in the scene.
To lock a segment right click on it either in the timeline or the scene, and choose the “Lock Segment” from the menu.
Quite useful for backgrounds that you want to span the entire scene. Or for inserting a completed audio track and then working the video around that track. Locking the audio track means you can perform cut/slice/cut operations at will, without worrying about what is selected. It makes editing quicker.
Freeze Selected Objects
In addition, I added a freeze frame for selected objects. So while you can still freeze over the entire project, you can now also select just one/some segments and freeze just those. That’s great for expanding out short bits of video that you want to be a little longer.
To freeze just selected objects, you first have to select some. So… select some segments in the timeline. Then go to the Edit menu. There’s a new item there named “Add freeze frame on selected segments“. Done!
Note: remember to have the playhead positioned where you want the split to occur. If the playhead is not over any of your selected segments, nothing will happen.