Cyan (stranger
)
04/02/06 11:49 AM
|
New MIDI Sequencer for BeOS
|
| |
Hey,
I'm currently in the process of designing a new MIDI sequencer for BeOS. I know that there are a few other MIDI sequencers for BeOS, but none of these fit my requirements, and don't appear to be actively developed.
If there's anyone out there who's interesting in doing MIDI sequencing in BeOS, or even audio recording/multitracking, some feedback would be *extremely* helpful at this stage to help determine what features are necessary.
Possible features or design ideas include:
Interface behaviour and editing ===============================
* Fast, compact, BeOS-native GUI, no weird controls.
* Single window interface? (perhaps with the ability to spawn new windows if specifically required, e.g., grid editor).
* Possible to drive it entirely from the keyboard, configurable shortcuts.
* Linear sequencing; e.g., not pattern based. Think Cubase or Cakewalk, rather than e.g. a MOD tracker.
* Arrangement window possibly based on bar-blocks rather than Cubase's "tape clippings". I'm not 100% certain of this yet, and a compromise may be possible. Bar-blocks allow edits to take place fairly freely (the zoom level could be changed so that a single block represents a beat, etc.), whereas tape clippings require a lot of "housekeeping" work to snip them, copy them, etc.
Examples:
Tape clipping: >http://www.h7.dion.ne.jp/~fmtk/LOVELOG_IMG/20050927cbe70345.jpg
Bar block: >http://www.socc.ie/~midiclass/images/sequencer.jpg
* Probably closer to Cakewalk in design than Cubase. That is, the arrangement window may have a set of user-configurable columns for various track parameters such as name, port, channel, bank, patch, key+/-, velocity+/-, time+/-, volume, reverb, mute etc. Somewhat like Tracker's columns, although a bit more friendly towards keyboard navigation and field editing.
* Possibly integrated patch management (librarian) and synthesizer editor features. There will definitely be a way of selecting patches and banks by name instead of just number, at the very least
* The window layout may be based on horizontal "strips", particularly the grid editor. The idea is that you can add various strips to the window quickly and easily, so you could edit three parts at once, each in their own horizontal strip. Or you could edit the controllers and the notes at the same time. If the application uses a single-window design, a list of tracks may be present at the side of the window. Selecting a track will bring that up in the piano roll. Selecting multiple tracks (using shift) will bring each one up in its own strip. There would probably be some way of toggling between "grid editor" view and "arrangement" view quickly and easily -- a single click and/or keypress.
* Plug-ins to process MIDI data. E.g., the "transpose" function is really just a plug-in. Probably loaded from disk at runtime, and user-developable.
* Every block edit operation goes via an "event filter", which lets you exclude or include certain events from the edit operation. For instance, you could cut all controller #7 values, transpose all Bbs to B, increase the velocity of all notes except the octave above middle C, etc.
* There *may* be a way of sending a single track to multiple MIDI ports and/or channels at the same time; perhaps multiple output destinations or "clone tracks", intended to make layering multiple sounds easier.
Recording =========
* Only one track can be recorded at a time, at least in the first version, unless I get feedback requesting otherwise. It may be possible to record multiple midi channels at once and split them up on separate tracks.
* There will almost certainly be a "record buffer", which records all incoming MIDI data whenever the transport is rolling, even during playback. When you switch the transport out of record mode, the record buffer is dumped onto the selected track, thus implementing the record function. However, because the record buffer is always listening, if you stumble across an interesting riff while the transport is rolling in "play" mode, it's still possible to recover your lost idea by manually dumping the record buffer to a new track, available as a menu option.
* I'm not sure yet how it should handle recording with the transport in "loop" mode. Should it record over all data on the previous pass? Merge the new take with the last one? Automatically move to the next track? User-configurable?
* Sequencer will act as a synchronization master, transmitting MIDI clock and MTC along with MMC if required. Sequencer will respond to MMC. The first version may or may not support slave synchronization. When it does support slave synchronization, then I may implement some interesting features using the sync engine, such as the ability to synchronize the sequencer to a MIDI footswitch, being tapped on each beat, allowing "free time" recording.
Audio =====
I'm not sure if the application should do multi-track audio recording yet. It adds a great deal of complexity to the application, and breaks a lot of the purity of the user interface. However, as I would quite like a multi-track recording application, unless anyone else is planning to develop one then I may write a standalone recording application. If there's enough demand for integrated multi-track recording in the sequencer, I may consider that option instead.
=========================
If anyone's got any comments on these proposed features, or could highlight exactly what they find inadequate about the existing BeOS sequencers, I would find that very helpful! Most of it is still highly subject to change, so even if you disagree with some of the proposed design decisions, you may still be able to convince me to rethink it.
In general I'm hoping to keep feature creep to a minimum, since I firmly believe that simpler applications are always better, providing they supply enough features to do the job smoothly.
|
sausagefingers (stranger
)
04/02/06 03:35 PM
|
Re: New MIDI Sequencer for BeOS
[re: Cyan] |
| |
Hmmm....sounds very interesting. I was a beta tester whilst MeV was being developed by Christopher Lenz. I could help out as and when you require it. As for intended features, what you have in mind sounds like alot of work :o)
Can you not use anything from the work that Chris put into MeV?
SqueekySynth has brightened my altogether rather dull day! :o)
|
nutela (stranger
)
04/03/06 09:55 AM
|
Re: New MIDI Sequencer for BeOS
[re: Cyan] |
| |
Cyan, have you used Sequitur? It has a few 'argh-features' (it's designed by a a-bit-more-programmer-than-musician) but otherwise it's very nice looking and the source is available if you ask Eric Hackborn (I've mailed him about it)
http://www.bebits.com/app/1576
Nutela reachable at:
nutela replacethisat women-at-work.org
|
filo (member)
04/04/06 10:12 PM
|
Re: New MIDI Sequencer for BeOS
[re: Cyan] |
| |
I'm all for a multi-track recording application. I currently use MeV-unfinished as it is-for MIDI stuff. Nothing terribly heavy; I use it as a control for an external synth. OF course, I'm always glad to see more apps (espeicially audio apps in the BeOS-world), so please continue the MIDI sequencer, too. As far as whether they should be together, or separate applications, well, you're the programmer. Several MIDI sequencers have come and gone they promissed multi-audio capability at a later date and never delivered (dBe, MeV, etc.) I think all of us would be so glad to have a multi-track audio recording program that we wouldn't really care if it were a stand alone application.
As far as the way you describe the workings/layout of what you have in mind, I think I'm in complete agreement.
BTW, I'm loving SqeekySynth. I've been so wanting sf2 functionality on BeOS. Hooray!
|
Cyan (stranger
)
04/10/06 02:33 AM
|
Re: New MIDI Sequencer for BeOS
[re: filo] |
| |
In reply to:
Can you not use anything from the work that Chris put into MeV?
I did consider that, as I very much like the visual appearance of MeV -- it's very BeOS-ish. However, in its current form, I don't think the code would be too useful; it would take a significant amount of time to learn how it's put together, which would've been better spent writing something from scratch. The only part I'd keep from MeV would be the grid/piano roll editor, and that isn't a particularly hard thing to write from scratch.
In reply to:
Cyan, have you used Sequitur? It has a few 'argh-features' (it's designed by a a-bit-more-programmer-than-musician) but otherwise it's very nice looking and the source is available if you ask Eric Hackborn (I've mailed him about it)
It's the "argh-features", as you so nicely put it, that put me off using it heavily. The whole design philosophy seems completely different to what I'm looking for in a sequencer -- mainly, it has many non-standard interface components (it appears the entire GUI is bitmap-based?), doesn't have conveniently adjustable track parameters, etc.
So, I'm not really sure that's the way to go, either. It doesn't seem like it would be too difficult to get a basic sequencer written, the most time consuming part is designing the interface. I did consider practically cloning Cakewalk or something, since that reduces the amount of design work required, but clearly that wouldn't lead to a very BeOS-ish application. It's probably barely legal, too. =P
The emphasis would be on getting the basic features up and running in the sequencer first, before adding any fancy stuff. One of my biggest complaints with the existing sequencers is that they seem to lack several essential features, but have many features that are unnecessary; e.g., they're not very "well-rounded".
In reply to:
I think all of us would be so glad to have a multi-track audio recording program that we wouldn't really care if it were a stand alone application.
What kind of features would you expect from a multi-track recording app? I'm assuming it'd need an integrated mixer with insert/buss effects (unless that's a separate app itself, connected via the Media kit's audio routing?).
What about audio editing features? If flexible audio editing (like Cubase) is critical, it may be more sensible to integrate it into the sequencer, like most other MIDI+audio sequencers on other platforms.
For my purposes, I don't require very flexible audio editing features. I'd almost be content with tape, if it weren't for all the winding and cleaning. So if I were writing it entirely for personal use, it'd be a fairly simple app that lets you arm audio tracks and record them in a linear fashion. Editing features, if included, may be similar to a simple wave editor -- the tracks would be linear "wave" views which you can perform destructive edits on, not clippings like Cubase. If editing features were omitted, then presumably the app would be designed so that you can load the individual tracks into a wave editor of your choice (e.g., it'd use standard wave files).
That being said, I'm not designing it exclusively for personal use, hence this post. If editing features are of critical importance, then I'll consider integrating it into the sequencer. If they're not, then I'll consider making it a simple standalone app instead.
P.S. I can't seem to get the quote tags to indicate who I'm quoting. Haven't a clue why...
|
nutela (stranger
)
04/10/06 04:54 AM
|
Re: New MIDI Sequencer for BeOS
[re: Cyan] |
| |
I like the 'combine-the-small-apps' idea more if I compare the preferences apps R5 versus Zeta. A good idea would be a more user friendly Cortex with some basic building blocks available right from the start (can be 3rd party).
For a MIDI sequencer I'd wish something that could correct my input from a midi keyboard (who plays perfectly?) by generating a tempo-track and make it visually easy to adjust notes or re-record a selection (maybe multiple times in a row and later choose the best option). Also I'd like to see what I'm hearing that means the time-line should be displayed in sync with the notes being played (and be adjustable).
I like 3Dmix globally, you can do more with it then you might think (like realtime pitchshifting and timestretching!) witch is a bad thing because it's somewhat hidden, but it's also very smooth in dragging wave-files to the right spot. It draws waveforms also very fast. The zoom slider is excellent but I'd need start stop pause rewind controls (space for start / stop) (kill the the fiscking looping). (VST) sfx plugin support would also be great together with 'freezing' tracks. 'Everything' should be recordable and later editable, the 3D-mixing is what I'm thinking of. Would be nice if it would listen to midi controllers and smoothing those 127 steps (or use 14bit). Selection(!), be able to resize that 'global' selection (SampleStudio versus Coldcut) and have local selections for sfx/testing but that's maybe overkill.
Nutela reachable at:
nutela replacethisat women-at-work.org
|
Cyan (stranger
)
04/11/06 10:18 PM
|
|
In reply to:
I like the 'combine-the-small-apps' idea more if I compare the preferences apps R5 versus Zeta. A good idea would be a more user friendly Cortex with some basic building blocks available right from the start (can be 3rd party).
I've got two main concerns with the small apps idea. The first is that it leads to lots of windows open, and multi-window interfaces, beyond a certain point, are really bad. Cubase being one of the worst offenders there.
The second is that it may be difficult to start up and shut down everything. It's okay in a real hardware studio, because cables stay put. But with software, you'd have to completely re-wire your virtual studio each time you start your machine.
The latter problem might be fixable by having the applications auto-connect each time you start them, though clearly the fewer applications involved, the better. A separate mixer and hard disk recorder app might be okay, but a separate app for each effect plugin, etc., would be far too messy.
One thing I did wonder about is whether it's possible to replace BeOS's Media Kit Mixer. At the moment, it's awful -- no calibration markings, and only volume and mute for each channel strip.What if each channel strip in the Media Kit Mixer were to have EQ, aux sends, and group assignments, along with 8 busses like its hardware namesake? Using that, and either an external app to act as an effects unit (or slots in the mixer for effect plugins), it'd be possible to do a mixdown from several audio sources using just the Media Kit Mixer.In this case, the multitrack recording application would output several "channels" of audio, which appear in the Media Kit Mixer in the normal manner. Naturally the mix settings could be saved to disk, and maybe basic MIDI control could be added.Since it'd be part of the Media subsystem, the mix window wouldn't need to stay open; if you change the pan position in the mixer and close it, you still hear the panned audio even with the mixer window closed.
Whether this is possible, I've no idea. I'm not sure if it's possible to replace the Media Kit Mixer like that. It'd certainly be possible to supplement it with a similar application, but then applications that didn't know about it (e.g., SqueekySynth 1.1, Soundplay, etc.) would still connect themselves to the normal Media Kit Mixer.
In reply to:
make it visually easy to adjust notes or re-record a selection (maybe multiple times in a row and later choose the best option).
Adjusting notes will probably work in the same way as most other sequencers, using a grid editor / piano roll, unless you had a better suggestion in mind?
Recording multiple takes is a difficult one to get right. If the transport is in loop mode, and you're recording, I suppose it's possible to make it automatically advance to the next free track on the second pass. On the other hand, it wouldn't take more than a couple of seconds to stop recording, manually move to the next track, and start again, so it's not much of a gain.
The transport will be controllable via MIDI, so you can start/stop recording while sitting at the keyboard, rather than the computer. You may also be able to select which track is currently "active" by sending MIDI messages. For instance, if I knew I wanted to record four different takes of a piano part, I could make four tracks and assign them to piano, select the first track, and record it. Then, I could stop recording, move to the next track, and start recording again, simply by using the assignable controllers on the master keyboard (or the top octave's keys, etc.).
In reply to:
Also I'd like to see what I'm hearing that means the time-line should be displayed in sync with the notes being played (and be adjustable).
I'm not completely sure what you mean here, but the current transport position will be displayed clearly on the screen, as some kind of line, on both the grid editor and the arrangement windows.While playing back, you'll see the line sweep across the screen. You'll be able to pick the line up with the mouse and move it, to change the transport position. When it hits the edge of the screen, the editor window will flip to the next page, unless you've turned "follow mode" off. The pages might overlap a bit, to ensure you never get lost when it flips.
In reply to:
I like 3Dmix globally, you can do more with it then you might think (like realtime pitchshifting and timestretching!) witch is a bad thing because it's somewhat hidden,
3DMix can do pitch shifting and time stretching? I hadn't found this feature before, and even now you mention it, I still can't find it.
That, along with the lack of transport controls in 3DMix, really illustrates what I meant about existing applications not being "well-rounded". 3DMix gives you a really fancy 3D mixer, phase-adjusted panning, timestretch and pitch shift, but it doesn't even have proper transport controls and (as far as I know) can't record. Almost the perfect example of how feature creep can kill an application before it can do anything useful!
I don't want the same thing to happen with the applications I'm developing, so I'm strictly against feature creep. The idea is to match the basic functionality that standard audio hardware and software (on other platforms) provides, rather than to break any new ground (though that would be nice if it doesn't come at any price in terms of development time).
In reply to:
'Everything' should be recordable and later editable, the 3D-mixing is what I'm thinking of. Would be nice if it would listen to midi controllers and smoothing those 127 steps (or use 14bit).
What do you mean by 3D Mixing here? Do you mean the visual representation of channels as columns on a rotatable 3D grid, or shifting the phase of the channels when you pan an audio source?
The 3DMix application does both of these. The former is a novel idea, and done properly it might be quite a good way to mix, especially if you can visualize whether any frequencies are clashing, to help with EQing. However, it is a bit of a novelty in that it isn't actually necessary to produce a good mix.
I'm not too impressed with the latter though; on a reasonable pair of monitors it sounds rubbish. Perhaps done properly it would be quite good, but I'm not convinced. A panpot might not produce a very accurate stereo image, but at least it doesn't produce any weird phase distortions.
|
nutela (stranger
)
04/12/06 06:25 AM
|
Re: New MIDI Sequencer for BeOS
[re: Cyan] |
| |
"multi-window interfaces" Plugins is a better idea I agree.
"auto-connect " That would be awesome, with one click opening the whole studio. You can launch the apps with a click and by this launch Cortex last which will the auto-connect all apps.
I like the idea about the mixer replacement. You could make a button "advanced" which could switch the mixer to an avanced mode.
"Recording multiple takes " Maybe it would be handy to have a feature similar to this; you select a region you want to re-record, the seq. will record but not overwrite your input but save it in seperate ... (tracks whatever) so you can choose wich take you like best by means of a switch.
"displayed in sync " With that I mean that the line showing the current notes being played should be accurate and to accomplish this you should be able to adjust the display of notes being played to avoid a difference between what notes you see being played and heard by your midi gear (caused eg. by latency of that gear).
Transport controllable by MIDI is an excelent feature but standard logic like play/stop by pressing space etc. is also very wise. what I don't like is 'page-flipping' Sequiter does it too, I think it's better to have a fixed line and the notes and grid moving underneath it.
3Dmix; hold down, shift/alt/ctrl/windows key and drag with the mouse
"phase-adjusted panning" What is that? I don't recall hearing any stuff I didn't kike and I use Genelec 1029A monitors.
By 3D Mixing I mean the actual 3D displaying of the channels, could be used for surround IMO as well.
Nutela reachable at:
nutela replacethisat women-at-work.org
|
Cyan (stranger
)
04/12/06 04:49 PM
|
|
> I like the idea about the mixer replacement. You could make a button "advanced" > which could switch the mixer to an avanced mode.
I'm not sure yet how possible this is, but I'm looking into it. It's obviously possible to make the mixer a separate app, but that wouldn't be as elegant as replacing the media kit mixer.
If the mixer was reasonably flexible (e.g., multiple busses, aux sends, and direct outs on each buss), would there be any need for a Cortex-like app? Seems like it'd be easier to do all the routing on the mixer, with just a few mouse clicks, rather than pulling virtual wires all over the place. Of course, the existing Cortex would still work. I'll see if I can make the mixer and multitracker reasonably friendly towards being disconnected at random -- some existing applications tend to lock up and crash when you do that in Cortex.
> "Recording multiple takes " Maybe it would be handy to have a feature similar to this; > you select a region you want to re-record, the seq. will record but not overwrite your > input but save it in seperate ... (tracks whatever) so you can choose wich take you like > best by means of a switch.
I see. Using sequencers like Cakewalk, I tend to use lots of tracks for this purpose. Since Cakewalk is entirely keyboard-navigable, I can record multiple takes by muting all the tracks I want to record, hitting R to start recording, then when I've finished a take I hit space, down, and R again, then play the next take. It'd be even more fluid if it supported MIDI control of the transport, but sadly Cakewalk 3.0 doesn't. If the sequencer was at least this fluid in terms of the workflow, would there be any need for automated multiple-take features at all? I'm mainly thinking in terms of reducing feature creep here, but if it's still a desirable feature, I could implement it.
> "displayed in sync " With that I mean that the line showing the current notes being > played should be accurate and to accomplish this you should be able to adjust the > display of notes being played to avoid a difference between what notes you see > being played and heard by your midi gear (caused eg. by latency of that gear).
Displaying the line in sync shouldn't be any problem; this isn't windows after all! Given that it's only a single column of pixels, I'll be updating the line at the same refreshrate as the monitor and vsynced, so it'll hopefully move very smoothly. I might try and highlightthe notes in some way when the line intersects them.
As for latency, I'm not really sure if that's a problem. Real hardware is extremely responsive; even slow gear like the JV-1080 is still quite quick -- within 2 milliseconds or better, so invisible to the eye. Software synths under BeOS are also fairly responsive; even with poor soundcard drivers and badly designed synths, I've never seen worse than 20 milliseconds, and with good ones it's usually closer to 5 - 10ms. That's still less than a single video frame, so again, invisible to the eye.
There will probably be a time +/- parameter for each track, to allow sliding of the track ahead or behind in time. This could be used to compensate for latency, though it's most useful for producing echo effects, and making sure pad chords trigger slightly ahead of each beat to avoid bogging down slow MIDI gear.
> Transport controllable by MIDI is an excelent feature but standard logic like play/stop > by pressing space etc. is also very wise. what I don't like is 'page-flipping' Sequiter does it > too, I think it's better to have a fixed line and the notes and grid moving underneath it.
I did consider this, but there are two problems: 1) It gives the user the false impression that the visible range is somehow tied to the transport (which isn't the case; the sequencer can quite happily be playing bar 100 while they're editing bars 2 - 10), and the big reason 2) Smooth scrolling means updating the screen 50 - 100 times per second. Invoking the blitter chip sometimes causes slight timing delays (a millisecond or two), so doing this frequently might upset MIDI timing, or even cause audio stuttering. It might be available as an option; I'll have to look at the issue a bit more to see if it's possible to take any shortcuts; e.g., just drawing the edges of the notes as they move, rather than redrawing the entire note in its new position. Perhaps the timing problems can be addressed in the video drivers; I may have to whine to Rudolf about it!
> 3Dmix; hold down, shift/alt/ctrl/windows key and drag with the mouse
Well, that feature's not available to me then -- I don't have a windows keyboard!
> "phase-adjusted panning" What is that? I don't recall hearing any stuff I didn't kike > and I use Genelec 1029A monitors.
It tries to simulate what happens when you've got two mics arranged as a stereo pair. A sound source in the centre arrives at both mics at the same time, but a sound source on the left arrives at the left mic slightly ahead of the right mic (the delay depends on how far away they're spaced; usually not very far). The delays are in the millisecond range, which means that phasing problems can result if the two channels were ever combined. Fine on headphones (no L-R leakage), marginal on monitors (the right ear can hear the left monitor slightly, and vice-versa), and terrible if it's ever played on a mono system. I imagine this reason is why mixers still use simple pan pots (simply attenuating the left or right channel) for stereo positioning rather than fancy phase adjustment.
> By 3D Mixing I mean the actual 3D displaying of the channels, could be used for surround IMO as well.
That might be a lot of work to get going, though if it was instead of a traditional mixer rather than supplementing it, it might be possible. Would 3D mixing be preferable to slider-based mixing? In some ways I think that an approach like this might be better than trying to exactly mimmick a hardware mixer, although the latter has its merits in terms of proven usability and features.
I really hate the current "virtual studio" fashion where every piece of software is designed to look exactly like its hardware counterpart, down to photo-realism. That leads to a usability nightmare. Even a small physical rack unit is larger than the biggest computer monitor, and most hardware controls (knobs, etc.) were never designed to be manipulated with a mouse. This is more of a problem with things like synths and effects units than mixers, but there's even a problem with mixers sometimes; compare the Pro Tools mixer (not *too* cluttered though not great) with the Cubase mixer (I can't express how I feel about that one, for fear of breaking the keyboard).
If something like 3D mixing were implemented instead of slider-based mixing, it probably wouldn't need to be true 3D. Everything 3DMix does can be represented on a 2D top-down view, and probably easier to use too. Less impressive to look at maybe, but this isn't the demoscene. =P
|
nutela (stranger
)
04/13/06 06:41 AM
|
Re: New MIDI Sequencer for BeOS
[re: Cyan] |
| |
"would there be any need for a Cortex-like app?"
Yes I think if you want to use mediasplitter or recording. BTW I need to record XRS but Soundrecorder won't work, any other rec tool you know of which could work with Cortex?
I think the way you describe Cakewalk that indeed it would satisfy even me ; )
"There will probably be a time +/- parameter for each track, to allow sliding of the track ahead or behind in time. This could be used to compensate for latency, though it's most useful for producing echo effects, and making sure pad chords trigger slightly ahead of each beat to avoid bogging down slow MIDI gear."
That sounds very good.
About Smooth scrolling; I didn't know about the timing issues with the vid drivers, hmm I guess multitasking isn't so good as it seems or is it more a HW issue?
Well if it's better to have the page flipping at least I'd like to not get confused by it : )
About the phasing, who listens to mono anyway? Well I dunno but I like how 3Dmix sounds, very spacey : )
"I can't express how I feel about that one, for fear of breaking the keyboard" I see you're a hothead like me ; ) nah I'd rather call it passionate : ))
Well for the mixing visualisation part, I think with the 3d style mixer you can see track bars very well, so I'd suggest using lots of colours, the text is not so readable but for surround it would be excellent, especially live performance and if you could tweak the view to reflect the actual room... oh my But back to business, I think if you get lot's of tracks it might be cluttered + how the heck will you idsplay stereo tracks? Connected by some line I guess.Well what I find incredible is the smoothness in the audio when you drag the bars in the 3d mixer, that's really well done.
Nutela reachable at:
nutela replacethisat women-at-work.org
|
|