Everest Feature Requests

Hello everyone,

I have received lots of private emails for new features. I figured this would be a good place to store future requests (and previous ones).

I will start off by saying that getting audio from other apps into Everest is the most requested feature. Everest was originally design to be a live performance tool that sampled live input from the outside world via the microphone, headset or a device connected to the dock connector/lightning connector port. However, I totally understand the desire for this workflow. There are a number of ways I can implement this behavior.

I have already coded up a solution that allows Everest to sample audio from a hosted Inter-App Audio Generator app. I have to submit this build for review before anyone can use this, but just from my preliminary testing, it works great!

I also plan on making Everest an Inter-App Audio Music Effect. This would allow you to load Everest into a host and sample pre-recorded tracks into Everest. One of the biggest challenges with this is monitoring. Since Everest does not monitor by default, and most Effect apps do, I would also need to implement this code path.

The next way to get audio in would be pasting WAV files from the iOS pasteboard. This was implemented, but there was some ambiguity with regards to sync. I also needed a better UI than the one for Copy and Save. This will definitely happen. I just need to create a mental roadmap of how to get it done.

On the topic of mental roadmap, I am currently investigating Audio Bus support. I need to understand the API and license requirements before committing to anything, not to mention judicious manual testing. Hopefully Inter-App Audio can satisfy your app-to-app needs in the meantime.
«1

