midiBrain 0.9.2

I have finished testing my program midiBrain. Its a PC application. After I played with it on some gigs and it was very cool to use  I decided to release it for free.  Click on the link right hand to get it. The manual is included. I’m very interested how it runs on your system and how you use it so please leave a comment. Enjoy!

About these ads

40 Responses to “midiBrain 0.9.2”

  1. Very good,

    great job this one is really stable.

    I love how you included the query file for keyboard/midi control so users can customize the midi channel and prog #, awesome.

    I only wish there was a little better visual representation for all three loopers, how many bars they each are if they differ in length where their starting points intersect.

    A great start!

    • thanks! I’m very curious to get feedback! Good to hear that it’s stable working for you.

      I only wish there was a little better visual representation for all three loopers

      there is just one single looper unit but 3 midi in ports to feed it. This was built in order to set up to 3 different sources to record loops from like f.i. a midi-keyboard, and 2 more remote controls like the bcr2000 or any other midi devices. In the manual these ports are introduced on page 2 pic.1 ‘1.midi in’. The events coming from these ports are recorded in one single unit. The idea is just to have a few essentiel controlls to manage loops on all channels from different devices in live performances. To keep it simple for performance I thought its much easier to sepperate instruments/midi devices by channel as each one can hold the full range of events for a device instead of managing sepperate looping devices. the trade off is f.i. that no different loop lengths can be recorded at the same time. I’m considering more like a kind of preset system, where one can store some takes. This could be helpfull to recall certain settings in effectunits, synths etc. and other recordings. In the current state one has to record the looped data elswhere in a sequencer for using the recordings in production. But if you have an idea how to implement more looper-units while one is still capable of switching back and forth in live performance situations i’m all ears! Like you wrote, its a start.

      how many bars they each are if they differ in length where their starting points intersect

      The length for all further recordings is set by the first one (between REC and PLY, see manual page 2, 7.1). the recordrd number of bars can be calculated. In the unit, you can see the display ‘recorded beat’ or ‘playback beat’ incrementing (depending on the current mode (REC od PLY). Thus the amount of recorded bars = recorded beats / signature numerator. If you take a 7/8 signature and you recorded 14 beats you have 2 bars. If you have a 4/4 and recorded 12 beats you have 3 bars. due to the way midiBrain works right now you can’t record less than a measure as all mode-transitions (REC-PLY-OVR) are quantized on the first beat of a bar. The start point is determined by the first time you hit record and the first beat of the current measure comes in (Note that I put in a little buffer to avoid that played note-ons are ignored, if they are not exactly on the first beat and just the note-off is recorded- this is just for the first take (REC-mode)). The end-point is set by advancing the first time to PLY-mode. The resulting length is valid for all further recordings until the loop has been erased (pressing 2*undo).

      Hope I could help you with the explanations!

      • Yes that was very helpful, I noticed from the video that this stores sweeps and CC data, that put’s it a bit above a few other Max Midi loopers out there, IMHO.
        I’m actually leery of giving you any suggestions for the simple reason that often these things get more and more bogged down the more add on’s there are, I’ve watched a few go from rock solid to Freeze ups.
        that being said, there are a few things that would improve user interaction I will mention.
        I have a hard time getting the recording to stop and start at the appropriate amount of measures. The main reason I have found is there is no “count in” on the metronome I usually like to start with a 1.2.3.4> begin first note. Same with the ending, my last note will be on 32 beats but it keeps recording till I manually press STOP which usually goes to about 34 which throws the whole loop off sync. It would also be nice for the metronome to have it’s own dedicated routing port so users can send it out to their hardware synths. If one could set the bar increments that would be ideal, along with allowing a count-in that would solve at least the problem I am having cueing this bad boy in.
        Don’t get me wrong I like the intuitive nature of the algorithm, it’s just it’s just not behaving in a manner I can control it effectively, granted a good deal of that can be user error as I am just getting my ear wet in the manual.

        In the current state one has to record the looped data elswhere in a sequencer for using the recordings in production. But if you have an idea how to implement more looper-units while one is still capable of switching back and forth in live performance situations i’m all ears! Like you wrote, its a start.

        my gut instinct on this one is KEEP IT SIMPLE!!!!
        as I stated before these things have a tendency to evolve beyond their usefulness.

        One other thing I do notice it has over the few MAX based loopers I have used is it’s ability to record multiple channels into the same loop, others (Like Zyklus Improvisor) have set up objects for 8 individual loops on their own single channels only forcing you to pong back and forth (via keystroke or CC) from track to track, by allowing overdub, you essentially can record 16 different instruments on their own channels in theory…(I haven’t tried it yet) forgoing the need to have separate loop terminals for each “tracks” input/output, SWEET :)

        Honestly this is exactly what I was looking for, if it had a count-in and a way to force bar increments and/or store and recall scenes (eg. 6/4,32 bars) along with different routing set ups it would be perfect.
        It literally runs without a DAW, (with just Midi OX/Yoke and hardware) which is great if you are running on tablets or other portable devices with limited resources.

        Those are my suggestions, if you are looking for an object to store a scenes multiple parameters for later recall check the MOL for vj.filepather.

        http://www.vjmanzo.com/clients/vincemanzo/modal_change/

        PS, I am having sooooo much fun with this this morning…I am currently trying to store sweeps and volume ramps for funky base lines….will let you know how it turns out.

        keep shinin

        jerm :)

      • I am having sooooo much fun with this this morning…I am currently trying to store sweeps and volume ramps for funky base lines

        Yeah man! Good to hear – that’s what it’s built for! Let me know If you recorded somthing and/or uploaded a mix somewhere.
        Very helpfull comment and some of your points are already in my TODO list :-)

        I noticed from the video that this stores sweeps and CC data

        Yes! that was my main motivation, I wanted to stack loops of CC events, like triggering filter-sweeps, to quickly get the music “alive”. Afterwards I noticed that pitch related midi is also nice to have and one thing came to another.

        I’m actually leery of giving you any suggestions for the simple reason that often these things get more and more bogged down the more add on’s there are.

        I understand what you mean but suggestions are always welcome anyway! it’s getting us closer to make electronic music more intuitive to play with (at least for my understanding). There are already a lot of full blown sequencers out there which cover detailed midi editing, but some of them lack of intuition in favor of complexity or they need to be supplemented because of some native restriction (e.g. Ableton Live’s internal midi) with kinds of work-around apps.

        I have a hard time getting the recording to stop and start at the appropriate amount of measures. The main reason I have found is there is no “count in” on the metronome I usually like to start with a 1.2.3.4> begin first note. Same with the ending, my last note will be on 32 beats but it keeps recording till I manually press STOP which usually goes to about 34 which throws the whole loop off sync

        First of all, you’re right there’s no real adjustable count in – I understand you mean an optional count-in where on can set e.g. 2 bars before recording starts? Like a field in the userSettings-File or a GUI field? Right now you have a unchangable count-in with the max. beat-length equals signature numerator.. I’ll explain and hpefully this will help out. For the further description I use RECPLYOVR for the left-most button in on the looper-unit. Initial state is OFF. this button changes its state always to the next ‘1’ of the respective bar. All states of the RECPLYOVR-button ‘wait’ for the ‘1’ of the metronome to come in. My excuses for the following rather longer description also regarding the STOP-button:
        F.i. You have recorded a loop and pressed STOP- everything stops immediatly (unlike the RECPLYOVR which waits for the ‘1’) and the multibutton RECPLYOVR resets to OFF. If you press the button again (at this point labeled with OFF) the loops starts a the upcoming first ‘1’ of the metronome. Lets say the metronom counts in a ‘2’ in a 4/4 signature when you hit the RECPLYOVR-button (in order to run the loop again – changing its state from OFF to ‘PLY’) the ‘3’ and ‘4’ will be ignored an the whole sequence starts on the next ‘1’. While the first recording of the loop the STOP-button should be unavailable – thanks for the hint- because its ‘confuses’ the recorded beat count – I suggest until the next update not to use the STOP-button for ending the first recording – use the RECPLYOVR-button instead (the transition between REC to PLAY determines the loop length). STOP works like expected if the first loop has been recorded and the mode changed to PLY. In respect of the RECPLYOVR I implemented the “wait-for-the next-1″ because of 2 reasons: get exact cut loop chunks and I thought this can buy some time – take this scenario, which explains hopefully why the recording/playback doesn’t work for you as expected : if you want to record a 4 bar loop with 4/4 Sig. you’ll need to record 16 beats. While the recording ‘enters’ the last bar – recorded beat 13 is the ‘1’ of bar 4 – until the ‘recorded beat’-display counts 16 you have time to push RECPLYOVR to change to PLY-mode. Once pressed its getting active on the next ‘1’ of the metronome. The amount of recorded beats will be 16 and the current mode changes to PLY. The ‘playback beat’-count starts together with the ‘1’ of the metronome. If you would have tried to get the loop’s end exactly on point and missed the ‘1’, even just some milisecs, the recording would advance to ‘recorded beat’ 20 until the transition from REC to PLAY comes in. Alltogether: it’s not a bug – it’s a feature ;-), end the REC or OVR somewhere in the last bar (with the RECOVRPLY-button), hit it at anytime between recorded beat 13 to 16 in the above example, be confident that the transition between REC and PLAY will be on point while you finish your midi recording careless (at least that’s the idea behind it..). I noticed, when I saw other musicians using it they tend to get the end of recording exactly and were confused why it recorded more beats. Just push RECPLYOVR in the last bar of your recording (this is also true for further transitions between PLY->OVR->PLY..). I hope this explains what you experienced?

        if it had a count-in and a way to force bar increments and/or store and recall scenes (eg. 6/4,32 bars) along with different routing set ups it would be perfect.

        true. Especially if one has recorded a long loop the bar increments could be great. I’m thinking how this could be best implemented.. it could be absolute like there’s an menu where one can associate a user-key with a start beat-number or relative like dividing the total loop length in fractions and one could start the loop f.i. in the 2nd half – no matter how long the recording is – smthng like it’s length is always devided by 4 (8, 16..) and one has 4 “jump”-points. What’s also true is that the metronome needs a seperate output optional.
        One thing missing that I’m aware of is that the quantization of the transition of RECPLYOVR should be configurable (currently it’s always 1 bar quant.) like 1 Bar, 2nd, 4th, 8th and no quantization at all. I’m busy until next week but I’ll try to implement the metronom output, better STOP-button behaviour and routing-presets firsthand. I have to ponder on further functionality. Thanks for the URL I’ll have a look at it. For storing scenes I’d say serialze to JSON with respective refrences like to the midi-file and other setting keys – but I’ll check the link. BTW which kind of midi controller are you using? right now I’m not sure how implement visual feedback of the looper-states. For one unit it shouldn’t take more than 3 pads on a controller. Maybe different blinking intervals to visualize the states utilizing just one pad?

        Thanks again, this is really helpfull and have fun with more basslines :-)!

        david

  2. I noticed, when I saw other musicians using it they tend to get the end of recording exactly and were confused why it recorded more beats. Just push RECPLYOVR in the last bar of your recording (this is also true for further transitions between PLY->OVR->PLY..). I hope this explains what you experienced?

    Yes it has, it’s going to take me a while to get used to how and when to que things in, the STOP button certainly has thrown me for a loop but based on your further explanation I understand they why.

    true. Especially if one has recorded a long loop the bar increments could be great. I’m thinking how this could be best implemented.. it could be absolute like there’s an menu where one can associate a user-key with a start beat-number or relative like dividing the total loop length in fractions and one could start the loop f.i. in the 2nd half – no matter how long the recording is – smthng like it’s length is always devided by 4 (8, 16..) and one has 4 “jump”-points. What’s also true is that the metronome needs a seperate output optional.

    well a tab to either use a fix length (1-144 bars) or manual (when you press a trigger/keystroke/CC) would be helpful. This would allow users to either select an amount of bars/measures or use the “feature” that does it intuitively when the proper command is pressed.
    The count in could be set up with the metronome, which would in a sense be separate from the looping end it could give you a number field 1-12 that would count before the looper engages any playback or recording.

    I’m busy until next week but I’ll try to implement the metronom output, better STOP-button behaviour and routing-presets firsthand. I have to ponder on further functionality

    Cool, I am having a lot of fun but I am unable to save any of it at this point. I did try and record some of it to share with you (both Midi and Audio) but was unable to, when I opened up a DAW (Protracks) MidiBrain started acting real funny and playing everything at half speed (the setting was on Master Midi clock) I’m going to try again with Reaper or another, I don’t know if I am supposed to switch that to Rewire or what, when I did switch things got weird and I lost data (at least it was no longer coming out during play)…those notes are lost forever….
    My thoughts are if there was a midi export function I would not need to involve a DAW.
    To answer your question about controllers I use a Phat Boy, JL Cooper Fadermaster and and Axiom 25, also use a Rolls Midi Buddy and a GNX4 for program changes and synth settings.
    You mentioned something ^^^ up there about pitch, so far I have not been able to get the looper to record pitch events….still working on ramps too….I was having so much fun just making grooves yesterday I never got around to trying sweeps/ramps but that will be the mainstay of this once I master the looping aspects.

    THanks again for taking the time to make something useful in my life

    jerm :)

    • I don’t know if I am supposed to switch that to Rewire or what, when I did switch things got weird and I lost data (at least it was no longer coming out during play)…those notes are lost forever…

      Oh no! I’m very sorry! Its my fault I’m still learning how to make things clear like manual descriptions etc. – probably its my terminology? Obviously english is not my mother tongue and lost notes are always sad! In the following I summerize how my workflow with the SW is and how you can record the loops with no worries in a DAW.
      Thx for your patience!

      I did try and record some of it to share with you (both Midi and Audio) but was unable to, when I opened up a DAW (Protracks) MidiBrain started acting real funny and playing everything at half speed (the setting was on Master Midi clock)

      O.k. I see. I understand that you have used midiBrain as midiclock master for recording and afterwards you switched to a DAW for recording midi. The following works for me:
      (1) After finishing recording the loops in midiBrain standalone push STOP in midiBrain (don’t need to, just to avoid something’s triggered which shouldn’t be at this moment)
      (2) Open the DAW. If needed set it up as ReWire Host (some of them are configured by default like Ableton Live).
      (3) Adjust the DAW’s transport (signature and tempo, e.g. 120 BPM 4/4) according to the prior midiBrain transport-settings.
      (4) In midiBrain click on the ‘setup’-tab – click on the button ‘audio settings’. In the popping up DSP-Status window select as driver ‘ad_rewire’. turn it on. Switch to
      the ‘looper’-tab and choose under the dropdown-box ‘sync mode’ the option ‘slave:rewire’
      (5) Back in the DAW hit play. If it was already running you’ll need to stop it and start it again.
      (6) midiBrain’s RECPLYOVR-Button is in state OFF. It’s transport monitor should reflect the DAW’s transport settings and the metronome counts up.
      push RECPLYOVR to set midiBrain to PLAY-mode to play back the prior recordings (if there’s something recorded in the looper it changes from OFF to PLAY .. if not it starts with REC for recording the first take) and as always the playback starts with the next ‘1’ of the metronome.

      Not to elaborate the obvious – just for the sake of completeness:
      You need a virtual midi port (midiYoke etc.) to forward the events from midiBrain to the DAW. In most cases its best to choose in midiBrains ‘setup’-tab for ‘midi out’ looper and direct out the same virtual midi outport, e.g. ‘Out To MIDI Yoke: 1′ for both looper and direct out.In the DAW you have to receive from this port. Enter the midi-settings and activate the corresponding midi in port, like ‘In From MIDI Yoke: 1′ – don’t activate the out-port, if its activated uncheck it (unless you want to have some creative midi feedback :-) at least it could happen accidentely ).
      Here’s what I’d do for recording:
      In the DAW create as many tracks as different midi channels have recorded on in midiBrain. E.g. If you have recorded a loop on channel 1 to 3 I’d create 3 different miditracks in the DAW. For the DAW’s midi track’s input selection choose as port for all 3 tracks: ‘In From MIDI Yoke: 1′ and for DAW’s midi track 1 select channel 1, track 2 channel 2 up to midi track 3 -> channel 3. Now you are ready to go and you can record the loops seperated by channel. Note that if you stopped the DAW’s transport midiBrain is set to OFF. you’ll have to push RECPLYOVR again and you are at step (5) and (6). The amount of 3 tracks is just for this example, of course you can use up to 16.
      Here’s what I’d do for recording/working with a DAW:
      Before recording something start with the above steps including the setup of the midi chain like:
      midi-device -> midiBrain, midiBrain -> DAW, DAW’s respective channel’s midi-out-port to external devices or its a virtual instrument (VSTi) and no midi is forwarded to an outport of the DAW’s track.
      Now the DAW is ready to record instantly and you can use the DAW as midi router as well. If you take one of the receiving midi tracks in the DAW, you can use this tracks out-port selection to a physival port, one of your midi interface to trigger external midi HW or place a virtual instrument in the track like a VSTi. With midiBrain’s ‘choose channel’ (must be turned on = orange) ‘inc’ ‘dec’ can select on which channel the events are recorded on AND directly forwarded to – thus selecting the respective track in the DAW. By default, this is valid for all BUT CC events. If you want to shift the CC by channel also, a flag in the midiBrainUserKeys.txt-file has to be altered. The flag is by default:
      IS_CHANNEL_SELECTION_JUST_NOTES true
      and you would have to change it to:
      IS_CHANNEL_SELECTION_JUST_NOTES false
      If it stays ‘true’ than the actual channel of the CC defined by your midi controller’s OS or editing software stays unaltered. Set it to ‘false’ if you want to shift the channel with ‘choose channel’s INC / DEC ( you could trigger 16*1 parameter with one encoder on a per channel basis if set to false, but can get confusing quickly). That’s just for control changes. If you want to disable the channel selection for all midi events in midiBRain you’d have to click on the orange ‘choose channel’ in order to change to ‘take channel as is’ – in this case midiBrain records and forwards all events on their original midi channel.
      Regarding PC a comfy effect is that one can send program changes per channel and you can switch easily between programs in VSTi’S, HW-Synths effect units so further – this comes in handy in live performances. In midiBrain a program change for the current selected channel can be altered with the INC / DEC buttons below the graph. Note that if you have mapped midi to DAW-functions which support automation recording, like a channel fader or an AUX-send, these can be looped as well (AUX-sends are very cool in my opinion – you can see them looped it in the performance tutorial video) and will be recorded in form of automation envelopes within the DAW’s timeline in most cases if you hit record (the actual midi is filtered out by most DAWs and the curves are recorded instead). BTW In this scenario it’s very easy to get visual feedback on your controllers, too. If this is not clear, let me know and I’ll explain it – it’s neat to see the encoder lights dancing ;-)

      You mentioned something ^^^ up there about pitch, so far I have not been able to get the looper to record pitch events

      note on & off pitches and pitchbend can be looped, at least in my tests it worked very well. If you want to control the actual tuning of a synth I suggest to find out in it’s midi-specs on which CC ‘tune’ and ‘fine tune’ is receiving. Then you have to setup your midi-controller, which is selected as on of the looper sources accordingly. But if the parameters expecting a different encoding like. f.i. pitchbend, I’m afraid that I won’t work right now. One workaround would be to spread the pitchbend range in the instrument as needed (1 octave, 2 octaves..) and use the pitchbend parameter as it’s supported. However, you can loop note ons like playing and looping chords, solos etc..
      setting up a midi keyboard for looping
      (1) In midiBrain under tab ‘setup’ choose a device which sends notes (keyboard, most pad-controllers) and make sure that the small green light is blinking if you hit a key.
      (2) Follow the steps under Not to elaborate the obvious – just for the sake of completeness: regarding the midi out configuration in case of running it with a DAW.
      (2 b) If you run it standalone you’ll have to select for mid iout (looper- and direct out) the port of your interface connetced to the midi-in of the devices which produces the sound. If its a kind of ePiano -> the device you are playing notes on is the one for producing the sound at the same time, you’ll have to switch the device’s parameter to LOCAL OFF to avoid side effects like doubling notes etc.). You’d feed the midi via interface to midiBrain and give it straight back via interface to the ePiano (if there’s no DAW involved).
      (3) Now you can rec & loop the notes from the midi device.

      My thoughts are if there was a midi export function I would not need to involve a DAW.

      I’ll implement it! Right now I have to prepare a gig on saturday and get some mixes done afterwards – but this is easy to put in. In the meantime I hope the above suggestions help out.
      Oh man, I got to work on keeping my comments shorter – but I don’t want to be unclear so I end up with this. It’s awesome that you give me detailed feedback so I can improve my description and collect ideas for the next update. I’ll need to take some time and wrap up points in a kind of FAQ-thread.

      THanks again for taking the time to make something useful in my life

      You’re perfectly welcome! It’s great to know that it inspires you to make music with it! In case you experience some other problems or the old ones persist I think it’s better if you write down your midi setup/routing e.g. what device is sending to which interface’s in-port and vice versa, including the virtual midi ports in midiBrain, DAW and so on in detail (screenshots and/or textual descriptions both fine). I will have a deeper look at it in order to find out if it’s a bug or more like a feature :-).

      greetings

      david

  3. HEy thanx for all the info,

    I was messing around with it again this morning, I am able to get Protracks to record the different tracks individually, whatever happened yesterday did not re-occur, my PC might just have needed a nap/restart.
    I’m starting to work out some routing, I needed to set up another dedicated midi output because the DAW and MidiBrain don’t want to use the same one. (I have a setting for MIdiBRain that blocks incoming data from specific channels during recording to avoid the Midi Feedback, that seems to be working provided the keystrokes and Midi CC’s I am using in Domes Translator fire off upon recall, and then another setting for sharing data between MidiBrain and DAW.
    That being said a “thru” button for output of the looper would be helpful, this way users could specify whether or not they want to incoming data to go thru to the output or not, for me it’s better if it doesn’t since I am using mostly external hardware but for someone using more software orientated synths and VST’s I could see that option being wanted.

    note on & off pitches and pitchbend can be looped, at least in my tests it worked very well.

    I’ll have a go at it again on my end, maybe they are being filtered out by Midi OX or the MX-8 I use for external routing.
    eg. I play a note on my AXiom 25 using the pitch bend slider, the note comes out of the hardware synth as bent upward, however when I record it to the looper it plays back as a normal note, Midi OX display confirms the Pitch bend signals are reaching the input port (in this case Motu Fastrack A) and outputing to Yoke 1 which MidiBrain receives they just aren’t coming back out of the recorded data.

    Have fun at you gig, I can’t wait for the update, those few things will make this much more effective for my set particular set up.

    jerm :)

    • Sorry, I was occupied with music and recovering after the gig;)

      I needed to set up another dedicated midi output because the DAW and MidiBrain don’t want to use the same one

      Mhh.. I’m not sure what you want to achieve by using the same output that’s why I’m probably wrong with the following:
      In midiBrain the ports which are actually active are defined in the MAX-menu under File -> MIDI setup. First of all there should be only
      the used ports activated (in order to avoid, that they are blocked in other applications). That’s in my experience most likely to cause trouble.
      I would use for each SW different virtual ports for forwarding. F.i.
      (1) The Axiom is connected by its USB-driver/port to midiOx.
      (2) MidiOx forwards the filtered midi to midiBrain on ‘Out to MIDI Yoke: 1′.
      (3) midiBrain has to be setup to receive on ‘In From MIDI Yoke: 1′ by selecting this port as looper source.
      (4) For midiBrains ‘direct out’ and ‘looper’-out choose a different virtual port, e.g. ‘Out to MIDI Yoke: 2′
      (5) In the Sequencer you select as in-port ‘In From MIDI Yoke: 2′ accordingly.
      (6) Like written at the beginning: disable the unused ports in midiBrain by clicking on ‘File’-> MIDI Setup. Depending on the order the programs start its ambiguous which port could be blocked, that’s why I suggest configuring the midiBrain ports once first (your settings will be recalled on next program start) – close midiBrain – and then start the SWs including midiBrain in the order you need them to be. I’m not sure about the midiOx settings, but probably you have to disable unused ports as well ( and for other softwares in the virtual port chain also).
      Obvious but for completeness: If there are more SW in the chain I’d follow up with ‘Out to MIDI Yoke: 3′ and receive in the other Instance on ‘In From MIDI Yoke: 3′ so on. The last SW which is receiving on a virtual port is finally sending the events to a physical out/port of your Interface.
      I’m sure you know it, but if you need more virtual ports you can choose the available amount on the Windows ‘system panel’ -> MidiYoke.

      I play a note on my AXiom 25 using the pitch bend slider, the note comes out of the hardware synth as bent upward, however when I record it to the looper it plays back as a normal note, Midi OX display confirms the Pitch bend signals are reaching the input port (in this case Motu Fastrack A) and outputing to Yoke 1 which MidiBrain receives they just aren’t coming back out of the recorded data.

      Good to know. I’ll have a look If I have missed something. It worked for this keyboard I’m playing in the video and on a Roland Workstation of a friend. I’ll do some testing and post the results later on.

      greetings

      david

    • I answered you and Tony in a comment below. I’m not fully aware if WP is notifying you, because it was formally a reply to Tony’s post, adressed to both of you.

  4. I missed a DELETE ALL button, otherwise we have to do always DELETE CHANNEL for all 16 channels, assuming you have data in all 16 channels.

    Also inc/dec channel could be a ring, inc at 16 should switch to 1, dec at 1 should switch to 16.

    i tried recording pitchbend and cc, pitchbend were not recorded.

    Program change events were also not recorded, could be also nice, incoming program change events could set the channel-program-change.

    You can check Sequetron of Phil Tipping of a much more feature rich midi looper: http://myweb.tiscali.co.uk/philweb/philizound/freebies/software/sequetron/sequetron.html

    • I missed a DELETE ALL button, otherwise we have to do always DELETE CHANNEL for all 16 channels, assuming you have data in all 16 channels.

      To delete all channels and events have already been recorded press 2 time UNDO on the unit’s interface.
      If the first recording is running pressing one time UNDO will be enough. I thought there is no need for a dedicated button because the last remaining UNDO is the deletion of all remaining events. Note that right now there is just one UNDO-step available – always the events which have been recorded between the last OVR->PLAY cycle. You may want to have a look at the manual included in the ZIP-DL, 7.3 UNDO, as there is a thorough decription. The reason is that I didn’t want to blow up internal buffers of undo-data until user’s feedback confirm that the current implementation is stable.

      pitchbend were not recorded.

      Ok. Thanks. I will respond to it later. Got to get my keyboard out of my gig-stuff to run tests..

      Program change events were also not recorded

      Right now this is intended. The program changes are sent in respect of the curent selected channel, see manual 6. ‘Program change By Chosen Channel’.

      incoming program change events could set the channel-program-change.

      Indeed. That’s a good idea – I have to unclude another flag in the settings-File to set this behaviour.

      You can check Sequetron of Phil Tipping of a much more feature rich midi looper

      I’ll have a look. At a first glance it looks a little complex. My intention was to keep the function as simlpe as possible to easily use it in perfomances.
      Thanks for all the suggestions/feedback! Regarding the pitchbend and the PC behaviour: I’ll comment on that later on.

      • Yes, as Sequetron uses a totally new concept, treating musical notes and function commands the same, both are note sequences. It would be another wise decision to build instead something on top of Sequetron, using only all necessary functionality from Sequetron, trying to make everything directly accessible: This would mean you would set up a set of buttons/functions which would trigger each time the right command-sequences for Sequetron! Instead of pressing 3..10 notes you would only require a single event as input, exactly as your midiBrain does now. It could be midiBrain for Sequetron, similar to Max for Live. :-)

        Another related tool you might know and like: BCR Performer.

      • @Jeremy & Tony regarding pitchbend
        Ok I checked it again and here it is working. To pin down the problem would you guys mind to write down what’s displayed in midiBrain under tab’looper’,
        next to the field ‘data in’ when you move ONLY the PB wheel? The first digit is the decimal of the first byte. If you just move the wheel and the current selected channel is
        1 than the digit should display ‘224’ if its channel 2 ‘225’ and so on. If ‘choose channel’ is activated, the pitchbend events are shifted to the respective channel along with
        e.g. the noteons. If not (‘take channel as is’ is displayed in grey) than the original incoming channel of the PB is taken. Thanks!

        @Tony
        I’ll have to take a deeper look at the docs of the SW. I built my own to have a good basis, this is what I’m trying to accomplish now (with help of responses and feedback). If this is running I can think about further functionality on top of it. If I would like to implement let’s say a Markov, to guess notes beeing played in future after a certain amount of ‘training’ the algo (or what other cool stuff could be done) one has to have full access to all arrays of events to do calculations.

        Another related tool you might know and like: BCR Performer.

        Originally I programmed something like BCR Performer with 2 different looper units and some more stuff. the original BCR Performer was not not good working for me and that’s why I decided to program one of my own. midiBrain is the result of isolating the looper from my original bcr program, bcrBrain (not published yet), and improving it in a sense that it’s compatible with more usecases. BCR Performer, the version I remember, had no looper build in, no midiClock etc. It just helped out to recall states of presets which are not selected on the bcr – which was a great Ideat by B. Vaymer. In my case the updates for the encoders fed back from the target device took too much time, thats why I made one of my own (plain dynamic lists instead of jitter matrices) with some more options and the ability to be synced to a host.

  5. I see, so midiBrain should not stay only as a midi looper, instead some other stuff like Markov and friends might be added in future. Then of course the situation is different and you need as much internal information as possible.

    For looping cc, pitchbend, notes, program change and more on the other hand Sequetron just works perfectly. It just does not have that one-hit-direct-access, this you have to build yourself additionally, using tools of your choice, it could be Max, Pd or anything else.

    • Tony, FYI I uploaded a update with some improvements. I had not much time to test it, but it ran smoothly with all my tests hope it does in your case, too! See the new post about it for further details.Hope its stable.
      david

  6. Regarding the pitchbend: Ok, it works. The problem is you need to setup the midi ports also in Max itself, not only in the setup tab. Going to File >> Midi Setup, deactivating all input and output midi ports, reactivating just those I selected in the setup tab of midiBrain, did the trick. Now it recognizes nicely also pitchbend events. Thanks David for your comments and caring.

    I might still use midiBrain additionally, so far I was using a second instance of Sequetron for recording cc, pitchbend modulations, keeping the notes stuff in the first instance. So you can easily, delete, modify your modulations, without any side effects to the notes. Best of both worlds.


  7. incoming program change events could set the channel-program-change.

    Indeed. That’s a good idea – I have to unclude another flag in the settings-File to set this behaviour.

    This has the nice effect that you can have an external “program-change-snapshot-system”, which would still work nicely with your midiBrain. Of course besides program change also bank select should be supported. The most common standard of bank select at least.

    • A “program-change-snapshot-system” with the ability to store/recall snapshots and which sends all PC out to update the receiving devices alltogether would be nice. Right now you can setup one time all initial program-numbers for each channel in the settings file. The ability to record incoming PCs to setup a snapshot could make it more convenient. And yes, bank select should be implemented. I’m thinking how to put that all together including shapshots of recorded loops and a new kind of preset system to associate the different parts. Thanks!

  8. Ok I checked it again and here it is working. To pin down the problem would you guys mind to write down what’s displayed in midiBrain under tab’looper’,
    next to the field ‘data in’ when you move ONLY the PB wheel?

    going inside the max window and the file window and checking the inputs did help as far as getting the pitch data through.
    I think I may have discovered what is transpiring at least on my setup.
    If I send in a pitch bend with a note on a single channel during recording it records fine.
    However, if I am also sending it notes on other channels (with the setting “take channel as is”) the pitch data is lost.
    In my test I am sending in a beat on channel 10 that I tap out on a foot pedal, at the same time I am playing pitch bent notes on the Axiom25 on channel 7.

    THis also happens when I use a Roland GI-10 midi guitar on channel seven while I tap out a beat on channel 10 with another device, the GI-10 automatically sends all sorts of pitch bend data (part of audio to midi conversion) that is somehow not being recorded if they are accompanied by notes on another channel in the midi stream being recorded.

    this may be buffer related?

    I did have a preponderance as to the purpose of the “audio” part of this program, personally that is seen as a redundancy on my end whether I used this with a DAW or just to control external hardware synths as a stand alone no audio function is necessary, it would be nice for me to just be able to disable all of that and keep this strictly dealing with midi data once the metronome has a midi port….my 2c. :)

    (1) The Axiom is connected by its USB-driver/port to midiOx.
    (2) MidiOx forwards the filtered midi to midiBrain on ‘Out to MIDI Yoke: 1′.
    (3) midiBrain has to be setup to receive on ‘In From MIDI Yoke: 1′ by selecting this port as looper source.
    (4) For midiBrains ‘direct out’ and ‘looper’-out choose a different virtual port, e.g. ‘Out to MIDI Yoke: 2′
    (5) In the Sequencer you select as in-port ‘In From MIDI Yoke: 2′ accordingly.
    (6) Like written at the beginning: disable the unused ports in midiBrain by clicking on ‘File’-> MIDI Setup.

    thank you for the detailed explanation but my setup is a bit more complex than that.
    Data from the Axiom25 goes to a MX-8 patchbay along with other instruments (Roland GI-10 and Footar) this determines by program change recall which channels each instruments are going to be on and in what octave etc.
    The data then leaves (all merged together) into a MOTU Fastrack port A and into the computer, it goes through mIdi OX and out to Yoke 1 which the Midi BRain receives.
    From what I am noticing at least as far as recording behavior perhaps it may be better to get each instrument into their own dedicated input in MidiBrain, since each has it’s own buffer, does that sound right?

    I don’t mind setting this in between my instruments and my synth rack, in fact I think that is where it should be at least the way I am wanting to use it mostly (as a midi FX recorder/looper).
    My only problem with that is I would need the MIDI data to go THRU during recording so it can be routed out another output back to the hardware synth rack, is that a possible option/tab in the future?

    anyway…..more fun with midi this morning…tap the tempo add the sweep…..funk that dub-bass swell out.

    jerm :)

    • If I send in a pitch bend with a note on a single channel during recording it records fine.
      However, if I am also sending it notes on other channels (with the setting “take channel as is”) the pitch data is lost.
      In my test I am sending in a beat on channel 10 that I tap out on a foot pedal, at the same time I am playing pitch bent notes on the Axiom25 on channel 7.

      Ah, good to know. I will have to build up a more less comparable testing environment and let you know the results.

      Data from the Axiom25 goes to a MX-8 patchbay along with other instruments (Roland GI-10 and Footar) this determines by program change recall which channels each instruments are going to be on and in what octave etc.
      The data then leaves (all merged together) into a MOTU Fastrack port A and into the computer, it goes through mIdi OX and out to Yoke 1 which the Midi BRain receives.

      Good to know. Like written above I’ll include that in testing like producing a comparable midi stream and see how the recording/playback works out.

      From what I am noticing at least as far as recording behavior perhaps it may be better to get each instrument into their own dedicated input in MidiBrain, since each has it’s own buffer, does that sound right?

      Currently I’m not prebuffering the incoming events per in-port. Thus it should make no difference if its merged together or not (because the ports are merged anyway and than buffered). But I’ll setup a test which includes merged events like you mentioned above and comment on that later on.

      My only problem with that is I would need the MIDI data to go THRU during recording so it can be routed out another output back to the hardware synth rack, is that a possible option/tab in the future?

      Yes that I want to include in the update. I imagine a midi-thru filter defined in a settings file. Some kind of syntax like
      THRU_FLTR channel, status, val1, val2
      filled out example:
      THRU_FLTR 1, cc, 24, 100
      It would define that a CC on channel 1 on number 24 is not looped and just directly forwarded to the direct out.
      And there should be a way that val2 can be omitted, or better just the channel is mandatory to exclude a whole channel from being fed into the looper. If you could define an arbitrary amount of such filters, would that work for you?
      Thanks again and greetings!

  9. HEy Dave,

    I use Midi OX prelooper to filter out any channels I don’t want to record, it offers all 16 channels as well as events to filter out, the only down side at least from the filter is that it is not channel specific for events, if you filter notes or pitch bend rather than it only filtering them out on the channels you have selected to omit it filters them out from all of the active channels.
    I have yet to figure out how to get midiOX to filter specific events from specific channels.

    I’m trying to rap my brain around your last paragraph, what you are describing is sending data thru but not looping/recording it.
    in my suggestion the data would be recorded and forward THRU to a midi output, having a filter on the thru would be advantageous but not a necessity for a THRU port, a simple ThrU on/off button on the output will do.

    keep up the good work can’t wait til the update!

    jerm :)

    • Hey Jeremy, in Midi-Ox just go to menu, Options, Data Mapping, adjust all your settings there, click Save, then OK, then right click on a routing strip, select Properties, from Map File pulldown menu select the setting file you saved previously. I hope this helps. Have fun my friend!

    • Hi!

      I’m trying to rap my brain around your last paragraph, what you are describing is sending data thru but not looping/recording it.what you are describing is sending data thru but not looping/recording it. in my suggestion the data would be recorded and forward THRU to a midi output, having a filter on the thru would be advantageous but not a necessity for a THRU port, a simple ThrU on/off button on the output will do.

      Sorry, I missed your point. I was thinking somehow further and got lost. I understand now that you like to have usual midi thru which echos all incoming midi out the thru port. That’s easy, ok, I was thinking about a way to specify which events are are taken and which are straight forwarded to a thru-port.

      • I was thinking about a way to specify which events are are taken and which are straight forwarded to a thru-port.

        Gotcha! a filter, that makes sense especially if you are using a DAW and soft synths along with external hardware and you only want specific data or channels to go to either.
        A mapping array could come in handy here in the Midi OUT section, where one could specify which channels or events go to Looper out and which go to Direct out.

        other loopers have something like this but it ends up being play buttons and routing on every channel/track which is cumbersome when you are trying to switch things around in a live setting, would be better to just have stored routing settings recalled by program change or something, for me anyway since my setup does not vary all that much, but then you get into creating “scenes” to step through the various stored settings during a song playback etc… that can include any type of relevant data, the BPM, routing, etc.

        jerm:)

      • Hey Jerm! I uploaded a beta update with some improvements mentioned. I have not much time to test it, but it ran smoothly with all my tests hope it does in your case! See the new post about it for further details. I’ll comment on your recent comment later (got to hurry getting to a rehersal now..) . Hope you like it so far and its stable.
        david

  10. Thanx Tony,

    I will try that, though it rarely comes up that I need it, it will be good to know how.

    PS Dave,

    I don’t know if you started working on the Metronome MIDI out Port or not, it occurred to me perhaps a way to determine which notes and in which scale will be generated would be beneficial.
    Typically when I have a “click track” in a DAW I put it in the key and scale of the song I am playing that way it does not distract me in my ear with an off key note.
    maybe used a patch like “Melodic generator” ?

    jerm :)

  11. PSS
    that is a patch by Grant Nestor if you want the Max 5 collective file go here:

    Homepage

    under Files.

    jerm :)

  12. thanks David,

    i tried to comment with a mp3 file but it didn’t post, second attempt says this information was already posted.

    good work!

    jerm :)

  13. having trouble with pitch bend again,

    this time I am able to monitor out the THRU port which shows it is reaching the input.

    sending it pitch bend data during recording is really producing some weird anomalies…the metronome is slowing down and skipping forward 5 beats or so to catch up during playback

    it’s almost as if an algorithm has been introduced that connects pitch and timing?

    SIDENOTE- if you select Microsoft synth inside of Metronome settings on Setup page it is not controlled by the volume knob still on the loop page, maybe because “audio” is not checked?

    I noticed you employed pitch bend for the metronome, (it sends a lot of data out at start up) but it doesn’t seem to have to send that data for each note. my thinking is this, there has got to be a more efficient (less CPU) way to send out metronome click to a midi port in different notes without employing pitch bend.
    something like a simple 12 note scale choice/ array with another 8 choice octave would be fine, this way users could pick any 12 notes in a Western scale for the root, as well as the accent note, in any of 8 scale ranges.
    You can set your metronome values in the middle C4 for example and let every setting in a grid activate either up or down from that value in 1/2 note increments, if a person wants to use D5 for example clicking octave 5 note 2 would produce that note, eg. 60=74, 60 being the starting value (C4) and 74 being the final value that is 14 increments above the starting point. Notes below that would work in reverse D3 would be activated by pressing 2nd note tab in octave 3 and would subtract 10 values from C4 if tab is engaged.

    IMHO a hardwired method of generating different scale MIDI notes will better for CPU.

    but hey what do I know…..I’m just a tad pole doing the backstroke in the shallow end of the baby pool….

    was that a warm spot I just swam through?

    jerm :)

    • sending it pitch bend data during recording is really producing some weird anomalies…the metronome is slowing down and skipping forward 5 beats or so to catch up during playback

      I did some tests on my own, had no time to write about it. To test it I set up a bcr2000 preset with 4 encoders sending PB on different channels (1-4). In my case it worked to record them sepperatly. I will set up 16 encoders sending PB on ch 1-16 and record them all together in a 4 bar loop. I’ll post the result of this stress test later on.

      sending it pitch bend data during recording is really producing some weird anomalies…the metronome is slowing down and skipping forward 5 beats or so to catch up during playbackit’s almost as if an algorithm has been introduced that connects pitch and timing?

      At the end of a loop midiBrain centers the PB of the recorded channels to avoid that it’s value hangs and gets transported to the loops beginning, or if the loop has been stopped, to the respective channel. I will do some more tests and probably find another way to handle the end-of-the-loop-PB-centering-problem – maybe I should totally get rid of it.

      SIDENOTE- if you select Microsoft synth inside of Metronome settings on Setup page it is not controlled by the volume knob still on the loop page, maybe because “audio” is not checked?

      Yes. That’s intended. The volume is just for audio. I thought all the midi volume/velocity can be configured in the midi device itself.

      I noticed you employed pitch bend for the metronome, (it sends a lot of data out at start up) but it doesn’t seem to have to send that data for each note. my thinking is this, there has got to be a more efficient (less CPU) way to send out metronome click to a midi port in different notes without employing pitch bend.

      I believe that this is related to the PB-centering like described above – but on the other hand, if you noticed that it’s just happaning on the ‘midi out’ – ‘metronome’ – out, than it’s weired, because its set up to send just note on channel 1-16, with pitchrange 0-127. The respective noteoff are send 200ms hardcoded afterwards. – There should be no PB events in the metronome output at all. – Thanks for this one. I’ll take some time to ponder on the PB-port stuffs today. I thought it would be smart to take care of this, but maybe it was a bad idea after all.

      You can set your metronome values in the middle C4 for example and let every setting in a grid activate either up or down from that value in 1/2 note increments, if a person wants to use D5 for example clicking octave 5 note 2 would produce that note, eg. 60=74, 60 being the starting value (C4) and 74 being the final value that is 14 increments above the starting point. Notes below that would work in reverse D3 would be activated by pressing 2nd note tab in octave 3 and would subtract 10 values from C4 if tab is engaged.

      Thats a good idea. I was actually thinking how to best implement it at the GUI-level, so that it’s not using too much space and still have enough controls. I build the basis for all pitch quantization by implementing this ‘mute by channel’-device. This will be the extension point for further analysis/quantization. First of all I try to find out what’s going wrong with the PB etc. . I’m really into quantization of pitches and more cool stuff you can do with it – but I need to get the basics running.

      was that a warm spot I just swam through?

      Hehe, warm spots are always welcome, but better don’t ask where they’re coming from – Especially in baby pools :-)
      There a so many different configurations of musician’s gear that makes it very difficult to find appropriate tests for everything – that’s why it’s so vital to get detailed reports like yours!
      I’ll be back soon! thanks man :-)
      david

  14. I did some tests on my own, had no time to write about it. To test it I set up a bcr2000 preset with 4 encoders sending PB on different channels (1-4). In my case it worked to record them sepperatly. I will set up 16 encoders sending PB on ch 1-16 and record them all together in a 4 bar loop. I’ll post the result of this stress test later on.

    good, only in my test it’s not just PB but notes being recorded with it, so it may yield different results, also I have the metronome going out to a midi port at the same time, I don’t think I encountered any problems with just pitch bend by itself.
    I also encountered something weird yesterday not mentioned, but that was aftertouch related, I recorded pitch bend by itself and when it came out it was like a weird aftertouch loop on the same channel….I restarted MIDI OX, MidiBrain and my hardware synths and it did not occur again so I can’t rule out possibly some sort of hardware problem for that….(maybe my Axiom25 had a sticky key?)

    At the end of a loop midiBrain centers the PB of the recorded channels to avoid that it’s value hangs and gets transported to the loops beginning, or if the loop has been stopped, to the respective channel. I will do some more tests and probably find another way to handle the end-of-the-loop-PB-centering-problem – maybe I should totally get rid of it.

    I’m trying to remember how Bert dealt with that in ZYklus,
    there was some sort of “force to grid” or “force to scale” option employed, I’m pretty sure that way the notes were automatically centered during recording instead of at the end.
    it was a little off in that if a note was inbetween pitches it could end up being a different note than you wanted, but at the same time Zyklus did not record pitch data or any of the sweeps (just notes) so there was a lot less to consider.

    Yes. That’s intended. The volume is just for audio. I thought all the midi volume/velocity can be configured in the midi device itself.

    Technically microsoft synth is audio :)
    Yes it can be controlled through Windows,
    however with so many options is “audio” really necessary anymore?
    syncing audio to midi in the same GUI is what just about every DAW does….however not every Midi program needs to engage in such activity and some are better off CPU wise….2c. :)
    IN Max there is an option to disable audio by unlocking DSP (custom runtime).
    Now that your are wanting to make MidiBRain more feature rich something to consider.
    I tried to run the looper the other day without ad_mme or whatever it normally has “running” at startup I switched it to my own (MAckie ONYX ASIO) and then turned it OFF with mixed results, sometimes it would record/play metro just fine others not at all or timing would skip….again might be my own hardware problem as my PC is not that good and you get into the whole bit rate and frequency fiasco (16bit, 24bit -44k,48k,96k etc) not something I’m interested in getting into for a simple MIDI task like loop/playback.

    I believe that this is related to the PB-centering like described above – but on the other hand, if you noticed that it’s just happaning on the ‘midi out’ – ‘metronome’ – out, than it’s weired, because its set up to send just note on channel 1-16, with pitchrange 0-127. The respective noteoff are send 200ms hardcoded afterwards. – There should be no PB events in the metronome output at all. – Thanks for this one. I’ll take some time to ponder on the PB-port stuffs today. I thought it would be smart to take care of this, but maybe it was a bad idea after all.

    I thought it was a great idea, and you moved forward with it in a very short time.
    the pitch data comes in a clump at the beginning. since you have pitch variables on the output.
    there should be a few there otherwise how is the module going to know how many steps up or down you want the note from the original value?
    obviously the more you change that value up or down the more PB is going to be sent on start, I’m assuming NONE will be sent if it is left at the original value..

    You can set your metronome values in the middle C4 for example and let every setting in a grid activate either up or down from that value in 1/2 note increments, if a person wants to use D5 for example clicking octave 5 note 2 would produce that note, eg. 60=74, 60 being the starting value (C4) and 74 being the final value that is 14 increments above the starting point. Notes below that would work in reverse D3 would be activated by pressing 2nd note tab in octave 3 and would subtract 10 values from C4 if tab is engaged.

    Thats a good idea. I was actually thinking how to best implement it at the GUI-level, so that it’s not using too much space and still have enough controls.

    well a pop up box with the grid/tabs on it would suffice, much like the audio one in set up, visually something like “select notes” button is all one would need there in front.
    Later down the line if wanted you could load other options into that tab object, like diatonic scale, harmonic minor, major etc, this would allow users to use the metronome as an instrument itself and have little to no effect on CPU.

    I build the basis for all pitch quantization by implementing this ‘mute by channel’-device. This will be the extension point for further analysis/quantization. First of all I try to find out what’s going wrong with the PB etc. . I’m really into quantization of pitches and more cool stuff you can do with it – but I need to get the basics running.

    you must have read mind on that one.
    You could put an algorithm (similar to Oberheim Xpander) that would allow users to change the root note of any given channels sequence by sending in another note to a dedicated input.

    eg. C major chord in legato, Xpander would receive a F# note the entire loop would then come out F# Major.

    something like that would be a good performance tool considering you could trigger different channels off and on by mute using CC’s or program changes along with being able to change the key of existing loops could pretty much build any type of progression and manipulate them in real time off of 3 or 4 simple recorded notes….

    but I agree let’s not get ahead of ourselves…features are great but stability is more important IMHO, if it ends up requiring 4G of RAM just to operate it’s going to become useless to me as others have in the past.
    that is what attracted me to this project in the first place, I think you got the right idea with simplicity and efficiency.

    I’m happy to test this some more today and see what else happens, I haven’t replaced that file yet for the query/CC assignments maybe I will mess around with that and get it off of channel 1 (since I use that for a module or two and don’t want any strange things happening during recording those notes.

    jerm :)

  15. not to nitpick, and I know you have your slate full, but I did mean to mention hard-wiring a fixed amount of bars again, I’m finding it rather hard to press stop right at the right time on a normal 32 beat riff.
    I don’t mind trying it this way it can be advantageous under the right circumstances but the less I have to “press” or trigger on stage the better, not having to try and trigger a “stop” or end to a given loop at a specific time would be one less thing to worry about IMHO.
    if you could set that amount ahead of time (from 1-128 beats for example) it would automatically return to the beginning after a pass and the exact moment you stop recording would be less crucial.

    I don’t make abstract/odd amount of beats in progressions all that often and usually know the amount of bars in a given time signature I’m going to use for a given progression ahead of time.

    unless I am playing offbeat jazz or some other style of odd numbered beats a 5,7, 23, 35, should never happen, certainly not in 4/4.

    thank you for all the work thus far, please take my comments with a grain of salt, I’m excited to see where this can go and am happy to have found something that works for free to begin with, beggars can’t be choosers but I do feel I have been a bit.

    jerm :)

  16. I did have a question for you David when you get a chance,

    are you using [seq] or [mtr] to record the midi?

    according to the reference guide using mtr will allow you to store such data in a scene as number box, which I think would be useful for the UI of the metronome properties we spoke about earlier.

    Also mtr allows you to prompt the “Save as” box to export midi and other pertinent data to an external file for recall later.
    this will allow users to store metronome key and note info under their own file names for recall later as well as any midi data recorded, for example one could in theory have one scene at 120bpm and another at 110BPM both with different scale ranges and variable tempo’s eg. 4/4, 6,4, for the metronome which could be triggered via program change remotely, each scene basically would have it’s own 16 channel track to record to, even as little as 4 scenes would be enough to step through a basic song with tempo and progression changes.

    new to MAX myself just getting my feet wet, but you did ask early on if I had any suggestions, in trying to find out how to export midi files and save other data from any object in a scene using the “write” message.

    jerm :)

  17. having a little problem with external sync up today.

    I selected an outside source (yoke 1) same source the midi data is coming in but no luck yet.
    Maybe my sequencer is not sending out midi clock, tho it sends out drum beats. (GNX4)
    I just can’t rap my brain around how this is supposed to work, or which setting I need the metronome on to get it to sync to external hardware midi sequencers.
    THe other bummer today was finding out there is no erasing of previous passes by the new notes, so if I play a progression on channel 5 then I want to record over and delete those notes with my next pass it keeps both.
    I guess the alternative now that you have the mutes in place is just to mute previous passes and record a new one to a different channel, which is OK too.

    jerm :)

    • Hi Jeremy! Sorry or the delay!
      I’ll respond to the last two comments.

      I just can’t rap my brain around how this is supposed to work, or which setting I need the metronome on to get it to sync to external hardware midi sequencers.

      1. external hardware midi sequencers
      sends out midi clock to external
      2. midiBrain, setup-tab, midi-in
      ‘midi clock source’-> select the interface/port the GNX4 sends to
      3. midiBrain, looper-tab, ‘sync mode’-dropdown -> select ‘slave: midi clock’
      4. If you start your sequencer midi brain’s receiving the start event and ticks of the ext. clock and starts. If its still not working – does the small light flash next to the port labeled ‘midi clock source’ when the GNX4 is playing?

      if I play a progression on channel 5 then I want to record over and delete those notes with my next pass it keeps both.

      Yes, its not replacing the notes – i described further down this reply why this is currently problematic.

      I guess the alternative now that you have the mutes in place is just to mute previous passes and record a new one to a different channel, which is OK too.

      Depending on what you want to achieve you could use the ‘delete channel’ function to delete the content of channel and start right away playing.

      are you using [seq] or [mtr] to record the midi?

      I’m using [seq~] driven by a [line~].

      according to the reference guide using mtr will allow you to store such data in a scene as number box

      Yes mtr can export midi files nativly. seq~ is a data container with a fild to store a sequentiel index which in my case refers to the pitch of the line~. As I understood I have to take care of the storage for the recorded events.On the other hands there are a lot of advantages using the seq~ besides midi events this object is good for sequencing almost everthing at audio rate accuracy. Everything like coordinates of movement detections, gestures, text etc.
      A big problem of those MAX-objects is, that there is not direct way of querying variables with an embedded prog language. You can just dump out a total list or send via message-box a query instruction to the obj (e.g. seq~, mtr, seq) which must be catched at the output to pass it to an inlet of a java mxj. this is very cumbersome (time expensive) and valid for all the objs. . For me there is no real option in not using a programming language (just use patch chords). I think it’s best to programm a custom sequencer obj with full access to internal states. This could come in handy if one wants to dynamically replace a note at a specific timestamp or do some other calculations.

      , which I think would be useful for the UI of the metronome properties we spoke about earlier.
      Also mtr allows you to prompt the “Save as” box to export midi and other pertinent data to an external file for recall later.
      this will allow users to store metronome key and note info under their own file names for recall later as well as any midi data recorded, for example one could in theory have one scene at 120bpm and another at 110BPM both with different scale ranges and variable tempo’s eg. 4/4, 6,4, for the metronome which could be triggered via program change remotely, each scene basically would have it’s own 16 channel track to record to, even as little as 4 scenes would be enough to step through a basic song with tempo and progression changes.

      Yeah, you’re right, great suggestions but, hehe one’s gotta to be carefull not to reinvent some sequenzer:). I’m afraight I can’t do that for the next months (busy with exams) but It sounds fun!

      David

  18. thanx David,

    I’m gonna try your suggestion for the external sync set up and get back to you with the results.

    Also thank you for the “delete channel” suggestion, I usually have that set to “take channel as is”.
    I ideally a delete function would be better built into the Mute interface you created for each channel in the second build, it would be a lot easier to control remotely without using a macro or something in windows query to do all the necessary steps to get to a channel and delete it without using a mouse.
    IF each MIDI channel had it’s own delete/reset tab that could then be linked to a Midi CC, or query letter-number.

    but I digress…good luck on the exams :)

    Jeremy

    • Hi Jeremy!

      IF each MIDI channel had it’s own delete/reset tab that could then be linked to a Midi CC, or query letter-number.

      You’re right, this would be useful and easy to implement. I’ll try to do it if I’ll find some time. For all more complex concerns I first gotta get rid of that MA stuff – Thanks for the “luck + 1″ :-)

      david

  19. WOw, I can’t believe it has been almost a whole year since the release of MidiBrain, it’s still one of the easiest and low CPU usage midi loopers to use out there.

    • Thanks man! Currently I’m stuck into programming for Android. that’s why I haven’t posted about updating midiBrain. I’m programming an app/script to controll 16 tracks at once for Ableton Live and with the _Framework classes. BTW do you have and IOS/Android device? Man thats totally cool..

  20. I did leave a comment the other day, doesn’t seem to have gone through, yes I have an iphone, beta testers needed :)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: