Audiobus: Use your music apps together.

What is Audiobus?Audiobus is an award-winning music app for iPhone and iPad which lets you use your other music apps together. Chain effects on your favourite synth, run the output of apps or Audio Units into an app like GarageBand or Loopy, or select a different audio interface output for each app. Route MIDI between apps — drive a synth from a MIDI sequencer, or add an arpeggiator to your MIDI keyboard — or sync with your external MIDI gear. And control your entire setup from a MIDI controller.

Download on the App Store

Audiobus is the app that makes the rest of your setup better.

Request Mozaic help midi output depend on chord input

13567

Comments

  • @horsetrainer: Modulo is nothing super fancy, you can accomplish the same thing by adding a little extra arithmetic to your code. But it does simplify things, helps keep your mind from getting overwhelmed by complexity. It's also an impetus to get you looking for regularities in data, which are often helpful to simplify programming.

  • @horsetrainer said:
    @McD
    Do have any recommendations for any "not extremely complex"... Mozaic scripts on PatchStorage.... That process "user played chords" in ways to achieve various types of outputs?

    My experience with Mozaic has largely been a personal exploration that started from a StreamByter script I created with @_ki to accept single notes and render chords into a synth. Re-creating the ideas of that script lead to a script I have uploaded as the "One Finger Orchestrator". It's got dozens of enhancements as I learned more about the language.

    But the best thing for self-exploration is the Tutorial Thread which ran out of gas. TL;DR.

    https://forum.audiob.us/discussion/36604/learn-to-program-the-mozaic-workshop-to-create-midi-fx-and-controllers-you-could-learn-something/p1

    I'd like to study the different ways Mozaic can work with live played chord input.
    I think this subject is interesting.

    It would be fun to build some scripts in a conversation between new coders and users that have ideas that could be implemented and shared quickly. Users and Developers (that are learning and will expose their efforts and accept advice along with some praise for anything that makes cool sounds or solves some problem.

    I think this thread is too specific to a given controller to be of general value to more new scripters.

  • @McD said:

    @horsetrainer said:
    @McD
    Do have any recommendations for any "not extremely complex"... Mozaic scripts on PatchStorage.... That process "user played chords" in ways to achieve various types of outputs?

    My experience with Mozaic has largely been a personal exploration that started from a StreamByter script I created with @_ki to accept single notes and render chords into a synth. Re-creating the ideas of that script lead to a script I have uploaded as the "One Finger Orchestrator". It's got dozens of enhancements as I learned more about the language.

    But the best thing for self-exploration is the Tutorial Thread which ran out of gas. TL;DR.

    https://forum.audiob.us/discussion/36604/learn-to-program-the-mozaic-workshop-to-create-midi-fx-and-controllers-you-could-learn-something/p1

    I'd like to study the different ways Mozaic can work with live played chord input.
    I think this subject is interesting.

    It would be fun to build some scripts in a conversation between new coders and users that have ideas that could be implemented and shared quickly. Users and Developers (that are learning and will expose their efforts and accept advice along with some praise for anything that makes cool sounds or solves some problem.

    I think this thread is too specific to a given controller to be of general value to more new scripters.

    Ok. I'll post on the Tutorial Thread. :)

  • Thanks for asking.
    My accordion is a Roland FR-3X.
    The user manual can be downloaded here:

    https://www.roland.com/us/support/by_product/fr-3x/owners_manuals/

    In my preliminary test with multiple buttons pushed at once I found that pressing and holding one button, and then pressing and holding a second button, and then releasing only the first button pretty much assures a problem.

    I don’t know what the MP means in MidiWrench. I should probably mention that the MidiWrench data is highly filtered. The bellows puts out a constantly changing pressure signal to control volume and timbre like an acoustic accordion would.
    The treble keys and bass buttons are all velocity sensitive on press AND release. The treble keys send out 3 simultaneous midi channels themselves, corresponding to accordion, orchestral and organ midi channels. There is a lot going on. If I did not filter out the pressure signal we would not be able to read the note information.
    Please don’t get discouraged 👍🏼
    Bruce

  • McDMcD
    edited March 2020

    @Bellows said:
    I don’t know what the MP means in MidiWrench.

    Are there any "pedals" involved or some "modulation/sustain" event that the instrument adds to a button press? Something that Roland adds to trigger something in their target synth app they might sell for users to control in a computer app or a hardware sound module?

    Just a guess really. There's another app called "MIDI Spy" that provides details on additional MIDI event types (CC's, SysEx, etc).

  • heshes
    edited March 2020

    @Bellows said:
    In my preliminary test with multiple buttons pushed at once I found that pressing and holding one button,
    and then pressing and holding a second button, and then releasing only the first button pretty much assures a problem.

    There's one problem I would expect, even if the code were working as designed. This problem is that if two pressed chordbuttons share a a note (i.e., one note is part of both chords), then releasing the first chord will turn off that note, even though it's part of the second chord that's still held. It sounds like you're saying the problem is bigger than that. I'm not sure how that could create a bigger problem, but maybe it does, I'll have to write some test input to check. In any case, that shared-note problem is something that needs to be fixed, which I think is doable.

    Are there any problems if you limit things to a single chordbutton pressed at a time?

    Also, one helpful test would be to see if you can create problems with two simultaneous buttons that share no notes. Like any of these buttons (Gdim, G#dim,Adim,A#dim) with each other or with any one of these buttons: (B-any,C-any,C#-any,D-any). This assumes you're using most recent version of code at the clean paste text link.

    Also, for any two chordbuttons, do you get problems if you hold two buttons and release them both at once? If all notes do turn off, and then you start playing single chordbuttons, are there any problems with the single chordbuttons after releasing the two chordbuttons at same time?

    Not sure, but I don't think all the other midi stuff going on with the accordion is affecting things. At least if, as I think you've said, the chordal output is on different channel from the other stuff. If more was coming into the Mozaic app on that channel it could potentially foul up the counter, but the OnMidiNote event we're using, as I understand it, handles only NoteOn and NoteOff commands, which filters out all the stuff we don't want, I think.

  • Hi,
    I have been doing some informal testing tonight. Here is information that is being sent from my accordion aside from midi note info.

    02:02:28.972 [Active Sensing]
    02:02:29.226 [Active Sensing]
    02:02:29.481 [Active Sensing]
    02:02:29.751 [Active Sensing]
    02:02:30.006 [CC] ch=0 controller=11 value=6
    02:02:30.006 [CC] ch=1 controller=11 value=6
    02:02:30.006 [CC] ch=2 controller=11 value=6
    02:02:30.006 [Active Sensing]
    02:02:30.185 [CC] ch=0 controller=11 value=12
    02:02:30.186 [CC] ch=1 controller=11 value=12
    02:02:30.186 [CC] ch=2 controller=11 value=12
    02:02:30.260 [Active Sensing]
    02:02:30.276 [CC] ch=0 controller=11 value=6
    02:02:30.291 [CC] ch=1 controller=11 value=6
    02:02:30.291 [CC] ch=2 controller=11 value=6
    02:02:30.305 [CC] ch=0 controller=11 value=0
    02:02:30.305 [CC] ch=1 controller=11 value=0
    02:02:30.305 [CC] ch=2 controller=11 value=0
    02:02:30.516 [Active Sensing]
    02:02:30.590 [CC] ch=0 controller=11 value=2
    02:02:30.590 [CC] ch=1 controller=11 value=2
    02:02:30.605 [CC] ch=2 controller=11 value=2
    02:02:30.757 [CC] ch=0 controller=11 value=4
    02:02:30.757 [CC] ch=1 controller=11 value=4
    02:02:30.757 [CC] ch=2 controller=11 value=4
    02:02:30.785 [Active Sensing]
    02:02:30.800 [CC] ch=0 controller=11 value=0
    02:02:30.800 [CC] ch=1 controller=11 value=0
    02:02:30.800 [CC] ch=2 controller=11 value=0

    I found that individually the chord buttons work as expected.

    I found that chord buttons with NO notes in common also worked correctly. Whoo Hoo.

    When randomly holding/releasing two buttons at a time with notes in common chaos ensues.

    The problems associated with this are:

    Stuck notes . All notes off in controlled app (D1) must be used to stop hanging notes.

    Mozaic must be reloaded to work correctly.

    Wrong intervals. Often the C major button will play C and G as opposed to C and E. Honest, I would not have believed it either.

    Playing a major chord button with the 7th chord button can cause the major chord button on subsequent pushes to sound the single raised octave note associated with the major chord button.

    Several other wrong responses were noted.

    In particular after a loss of control the controlled test app also worked incorrectly.
    Audio kit D1 on which I am using a electric piano/string patch (layered) would sound the strings on some notes only. This was repeatable. Most puzzling. Because of this I am changing my test app to LayR tomorrow.

    It seems that Mozaic goes out of control.
    Perhaps a panic button in Mozaic for all notes off AND initialization of Mozaic would help analyze this.

  • In the pic above. I have the bass notes on a different channel and App so I can hear them while testing the chord buttons. There is no connection between them.

  • heshes
    edited March 2020

    It may crash and burn badly, but there's a new version of clean paste text at:
    https://gist.github.com/hsitz/d169f84f60acd1cdaa59cd0650d87471/raw/cc31604376045f2e336503d9e0232bb0f5d42280/acc-translate-mozaic.txt

    This is first attempt at sending note off commands only if the note is not used by any remaining pressed chordbuttons. It seems to still work okay for single chordbuttons. I can't easily test multiple chords with my onscreen keyboard, will need to write some code to simulate chordbutton presses for testing purposes if this turns out to be hard nut to crack.

    But who knows, maybe this will work. I would test by, in order:
    1. test single chordbutton presses,
    2. test multiple chordbuttons that don't share notes
    3. test multiple chordbuttons that share notes.

    It should be implementing FLY system lite, identical to FLY system if you stay in leftmost 12 keys of the bank.

    If it goes haywire, then you need to reload script in mozaic (not sure about your synth).

    Also, it's now logging some relevant info, so it it does go haywire getting a copy of the text in the mozaic log window would be helpful. You need to copy that before you reload the script, since reloading erases the log.

  • Hi Hes,
    Did some testing today. As seen below single button presses result in programmed results. Note: minor chords have one note in an extra high octave output.

    However, after an event that screws up because of simultaneous button presses the single button presses will not work properly resulting in stuck notes.

    Here Is some data:

    Hes accordion newest #2

    Notes played:
    CM - Cm - C7 - Cdim6
    Single chord button presses all working
    Note m3rd high octave

    chordtype: 1 command: 128 note: 60 timeson: 1
    note1timesafterinc: 60 1
    chordtype: 1 command: 144 note: 60 timeson: 0
    chordtype: 4 command: 128 note: 64 timeson: 1
    chordtype: 4 command: 128 note: 60 timeson: 1
    note1timesafterinc: 60 1
    chordtype: 4 command: 144 note: 64 timeson: 0
    chordtype: 4 command: 144 note: 60 timeson: 0
    chordtype: 3 command: 128 note: 75 timeson: 1
    chordtype: 3 command: 128 note: 72 timeson: 1
    note1timesafterinc: 72 1
    chordtype: 3 command: 144 note: 75 timeson: 0
    chordtype: 3 command: 144 note: 72 timeson: 0
    chordtype: 2 command: 128 note: 67 timeson: 1
    chordtype: 2 command: 128 note: 64 timeson: 1
    note1timesafterinc: 64 1
    chordtype: 2 command: 144 note: 67 timeson: 0
    chordtype: 2 command: 144 note: 64 timeson: 0
    chordtype: 2 command: 128 note: 67 timeson: 1
    chordtype: 2 command: 128 note: 64 timeson: 1
    note1timesafterinc: 64 1
    chordtype: 2 command: 144 note: 67 timeson: 0
    chordtype: 2 command: 144 note: 64 timeson: 0
    chordtype: 2 command: 128 note: 67 timeson: 1
    chordtype: 2 command: 128 note: 64 timeson: 1
    note1timesafterinc: 64 1
    chordtype: 2 command: 144 note: 67 timeson: 0
    chordtype: 2 command: 144 note: 64 timeson: 0
    chordtype: 2 command: 128 note: 67 timeson: 1
    chordtype: 2 command: 128 note: 64 timeson: 1
    note1timesafterinc: 64 1
    chordtype: 2 command: 144 note: 67 timeson: 0
    chordtype: 2 command: 144 note: 64 timeson: 0
    chordtype: 2 command: 128 note: 67 timeson: 1
    chordtype: 2 command: 128 note: 64 timeson: 1
    note1timesafterinc: 64 1
    chordtype: 2 command: 144 note: 67 timeson: 0
    chordtype: 2 command: 144 note: 64 timeson: 0
    chordtype: 2 command: 128 note: 67 timeson: 1
    chordtype: 2 command: 128 note: 64 timeson: 1
    note1timesafterinc: 64 1
    chordtype: 2 command: 144 note: 67 timeson: 0
    chordtype: 2 command: 144 note: 64 timeson: 0
    chordtype: 2 command: 128 note: 67 timeson: 1
    chordtype: 2 command: 128 note: 64 timeson: 1
    note1timesafterinc: 64 1
    chordtype: 2 command: 144 note: 67 timeson: 0
    chordtype: 2 command: 144 note: 64 timeson: 0
    chordtype: 2 command: 128 note: 67 timeson: 1
    chordtype: 2 command: 128 note: 64 timeson: 1
    note1timesafterinc: 64 1
    chordtype: 2 command: 144 note: 67 timeson: 0
    chordtype: 2 command: 144 note: 64 timeson: 0
    chordtype: 2 command: 128 note: 67 timeson: 1
    chordtype: 2 command: 128 note: 64 timeson: 1
    note1timesafterinc: 64 1
    chordtype: 2 command: 144 note: 67 timeson: 0
    chordtype: 2 command: 144 note: 64 timeson: 0
    chordtype: 1 command: 128 note: 60 timeson: 1
    note1timesafterinc: 60 1
    chordtype: 1 command: 144 note: 60 timeson: 0
    chordtype: 4 command: 128 note: 64 timeson: 1
    chordtype: 4 command: 128 note: 60 timeson: 1
    note1timesafterinc: 60 1
    chordtype: 4 command: 144 note: 64 timeson: 0
    chordtype: 4 command: 144 note: 60 timeson: 0
    chordtype: 3 command: 128 note: 75 timeson: 1
    chordtype: 3 command: 128 note: 72 timeson: 1
    note1timesafterinc: 72 1
    chordtype: 3 command: 144 note: 75 timeson: 0
    chordtype: 3 command: 144 note: 72 timeson: 0
    chordtype: 2 command: 128 note: 67 timeson: 1
    chordtype: 2 command: 128 note: 64 timeson: 1
    note1timesafterinc: 64 1
    chordtype: 2 command: 144 note: 67 timeson: 0
    chordtype: 2 command: 144 note: 64 timeson: 0
    chordtype: 2 command: 128 note: 67 timeson: 1
    chordtype: 2 command: 128 note: 64 timeson: 1
    note1timesafterinc: 64 1
    chordtype: 2 command: 144 note: 67 timeson: 0
    chordtype: 2 command: 144 note: 64 timeson: 0
    [MOZAIC] Script loaded.

    Hes accordion bass newest#2

    When single notes screw up
    Caused after some common chord between double buttons are pushed
    These are single button pushes resulting in hung notes

    chordtype: 2 command: 128 note: 69 timeson: 1
    chordtype: 2 command: 128 note: 66 timeson: 1
    note1timesafterinc: 66 1
    chordtype: 2 command: 144 note: 69 timeson: 0
    chordtype: 2 command: 144 note: 66 timeson: 0
    chordtype: 2 command: 128 note: 62 timeson: 1
    chordtype: 2 command: 128 note: 59 timeson: 1
    note1timesafterinc: 59 1
    chordtype: 2 command: 144 note: 62 timeson: 0
    chordtype: 2 command: 144 note: 59 timeson: 0
    chordtype: 2 command: 128 note: 67 timeson: 1
    chordtype: 2 command: 128 note: 64 timeson: 1
    note1timesafterinc: 64 1
    chordtype: 2 command: 144 note: 67 timeson: 0
    chordtype: 2 command: 144 note: 64 timeson: 0
    [MOZAIC] Script loaded.

    Hes Accordion Bass latest #2

    Repeatedly press the CM and C7( possibly was C dim but definitely the same buttons each time) I forgot when I put my accordion down but I believe it was the C7
    Note that notes not in play have happened

    chordtype: 1 command: 128 note: 67 timeson: 0
    note1timesafterinc: 70 1
    chordtype: 1 command: 144 note: 70 timeson: 0
    chordtype: 1 command: 128 note: 70 timeson: 0
    note1timesafterinc: 64 2
    chordtype: 1 command: 144 note: 64 timeson: 1
    chordtype: 1 command: 128 note: 70 timeson: 0
    note1timesafterinc: 71 1
    chordtype: 2 command: 144 note: 74 timeson: 0
    chordtype: 2 command: 144 note: 71 timeson: 0
    chordtype: 2 command: 128 note: 77 timeson: 0
    chordtype: 2 command: 128 note: 74 timeson: 0
    note1timesafterinc: 60 1
    chordtype: 4 command: 144 note: 64 timeson: 0
    chordtype: 4 command: 144 note: 60 timeson: 0
    chordtype: 4 command: 128 note: 64 timeson: 1
    chordtype: 4 command: 128 note: 60 timeson: 1
    note1timesafterinc: 60 1
    chordtype: 4 command: 144 note: 64 timeson: 0
    chordtype: 4 command: 144 note: 60 timeson: 0
    chordtype: 4 command: 128 note: 64 timeson: 1
    chordtype: 4 command: 128 note: 60 timeson: 1
    note1timesafterinc: 60 1
    chordtype: 4 command: 144 note: 64 timeson: 0
    chordtype: 4 command: 144 note: 60 timeson: 0
    chordtype: 4 command: 128 note: 64 timeson: 1
    chordtype: 4 command: 128 note: 60 timeson: 1
    note1timesafterinc: 60 1
    chordtype: 4 command: 144 note: 64 timeson: 0
    chordtype: 4 command: 144 note: 60 timeson: 0
    [MOZAIC] Script loaded.

    If you have more specific entries desired please tell me so.
    I think version numbers or titles should be included in the scrip for identification.
    Thanks,
    Bruce

  • @Bellows said:
    Hi Hes,
    Did some testing today. As seen below single button presses result in programmed results. Note: minor chords have one note in an extra high octave output.

    Thanks, those minor chord notes above 71 would definitely screw things up, wasn't planning for those.

    Have fixed that, and added a couple things here: https://gist.github.com/hsitz/d169f84f60acd1cdaa59cd0650d87471/raw/4a65dab8da4d51a2804d0ad1e8e0ee12a24c94c6/acc-translate-mozaic.txt

    Once it starts making mistakes, chances it could ever correct itself are slim or none, just reload the script and start again.

  • heshes
    edited March 2020

    Also, regarding the played notes that are different from what you're expecting, those are intended, at least according to my interpretation of the FLY system. For example, the minor chordbuttons should all play root and minor third an octave above where you'd expect. But there may be errors in my understanding of the FLY system, or maybe multi-presses are fouling some of this up.

  • heshes
    edited March 2020

    I'm wondering if the accordion itself may be altering something in the midi note on and off messages it's sending when chordbuttons that share a note are both pressed, or unpressed.

    I'm thinking it must be, because for it to work when directly connected to a synth, it can't , e.g, send midi note off for all CMaj notes (60,64, 67) when CMaj is unpressed, if you're holding down another chordbutton that's playing one of those notes. This may blow things up. :(

    It would be helpful to get some midi wrench output of:

    1. press one chordbutton
    2. depress different chordbutton that shares a note
    3. unpress one of them
    4. unpress the other
  • @hes said:
    I'm wondering if the accordion itself may be altering something in the midi note on and off messages it's sending when chordbuttons that share a note are both pressed, or unpressed.

    I'm thinking it must be, because for it to work when directly connected to a synth, it can't , e.g, send midi note off for all CMaj notes (60,64, 67) when CMaj is unpressed, if you're holding down another chordbutton that's playing one of those notes. This may blow things up. :(

    It would be helpful to get some midi wrench output of:

    1. press one chordbutton
    2. depress different chordbutton that shares a note
    3. unpress one of them
    4. unpress the other

    I'd also be interested in seeing a sample of "played" Midi Note Data from the accordion chord buttons.

    The issue of finding a solution for "isolating" played chords each into it's own individual Data Block, fascinates me.

  • Would it not be easier if the midi accordion sends single notes for each chord button?
    Maybe the free bass mode can be used to play the chords on the iPad. (set the volume of that free bass channel to zero on your accordion)

    Sounds very addictive, free bass...

  • @Alfred said:
    Would it not be easier if the midi accordion sends single notes for each chord button?
    Maybe the free bass mode can be used to play the chords on the iPad. (set the volume of that free bass channel to zero on your accordion)

    Sounds very addictive, free bass...

    Free bass systems are very different than Stradella bass systems. My accordion can do Stradella or several different freebass systems.
    Even though I am not skilled at free bass technique I agree it may provide some easier to analyze data.
    I will test both today and provide what I hope is interesting information.
    Bruce
    PS my accordion was very glad to gig last night and play freely as opposed to carefully controlled test mode 😃

  • heshes
    edited March 2020

    @Bellows said:
    Free bass systems are very different than Stradella bass systems. My accordion can do Stradella or several different freebass systems.
    Even though I am not skilled at free bass technique I agree it may provide some easier to analyze data.
    I will test both today and provide what I hope is interesting information.
    Bruce
    PS my accordion was very glad to gig last night and play freely as opposed to carefully controlled test mode 😃

    Yeah, I don't see any way of getting to the FLY system from modifying output of all buttons to be single notes. Creating chords from single-note bass or root buttons would be trivial in a Mozaic app, but I don't think it would give much playability, hard to think of a way to play that would let you play melodies against Maj, min, Maj7, and dim7 chords of your choosing, much less with the voicings you want. (EDIT: actually, I think there is a way, but it would not play chords based on the root buttons, to be FLY system it would still have to play 2-note chords from the Maj, Min, and Maj7 chordbuttons, even though they send only a single note. It would depend on a bass or root button being depressed before the chordbuttons, would restrict playing choices somewhat, I think, .., but would work, so long as you didn't make a mistake in button pressing. Probably not what you want.)

    I'm curious what other systems the accordion can output, though. I didn't see them, are the specs for them in the manual? What's needed is some way to have the info sent to Mozaic uniquely identify which buttons are being pressed. E.g., if accordion could send a number between 1 and 120 identifying each button (or 2 numbers identifying column and row), that would make things very straightforward. It would have been easy for them to include something like that in the accordion firmware, but I suspect it's not there.

    =============

    To illustrate the problem of working from current Stradella system, though, I'm curious about midi wrench output for the following chord sequence:

    1. Press CMaj7 button and hold
    2. Press D7 button and hold
    3. Press Dmin button and hold
    4. Press Emin button and hold
    5. Press Fmaj button and hold
    6. Now release CMaj7
    7. Release D7

    I suspect the midi wrench output may surprise, and that after step 7 you will end up with entirely different set of held chords than you had after step 2, but with Mozaic not having been sent information that could possibly let it know of this change in state.

  • I had a look at Liberty Bellows presentation of the FR4X. It seems like you can use the Stradella bass notes together with free bass notes playing the concert layer. If you can mute the concert layer in some way (or not), you could maybe send that midi channel to one of the chord apps?

  • heshes
    edited March 2020

    @Alfred said:
    I had a look at Liberty Bellows presentation of the FR4X. It seems like you can use the Stradella bass notes together with free bass notes playing the concert layer. If you can mute the concert layer in some way (or not), you could maybe send that midi channel to one of the chord apps?

    Routing the midi for row 1 and 2 of the chordbank thru Mozaic would be easy (and no worry about muting, notes would then get played only if the code in Mozaic decides they get played). The info could be used to provide clues on how to interpret the data being sent for buttons in row3 thru row6, but for this to work at all I think it would have to depend on particular rules being followed when playing, e.g., knowing that you'll never be playing chordbuttons in column 8 if you're playing bass/root note from, say, column 3. I think there would be too many restrictions that would limit freely playing. for it to be a good solution.
    But maybe not.

    I don't think the user manual @Bellows linked earlier shows the possible button layouts. I found a manual that does have those charts, around page 100,: https://www.musikkhandel.no/media/files/3389/FR-4x_reference_e01_W.pdf

  • heshes
    edited March 2020

    Here is an example of something that would be easy to program in Mozaic with the Free Bass mode (minor 3rd) setup on accordion, but with actual notes played as if it were using a FLY system setup:

    1. Press and hold a button in row 2. The proper note will sound from Mozaic.
    2. Press any of the buttons (singly or in combination) in rows 3 - 5 ( i.e., no row 6) and the
      proper 2 notes from FLY system will sound for each of those notes.
    3. Release all buttons.
    4. Press both two buttons in same column in row 1 and 2.
    5. Now you can press any of the buttons (singly or in combination) in rows 4 - 6 ( no row 3) and
      have proper FLY system pair of notes (or 1 for row 6) sound.

    In practice, the combination of buttons from row 2 and the higher rows could be pressed nearly at same instant, but you'd have to develop habit so row 2 is always tiny fraction of second ahead. It might be easy to develop this because rows 3 thru 5 would not sound at all unless a button in row 2 is pressed.

    I think programming that in Mozaic may be quite straightforward. Not sure if it fits with "free" playing of the FLY system.

    EDIT: Actually, the situation may be much better than that. In Free Bass minor 3rd mode the buttons in rows 3 thru 5 are all unique, each occurs only once. That improves the situation quite a bit, though to get row 6 to sound you would have to combine it with either row 2 or row 1 or (both row 1 and 2). Otherwise you would be (mostly?) free to play from rows 1 thru 5 in just about any way, just special consideration if you wanted to sound a button in row 6.

  • heshes
    edited March 2020

    I think Alfred's suggestion to use Free Bass mode might actually yield something useful. If the accordion can be set to Free Bass Minor 3rd mode (as depicted around page 102 of pdf reference manual linked a couple posts up), then I think I'm well on the way to converting it to FLY system output for rows 3 to 5. Row 6 is still not handled right, if this approach looks promising, then I'd be happy to try to figure out some way to work with row 6.

    I think rows 1 and 2, fundamental bass and 3rd, are identical, or close enough, between Free Bass Minor 3rd and FLY system, so I haven't done anything with those yet. If you try this, you would want to keep rows 1 and 2 on their own midi channel, separate from rows 3 - 6.

    I'm not sure the code I've got now replicates rows 3 thru 5 exactly as FLY system. I've tinkered around playing notes on virtual keyboard input, no errors, sounds pretty, play as many keys at once as you want. Some of the tones might be off by an octave. It's also possible tones are off by a half step or full step in the whole system, so it actually clashes with bass buttons in same column. [EDIT: whoops, just looking again at FLY system chart I think most of the notes are off by varying degrees. But it's a fairly easy fix to match them all up. So for now I think the code just plays sets of two note chords in a way that's systematized, but doesn't yet synch with rows 1 and 2.]

    In any case, code is here:
    [deleted link in this post]

  • heshes
    edited March 2020

    Updated code to fix problem, I think, with the pitches being off. I think it now matches FLY system (except for possible octave mistakes), synchs rows 3 thru 5 chordbuttons with the bass notes in rows 1 and 2.

    Code to convert rows 3 thru 5 (not 6) in Free Bass Minor 3rd setup to FLY system.

    https://gist.github.com/hsitz/2823309c45bc435350abc47ca9dbcda1/raw/442218e0e909fea9ad12eabab0b580a5f874effd/FB-to-fly-system.txt

  • edited March 2020

    @hes About that sixth column, when you detect that a input note is played twice at the same time, you could maybe play some of those powerchords that @Bellows was talking about.

    PowerFLY with Free Bass, lol.

  • heshes
    edited March 2020

    Yes, one of the situations would be where "Note On", gets sent twice for a given note, without a "Note Off" in between. That would indicate that the buttons at [ row 3, column x], and [row 6, column x-1] are both being pressed (since under the Free Bass setup both buttons send same note to Mozaic).

    The problem is, the first time that Note On message is sent, it's not possible to know whether the player is pressing the Row 3 button or the Row 6 button. You have to make some other assumptions to decide whether it should be played as being from Row 3 or from Row 6. As written, and what I expect is best approach, the Mozaic app by default interprets any Note On command for that note as being from Row 3, so the Row 3 pair of notes will sound, even if it's the Row 6 button that's been pressed.

    As I mentioned before, there are ways to get the Row 6 buttons to sound the note they're supposed to in FLY system, but they won't be perfect (will restrict freedom of play somewhat), and will have to depend on other keys being pressed (or not pressed) first. There are lots of different rules that could be implemented. Two of the easier ones to do would be:

    1. If the [Row 3, Column x + 1] button is depressed, then the button at [Row 6, Col x ] will play the correct FLY system note (octave above root), regardless of what buttons are depressed in Rows 1 and 2.

    and/or

    1. If two (or more) buttons in Row 1 and Row 2 are depressed, and button at [Row 3, Col x + 1] is not depressed, then the button at [Row 6, Col x] will play the correct FLY system note.

    Unless conditions of rule 1 or rule 2 had been met, the Row 6 press at [Row 6, Col x] would be interpreted as being from [Row 3, Col x + 1]. (This would be the default and is the current behavior for all cases, different from FLY system.)

    Maybe those two rules would be enough in themselves to enable useful playing of Row 6. But more rules, or different rules, could be implemented.

  • To illustrate the problem of working from current Stradella system, though, I'm curious about midi wrench output for the following chord sequence:

    1. Press CMaj7 button and hold
    2. Press D7 button and hold
    3. Press Dmin button and hold
    4. Press Emin button and hold
    5. Press Fmaj button and hold
    6. Now release CMaj7
    7. Release D7

    Hi Hes
    I will be glad to perform this test however I want to be clear. There is no CMaj7 button. There is a C7 (like the D7). There is a CMajor button. Please clarify what you want here.

    In the mean time I think I can demonstrate what you are trying to see in a simpler way.
    1. Press CM and hold
    2. Press C7 and hold
    3. Release CM
    4. Release C7

    Below is the MidiWrench data. You should see:
    1. when the C7 is pressed only the 7th of the chord is sent as a note on.
    2. When the CM is released Nothing is sent to MidiWrench
    3. When C7 is released only then are all the note off signals sent

    I think this prohibits using chord analysis of the buttons for double or triple button presses necessary for the FLY system as I understand it.

    However your observation of many notes being unique in the freebass Minor 3rd setup is very interesting to me.

    This would make chord analysis unnecessary.
    A limitation of this setup is that ALL of the rows must be on the same midi (freebass) channel.
    The fact that notes repeat after the 12 tones is a normal consideration to me.

    What would help with ideas that I have is the ability to play any bass note and have it remapped to another note or chord.

    One possible way to do this would be to dial up the original bass note on a Mozaic dial and then dial up the midi notes to be sent out on more dials.

    Perhaps another dial to change midi output would be useful.

    I realize this is a radical departure from what we have been talking about but it could prove useful and seems to me could be much simpler. Your thoughts please.
    Thanks
    Bruce

  • Hi Hes
    Sorry I am little out of sync with these messages.
    Concerning using the freebass minor 3rd system (I believe they all work this way)
    If a button is held down and a second identical button is pressed there is no

  • Hi Hes
    Sorry I am little out of sync with these messages.
    Concerning using the freebass minor 3rd system (I believe they all work this way)
    If a button is held down and a second identical button is pressed there is no Midi note on message sent. There is one midi note off message sent only when all identical buttons have been released.

  • Regarding this version

    https://gist.github.com/hsitz/2823309c45bc435350abc47ca9dbcda1/raw/442218e0e909fea9ad12eabab0b580a5f874effd/FB-to-fly-system.txt

    Every time a play only one freebass note this error is logged many many times.

    [OnMidiNote] Syntax Error : unknown or invalid argument “ “

    What should I look for.
    Bruce

  • @Bellows said:
    Concerning using the freebass minor 3rd system (I believe they all work this way)
    If a button is held down and a second identical button is pressed there is no Midi note on message sent. There is one midi note off message sent only when all identical buttons have been released.

    Damn. Of course, I should have realized that, same problem we had with Stradella. That limits the functionality of Row 6 even more, though there are probably some things that could be done to get some ability to play row 6 as single note an octave up from root.

    Regarding the syntax errors, it sounds like another copy pasting problem, the code should work fine.

    You might try opening the link in Safari (which is what I do), do select all, copy, go to your Mozaic, click the 'New' button at upper left to start blank project, then paste the code in after the @OnLoad . . @END and save new project.

Sign In or Register to comment.