Comments

  • Hello Christian,

    I didn´t try the Everest yet (I will buy it on the next days), but as far as I know, there are some features that I think could make it one of the best looping apps.

    -Automultiplying, so as you are overdubbing a loop, it goes growing it´s lenght until you end recording.

    -A floating layer that opens when you press a button, that allows you to manage the different layers of a looper, so you can modify it´s volume, reverse, mute, etc. the layers that you want in that looper.

    -The option of keeping the master looper playing, while you give an exclusive control to only one of the other loopers, for having the possibility of creating different sections. And having the possibility also of record all the loopers sequentially, so you are recording on looper1 and when you press looper2 it begins recording on looper2 (and stops recording looper1), etc. And the same, if you are playing on looper1 and you press looper2 it begins playing looper2 (and stops playing looper1).

    -Export each looper´s layers to WAV.

    These are some features that come to my mind now, and hope you like it if you can develope it on next releases :)

    Thank you very much.

    Best regards,
    Ruben.

  • Sorry for the delay, I have been making videos and adding features. :)

    Everest' Multiply does overdubbing and growing of loop length at the same time. I need to make a video tutorial just dedicated to this function. I think it is one of the most useful functions in Everest.

    I think all the rest are do-able:

    I'm not sure what you mean by layers, but if you mean the undo history, then yeah, there are plans for accessing it directly. I just need to find more screen real estate... I have an idea for this, though MIDI may be an easier stop-gap solution.

    An exclusive play/record mode would definitely be do-able and useful. I also thought a serial record mode would be cool too, each press of a certain MIDI command would record and play one loop, then on the next set of presses, move on to the next loop. These both need a diagram. I will have to mock one up soon.

    Each loop in the undo history could be saved out to disk in a simple way, I just need to modify the existing code to support that.

    thanks Ruben!
  • Small Update:

    I implemented and tested the sampling of hosted Generator apps! It is working very well. It also still allows sampling of the audio input (from the mic, headset, USB, etc.). This re-routing of audio will be available in the next release (probably 1.0.1). I need to polish a few more things and get some more testing in before I submit, but the submission could be as early as tomorrow (if I am lucky).

    Another thing I am close to finishing is the pasting of audio into loops directly. At this point, my UI design is this:

    1. User presses-and-holds an empty loop window.
    2. The iOS paste button appears in the center of the window.
    3. Pressing the paste button starts loading the file into the loop. This has some UI feedback letting you know it is happening.
    4. When done the loop will enter paused mode, and can be started at any time.

    In terms of sync, if the paste happens before the master beat has been set, then the paste should set the master beat. If the paste happens after the master beat has been set, then I think I have some options:

    1. Trim the audio to match some multiple of the master beat.
    2. Load the audio as-is, but disable sync for the remainder of the tracks life.
    3. Load the audio as-is, but leave future sync'd operations enabled (like Multiply).

    I am leaning towards #3. What does everyone think?
  • Hi Christian! thanks for your response.
    About your first response, what I call layers is the history of recordings ('undo history') but without deleting any of the recordings in the history, just the possibility of deleting or editing (the volume, pan, reverse, etc.) any of the loops (layers) that have been recorded in a looper.
    And about the update,
    is audiobus or interapp what you are testing?
    I think, as you, that the option number 3 could be the greatest, and I suppose the loop will fit, timestretched, in time with the main tempo, am I wrong?

  • The undo history also deserves its own video tutorial, though I will try and explain some of it here:

    As of 1.0, the following create new entries in the Undo History:
    -When you Record a new loop.
    -When you do something that changes the fundamental length of the loop (like Insert or Multiply).
    -When you change the start or length of the loop window.
    -When you "edit" the loop via Feedback changes, Overdub, or Replace.

    The Undo, Redo, and Bookmark functions allow you to navigate this chain of entries in the undo history.

    I made a conscious choice not to include certain states and parameters in the set of possible undo history entries. This was done for one particular reason: I wanted to make the undo and redo musical and responsive. If I saved every edit, to every parameter. in the undo history, it would take too many presses of undo and/or redo to get back to a desired loop after making edits.

    As such, the entires in the undo history are relatively coarse. For example: if you make multiple overdub passes to a loop, and don't change anything else, these overdubs get grouped together as one large edit. When you press undo, ALL those overdubs are undone together, as a group, and the original loop plays as if no overdubs were made. Of course, you can press Redo and get immediately back to the heavily overdubbed loop.

    All that said, I understand the desire to have each loop encapsulate ALL state regarding the loop (including volume, panning, hardware channel assignment, etc.). This may require a different parallel undo history. Of course, that may only clutter the interface and confuse future users. I need to think on this more. Everest was originally designed for quick/spontaneous live looping.

    I just want to re-iterate: Despite all this detail/explanation I am still interested in adding a new UI, somewhere in the app, that would allow users to instantly jump to any entry in the history. I think that feature would be great.
  • About the update:

    This update is only for Inter-App Audio. When released, Everest can host and sample/record a 2nd Generator app. This will allow users to mix new loops with the 2nd app, as well as loop audio from the 2nd app, and everything in-between. This can all be changed at runtime, in realtime, as well. So you can sample the 2nd app, then go back to sampling the hardware inputs/usb/etc.

    I will be making a demo video showing all of this in the near future. I just have to find a an app to demo. Any suggestions? I have emailed a few app developers seeing if it is Ok to demo their app, but have not received any replies. :(
  • In terms of pasting audio files:

    There is no time-stretching in Everest. So if you paste a WAV file, and it isn't the precise length, it won't necessarily sync to the master beat. That said, doing a multiply on the loop, with quantization enabled, will create a new loop that will be quantized. Of course this may truncate the loop in an unexpected way. You may need to undo then re-multiply the loop to get the desired results.

    My plan: If the first loop is pasted from the iOS pasteboard, and no other loops have set the master beat, then that first paste would set the tempo and master beat. This would be similar to recording the first loop, but you would just be pasting the audio from some other app, instead of sampling from the microphone (for example).
  • I noticed a lot of people are reading this thread. I just started another thread with a link to a spreadsheet detailing the features I have planned for Everest. Here is that thread:

    http://glowgraph.com/forum/discussion/4/everest-roadmap
  • Of the nine apps I've tested only Funkbox responds properly to IAA sync. Not shure there's much you can do about it :(
  • Yeah, Funkbox works great, as does TriqTraq. In the new version of Everest (forthcoming) I also got EchoPad and Effectrix to work/sync in the effects slot. The latter did seem to require new hardware/OS, which was confusing, but it does sound great!

    In the debugger, many apps are simply not "asking" me for the timeline info. Hopefully more developers will support this in the future...

    One interesting challenge for us developers: other apps don't have to implement much of the Inter-App Audio feature set to say they support Inter-App Audio. For example, I have seen some apps ask for the tempo, but not the current sample position. Both are needed in most audio algorithms to track sample-accurate tempo and transport.

    In general, if the app syncs to Garage Band, it should sync to Everest. Please let me know if any apps work in GB but not Everest. FunkBox used to not work with Everest, but once I changed the base time signature from 1/4 to 2/4 it worked. My guess: Garage Band does not allow for many time signatures, and app developers coded to GB as the standard implementation of IAA hosting.
  • I'll try triqtraq, nice app! Elastic drums seems to be playing along. Looking forward to the new version, I've found Effectrix very choosy in the past and it won't work without clock. Fingers crossed for Flux FX!
  • @crifytosp I was just reading about Flux FX. Seems like an amazing companion app to Everest. Do you know if syncs to Garage Band's tempo? Does it listen for MIDI sync?
  • Tested, syncing to GB. :)
  • Get Flux, you won't regret it.
  • Great news! I will definitely test it before I release the new version. Thanks!
  • Is there a reason waves don't draw in real time? It would be reassuring to see something happening.
  • If I understand you correctly, you want the waveform to draw on every pass of the loop. That could work for many of the modes. There are some complications though:

    One complication is performance. To keep Everest at 60 FPS I have to be conservative/clever about when and what I draw. The waveforms are the costliest UI element to draw, so updating them without blowing the frame rate or eating up CPU is challenging.

    I figured the most common case is seeing the waveform play back after recording. The second most common state is editing/windowing. Those two states (playing and windowing) don't really require constant refreshes/re-draws of the waveform. So I just coded to those two common cases first.

    I definitely agree that the waveform drawing should be used in a more effective way, especially for the other modes. They are really the best way to see what is happening when sampling and looping.

    In the new upcoming version, for example, Overdub updates the waveform more frequently. It was frustrating, even for me, to not have changes made to the loop reflected in the waveform view.

    I also plan on re-doing some of the UI for modes like Replace, Insert and Multiply. I should be able to provide better waveform drawing for those modes. They make unique changes to the loop, and I have never been 100% happy with how they look, so I really want to improve it.

    One other thing: In place of a VU meter I do brighten the waveform colors as the peaks are hit. This was designed to help show the contents of the wave and exaggerate the audio peaks with a corresponding visual spike. Have you noticed this? I was always playing around with the color/brightness parameters for this feature, but was never sure what the right balance was. Perhaps if I exaggerate that a bit more it will be easier for users to see that sound is being (or NOT being) played back.
  • "One other thing: In place of a VU meter I do brighten the waveform colors as the peaks are hit. This was designed to help show the contents of the wave and exaggerate the audio peaks with a corresponding visual spike. Have you noticed this? I was always playing around with the color/brightness parameters for this feature, but was never sure what the right balance was. Perhaps if I exaggerate that a bit more it will be easier for users to see that sound is being (or NOT being) played back."

    Interesting, as I hadn't noticed that. Looking again it is there as you say. Exaggerating this would be an improvement.

    Great to hear another update is coming already.
  • I agree, emphasise those illuminations.
    to come out of bounce I have to press the play button above. In this case I would expect this to be a toggle.
    There is very little graphical representation for feedback at the mo..
  • @thinds I will definitely work on this, possibly even for this release. I have to find the balance between it being too distracting and clear.

    @crifytosp Yeah, the lack of feedback for feedback (heh) is definitely a problem. I have a few UI ideas for a future release. Certainly some kind of passive, non-touchable icon showing the relative feedback level on or near the waveform would help. As would having a dedicated/animating fader (which is planned).

    In terms of bounce, I am not sure what you mean. I am guessing that you would expect the Bounce button to become the play button, instead of becoming the Undo button. I am inclined to agree with you. The moving button icon semantic is often confusing, even for me. :)

    I have however been debating whether to enable Undo to also undo active recordings. This could be helpful for accidental bounces, but would not be possible should I make the Bounce become the play button. I am planning on a new UI update in the future that should address this. Let me know if that isn't what you meant.
  • Yes that's it. It would be amazing if the flexibility of the EDP could be incorporated into Everest. It's been a while but I remember undo could cancel any function. On the EDP, button presses can be quantised by varying amounts allowing for function stacking. Multiply can accumulate the bars multiplied with multiple presses for instance! Combine this with long press SUS functions and various feedback modes the looper is an instrument unto itself, for those that master it.
  • http://circularlabs.com If this was ported to iOS i wouldn't complain!
  • Right now Everest does have a few press-and-hold functions. Using MIDI notes, Overdub and Replace are press and hold. Record does erase the loop/loop history when you press and hold it using the button and MIDI notes. I want more than that though.

    That said, I have been playing around with different behaviors for the different functions, both in terms of MIDI control and the UI/button control. For example, I am planning on recreating the Insert and Multiply UI to not only include better visualizations, but some kind of musical/precise editing, where users could pre-set the multiple/insertion count, as you're hinting at.

    I also want to add an input level controller and a mapping table for a macro control. This would allow the user to customize the simultaneous control of input level, feedback, and output level, all with one fader/midi controller. I plan on even having inverted mappings, where as one of any of the three lower, the other one(s) raise(es). Again, I just need to find a clean way to show this in the UI, which takes time. MIDI mapping/learn also adds to the complexity, but hopefully I can pull it off.
  • When recording I'd like undo to cancel record and reinstate any audio previously on the track.
  • I agree. I started implementing this for the 1.0.3 release, but my attempt caused some weird bugs, so I pulled it out. I should be able to get it working in the next release. This type of undo would probably apply to inserts and multiplies as well.
  • Awesome :)
  • Hey Christian,

    Although I still believe Everest could be The performance looper on the iPad I have been using it less in the last month or so. Here's what's holding me back:

    1. I might have written it already on another thread, but here it is again: I think the most powerful way of using undo/redo is to remove overdubs and bring them in again. Currently, if I start and stop an overdub and then repeat the procedure those two overdubs don't correspond to two seperate undo states, so calling undo removes them both. I understand that it's not a good idea to create an undo state for every little action but in my opinion overdub is more important than any of those other actions.

    2. When controlling window start and window length over midi I sometimes get dangerously loud pops. I'm too afraid for my speakers (and ears) to use this function which I think is a key distinguishing feature for Everest. It needs at least a limiter. I'd prefer better fades though. And/or some sort of midi implementation that prevents massive jumps.

    I really want to use these functions with my Guitar Wing controller which is perfect for it.

    3. The overdub function needs a fade in/out.

    4. The record fades could be improved upon as well. From my experience this is a really complex topic and there are probably no perfect solutions, so I don't expect one. But at the moment, no matter what option I choose I don't seem to be able to get a pop free continuous loop going.

    5. My last point was a non-issue before I got my Guitar Wing. There is just one little problem with that thing: it's impossible to start recording a loop where you start strumming immediately, because you need your right hand to push the record pad. I have never missed an 'auto-record' function before but now I do. I was kind of surprised that even Loopy doesn't have one.

    It would be lovely if you considered these suggestions. I think they all would make Everest a stronger performance tool.

    Cheers,
    Axel
  • Hi @Axel,

    Thanks for the feedback, it is very helpful. I am sorry you are running into these snags. It sounds like you have found all the dark corners of the app, so kudos to you for the deep dive. :)

    Let me address each point, one at a time.

    1. I agree that it would be useful for consecutive Overdubs to create undo history. There are some significant usability and performance problems with the designs I have tried in the past. So, this will definitely require more thought, design and effort on my part. Maybe I can make an experimental/expert switch that enables that behavior...

    In the meantime, I designed Multiply to serve this purpose. Each Multiply operation will create a new entry in the undo history. The difference is you have to be more deliberate about button presses (in terms of when and for how long). For Multiply to act like Overdub, it has to be executed for the exact same number of beats. Overdub is more of a fire and forget kind of thing, which is understandably more fluid/intuitive, but I figured if users are foot savvy enough to jump between different undo history layers in a performance, then Multiply will get them across the line, for the time being. :)

    2. I thought I had sufficiently squashed those noisy window pops. Sorry about that. This comes from an audio discontinuity, which occurs when the current cursor position is suddenly outside of the loop window and jumps back inside. In other words, you will probably only see this when you are editing the start or length parameters and interfere with the playback head/line position.

    Again, the main block to fixing this once and for all is performance. It is difficult for the code, as it is currently written, to pre-emtively ramp down the volume before and after a loop window discontinuity, without hurting performance. That said, there should be a way to make it work. A limiter is a good suggestion, but is probably best left to another app or an external device, again for performance reasons. I will definitely add this as a bug to the roadmap.

    3 and 4 are related. Yes, it would be nice to have an optional smoother transition when entering and exiting Overdub. It should be straightforward to implement fades on operation starts and ends. I imagine the final implementation could be generalized for most if not all of the other "recording" operations (i.e. Multiply, Insert, etc.).

    Record fades should not be necessary however, if the playback fades are enabled. What kind of continuous loop are you trying to achieve? I myself can get smooth drone loops (sorry if this is verbose):
    1 by turning off loop end fades,
    2 turning down my volume knob,
    3 start recording a loop,
    4 play,
    5 raise my volume knob,
    6 end the recording with an overdub,
    7 then lower my volume knob,
    8 end the overdub

    5. Yeah, auto-start-recording has been requested before. I have seen old samplers capable of this too so it is definitely do-able. The only tricky part is how inconsistent it can be in practice, especially if other loops are playing. Also, the audio threshold can vary greatly between different hardware configurations, and would need possibly confusing user settings, but I am probably over thinking it. Finally, how useful is auto-record without auto-play? I think this is why other devices allow you to preset the length, which has been requested before. So that may be necessary for this feature to be useable. I also have to think of where the auto-record button would go... : /
  • Thanks a lot for your detailed answer.

    1. This undo issue isn't a showstopper really and the workaround using Multiply does work. But as you say, Overdub feels like a more natural candidate for this sort of usage. I'd love to have an option to enable this behavior in the settings.

    2. Hmm, I see. Personally, I would take a lag of maybe 30ms when adjusting the window over those pops any day.

    3,4. As for the noise at the loop borders, I will investigate and document it and send you some files.

    5. What I was thinking of is not hard to do I think. It's an option to use the record button to not start recording immediately, but to engage the auto-record function so that recording will be triggered the next time the input level crosses a certain threshold. Closing the loop would work exactly as usual by pressing record again. There's no need for a dedicated auto-record button. Also, there's no need for 'auto-play' because even if you play, e.g., continuous 16th notes you will have 1 16th note time to reach for the record stop button after you've played your last note in the loop.

    Auto-record would only work when no tempo has been set yet.

    I'm thinking of an option where you can set 'first recording mode: manual/auto' and a slider where you set the input level that triggers auto-recording.

    Until a few months ago I owned a Vox VD-1 hardware looper that had this function implemented in the way I just described.

    I'll contact you about the fade stuff soon.

    Cheers,
    Axel
  • Hi Christian,

    Just starting to get into Everest and finding it to be very cool so far. I'm actually now experimenting to see if this might be a workable replacement for my LP-1 setup on those occasions where I don't want to take a rack of gear along with me, and Everest seems to be looking pretty good.

    One quick suggestion, that I hope might be an easy tweek. I love the fact that you've got an assignable Master Effect, and its implementation is brilliant. For instance, I've been wrestling with both Effectrix and Turnado for what seems like forever. And while I love their results, it's always a freakin' bear to get them set up and playing nicely with the other stuff running on my iPad. Your implementation just works; no transport issues, no sync problems, no MIDI glitches. So I thank you for finally making those programs easy to work with.

    However, those are generally pretty 'heavy handed' effects, and can completely take over a song if applied to the whole mix at once. So I was merely wondering if you might be kind enough to consider implementing a simple set of on/off switches for sending each track either through the Master Effect or directly to the mains. That would make it far easier to limit the Master Effect to only one or two tracks, while the rest of the tracks can bypass it and go directly out.

    Please let us know if something like this might be a possibility, and thanks!

    --m.
Sign In or Register to comment.