MIDI import to phrases

RELATED
PRODUCTS

Post

I would suggest some additional features regarding midi import to phrases - an optional import dialog with options:
1. To select a root note and scale, which will serve as a reference point for importing (if C5 is a root note, G4 would go to 2nd note of -1octave, and A4 to 2nd note of -1octave +2 semitones);
2. Split imported data to patterns of track 1…8 (split by 1/2 bar, 1 bar, 2 bar and so on);
3. Add a menu option "Copy selection to another pattern", which will do exactly that :)

This software is AWESOME, and the capability to easily import any existing melody lead bass into it would result in tremendous increase of popularity.

Post

Agreed Dmitry,
We already have a midi import but that currently just imports the Rhythm. (flattens note pitch though)
Not sure about the technical details of how it would be handled within Nora which
has a pseudo piano roll.
Would be awesome though if it could be achieved. :)

Post

I've thought this year a lot about this and unfortunately there isn't any viable solution to import MIDI to the current Phrase editor. There is a simple reason for this, a "phrase" [relative Y axis] isn't a "score" [absolute Y axis]. There is no way to fit 120 general midi notes, in a 40 (8x5) Phrase notes. This would be the mathematical explanation. And there is another musical explanation: not all melody can be split into one or two phrases + chord progression. That's something I planned in the past, extract the phrases of a MIDI melody so you can play it with any chord progression you want. Since it wouldn't be an exact science because I would need to do aproximations for those melodies that cannot be split I leaved it for future versions.

I undertand I could think "Ok, I setup the Cmaj scale, where C3 is the lowest relative note of the central octave, E3 the 2th, and G3 the 3th, then any MIDI I import with such notes would be loaded with pitches". However this would be only useful with a very limited amount of MIDI files. If you setup each note/scale for each MIDI you want to import, it would be tedious - and I pretend Nora be fast!

However. I will do something about this for the next major revision :). In order to adapt better my efforts, I'd like to ask few questions:

1. Why do you want use Nora's Phrase Editor [Relative pitches] as a Piano Roll [Absolute pitches]?
2. Why do you want to split an imported MIDI in different tracks?

You can actually copy the selection to another pattern. Just select the notes, press Copy and go to the pattern where you want to copy them. Then place the Edit Cursor in the position where you want to paste the notes and paste them - does it work with you? If it doesn't, how would you improve it and why?

Post

I Can't speak for Dmitry but currently Nora can import a midi Rhythm but as I said it flattens the pitch to one line and any polyphonic material is lost.

Consider the following rather basic mono midi Rhythm.

Image

If that Rhythm is exported as midi and imported back into Nora then the following happens.

Image

If however Nora imported more like this or anything roughly resembling it:

Image

Nora allows up to 8 notes in the Phrase option, so in theory it has potential to vertically separate poly riffs without loss. I don't think real pitch is important just vertical spacing.

I think Dmitry's requirements are perhaps much more ambitious than mine :)
Having said that I have no idea how complicated importing a simple 1 or 2 bar poly midi rhythm into Nora using my idea would be? If its hassle forget it :)

Post

Well, it looks like you took the attitude of "not every file can be imported ideally, so lets drop the idea at all"? Let's agree on occasional message "Importing failed" :-) Declare the limitations of importing procedure and everyone will be fine with it.

It is obvious that all the complexity and variability of music material cannot be fitted into 5oct/5note grid, but I still prefer good import of pre-prepared files than nothing (and importing rhythm only is not good since you have to re-do the harmony, which is so time-consuming that makes importing unneccesary, I can make the stuff from scratch). "A very limited amount" of these files is near 10000 in my case.
If you setup each note/scale for each MIDI you want to import, it would be tedious
I am doing it anyway when preparing midi-files, and lots of midi-packs are key-labeled already.

Regarding your questions:
1. Why do you want use Nora's Phrase Editor [Relative pitches] as a Piano Roll [Absolute pitches]?
Eh, what? I dont need absolute pitches, I'd love to import a melody in one drag, have it imported with +1/-3 accidentials, and hear it sounding in different keys by pressing the chords. Maybe I misundertand your question, so please rephrase.
2. Why do you want to split an imported MIDI in different tracks?
Because in most cases the phrase consists of 4 bars, and splitting it to patterns is workable. The resulting patterns can be placed to any track, selectable on import. I mean, whithin import dialog there could be a selector of tracks, and the resulting patterns are placed there. I can move them manually anyway...
You can actually copy the selection to another pattern. Just select the notes, press Copy and go to the pattern where you want to copy them. Then place the Edit Cursor in the position where you want to paste the notes and paste them - does it work with you? If it doesn't, how would you improve it and why?
The way you describe is workable, but a little time&action-consuming. One-click operation (select notes > "place to anoter pattern" = new pattern with data) is much faster. If your software is about speed, any speedup of workflow should be good.

Post

I've read carefully your replies, and I've meditated them. Please notice that for me it's more easy to keep the note pitches instead flat them. The problem is where I should place them.

Regardings kurodo post and this:
dmitriyK wrote:Well, it looks like you took the attitude of "not every file can be imported ideally, so lets drop the idea at all"? Let's agree on occasional message "Importing failed" :-) Declare the limitations of importing procedure and everyone will be fine with it.
It's true I could do inverse engineering from an arpeggio and extract the phrase behind it as you suggest, if I know the chord that was playing it. It's a simple but not easy 3-variable equation. However, others with complex MIDI sequences the user could unknow the driving chord, or can use more notes than 8 in one octave. In such case the generated phrase would be wrong, or could not fit the phrase's octave. In such cases I should show the "import fail" message, which personally, I prefer to avoid.
kurodo wrote:Nora allows up to 8 notes in the Phrase option, so in theory it has potential to vertically separate poly riffs without loss. I don't think real pitch is important just vertical spacing.
If real pitch is not important then actually I know how to place the notes with the same 8-note and 5-octaves restrictions: everything outside them would be deleted. The problem (for both cases) is when someone imports a complex MIDI file. It even doesn't need to be complex. Let's see this example:

Image

If you import it to Nora without the driving chord information it would have this form:

Image

While it could seems satisfactory at first glance, you don't want that (I think) but only the first bar which is the phrase in itself. If you play the full phrase instead with the Cmaj, then the Amin, it wouldn't sound as original. It would only sound if you deleted the second bar.

This is a simple example, with 1bar/1chord. But usually the melodies are much difficult, and the driving chords can be something like this:

Image

Imagine how would be the final melody! And how tedious would be writting in a popup window the chords that the melody is using.
dmitriyK wrote: It is obvious that all the complexity and variability of music material cannot be fitted into 5oct/5note grid, but I still prefer good import of pre-prepared files than nothing (and importing rhythm only is not good since you have to re-do the harmony, which is so time-consuming that makes importing unneccesary, I can make the stuff from scratch). "A very limited amount" of these files is near 10000 in my case.
So, as I explained to kurodo, would you like having something like my first example I did with pictures?
dmitriyK wrote:Eh, what? I dont need absolute pitches, I'd love to import a melody in one drag, have it imported with +1/-3 accidentials, and hear it sounding in different keys by pressing the chords. Maybe I misundertand your question, so please rephrase.
You understood right. That would be what you would obtain with the method I explaned yesterday. A melody impoted with relative pitches with the following restrictions:

- The original melody could not have chord variations (you should manually delete/flat them from the original melody, OR from the final phrase).

- Every note that exceed the 8th inside an octave would be deleted. The maximum range would be 5 octaves, everything else would be deleted too.

The phrase octaves would be imported like this:

Image

Notice that the relative note distance wouldnt be keeped without the chord information. I'm doing experiments into including chords in Nora, but it needs an huge amount of work yet. Once they're included I could offer a list of chords to select just one to import a phrase.
dmitriyK wrote:I am doing it anyway when preparing midi-files, and lots of midi-packs are key-labeled already.
What I was pointing is the fact that you must introduce them manually in Nora before doing the import.
dmitriyK wrote: The way you describe is workable, but a little time&action-consuming. One-click operation (select notes > "place to anoter pattern" = new pattern with data) is much faster. If your software is about speed, any speedup of workflow should be good.
While this is correct and I can do it in a couple of hours I have a design problem. Where do you place the resultating sequence? If you are in pattern mode, I would place it in any free Pattern Editor's slot (only if there is one). But if I'm in the Playlist mode, where do you place it? At the end of the track?
dmitriyK wrote:Because in most cases the phrase consists of 4 bars, and splitting it to patterns is workable. The resulting patterns can be placed to any track, selectable on import. I mean, whithin import dialog there could be a selector of tracks, and the resulting patterns are placed there. I can move them manually anyway...
I'll think about it, but I'll avoid using an import dialog for this. It's better something based in the cut tool (Shift + Right mouse button). You will spent the same time setting up how to divide the sequence in the import dialog that simple doing shift + right click in the point you wish. It would need a consolidate action, tho.

Post

squaredheads wrote:
If real pitch is not important then actually I know how to place the notes with the same 8-note and 5-octaves restrictions: everything outside them would be deleted. The problem (for both cases) is when someone imports a complex MIDI file. It even doesn't need to be complex. Let's see this example:

Image

If you import it to Nora without the driving chord information it would have this form:

Image
Speaking purely from the point of view of a simple 1 bar non complex Rhythm sequence your above example looks spot on and would greatly improve on the existing method. Real pitch is a luxury best left to the Daws piano roll. :)

I doubt anyone would mind sliding just a few notes around here and there just as long as the dna of the imported 1 bar sequence was roughly in place and hopefully it wouldn't require too much effort to code and incorporate into Nora?

As long as the import was labelled something like "import simple 1 bar rhythm sequence" or something like that most end users would understand that any attempt to load in a complex score wouldn't achieve the best results.

Ultimately though the choice is obviously yours, if you think the effort in coding wouldn't add much value to Nora I understand as this request is probably a niche kind of thing. :)

Post

First, lets get done with something simple:
Where do you place the resultating sequence? If you are in pattern mode, I would place it in any free Pattern Editor's slot (only if there is one). But if I'm in the Playlist mode, where do you place it? At the end of the track?
Well, I think the resulting sequence should always be placed in the first free slot of pattern editor (and never mess up with playlist), in the same track as the active sequence. In short, if I'm currently editing pattern residing in track 3, the resulting sequences should go free slots of track 3.
I'll think about it, but I'll avoid using an import dialog for this. It's better something based in the cut tool (Shift + Right mouse button). You will spent the same time setting up how to divide the sequence in the import dialog that simple doing shift + right click in the point you wish. It would need a consolidate action, tho.
Oh, sorry, I never really meant import dialog has any relation to this. Import dialog (with per-bar splitting options) has place only when drag'n'dropping midi data from outside, but never in such a simple operation like auto-creating patterns from selected notes, that should be 1-click action...

Now about importing: the more I think about what I wrote, the more I see that I was daydreaming :dog: and unrealistical.

The best way to import even the simplest sequences I have is supposedly:
1. Split the imported data to chunks of 2 bar or less.
2. Analyse these chunks individually, and guess that the mostly used note in each chunk is the «local» key.
2a. Get highest and lowest notes, and the key note somehere around the middle of those is 0,0 (= first note of octave 0), and all the others are placed in relation to it.
3. If you know the «local» key, probably you can fit the notes to some scale, there are only a few to use, this can help to set accidentials if there are any.
3. Try to squeeze the 7note scale to 5note grid :clap:

Or there's a simpler way:
1. Split the imported data.
2. Guess the key (set the base point).
3. Ignore the intervals between notes and put them one next to another (octaves still have to persist in the result, G2 and G4 should go to -1..+1 or -2..+1). Still dont know what to do with accidentials...

So, you can turn this:
2016-03-02_134825.png
into this:
2016-03-02_135839.png
or
2016-03-02_135920.png
-----------------------------------
Anyway, currently imported data is not good for editing: the only way to select a few notes at once is ctrl+drag, but all the imported notes are in one row, so I end selecting all, not the only ones I want to transpose… CTRL+click doesnt work to select individual notes, which is strange.

And: you should ignore empty space at the start of imported midi-files, I suppose.
You do not have the required permissions to view the files attached to this post.

Post

I will reply properly in a couple of days. I'm too focused in a threading problem that request all my neurons :)

Post

I'm still thinking about this... I will reply as soon as I organize my ideas

Post

Well I think this question is only to think about, since there's a lot to do without it. I've recently being pulling my hair off while trying to import something slightly complicated into Nora and been disappointed a few times.

1) Pattern label name should be bigger, dont you think?
2) MIDI drag to pattern editor does not work (does not create a pattern), which is counterintuitive.
3) Splitting imported midi's to patterns by track/channel is as much (if not more) as important as anything I've been writing about before. Lots of midi data I have is multitracked (MIDI_0 split by channels or MIDI_1 split by tracks). Since drag'n'dropping selected notes from Reaper directly is now impossible (and not exactly needed most of the time) splitting those tracks/channels to patterns is good.

I think its mostly rare to have more than 3-4 tracks in a midi, so splitting imported midi to tracks (horizontally in pattern editor) and by 2 bars (vertically in pattern editor) seems to me like a good idea. If Nora would keep note heights at least (not squishing everythin into one row) (obviously that should be done per-pattern, after splitting) that would be awesome :)
nora-demo-graphic.gif
You do not have the required permissions to view the files attached to this post.

Post

Thanks for the diagram. It's crystal clear for me what you pretend to do with Nora. I'm still thinking on paper this, but this is my summarized progress so far:

A) Importing MIDI note information is possible assigning it to raw relative pitches, with the next limitations:
-1) Only up to 8 notes per octaves, everything else would be ignored.
-2) Only taking the 5 lowest octaves with contents from the MIDI file, everything else would be ignored.
-3) Any driving chord variation would be ignored.
-4) Key / scale cannot be detected (once i develop some functions for this for another feature, then I could use them here).

Phrase sequencer is just that, a phrase sequencer that change with the incoming chord.
The best way to import even the simplest sequences I have is supposedly:
1. Split the imported data to chunks of 2 bar or less.
2. Analyse these chunks individually, and guess that the mostly used note in each chunk is the «local» key.
2a. Get highest and lowest notes, and the key note somehere around the middle of those is 0,0 (= first note of octave 0), and all the others are placed in relation to it.
3. If you know the «local» key, probably you can fit the notes to some scale, there are only a few to use, this can help to set accidentials if there are any.
3. Try to squeeze the 7note scale to 5note grid :clap:
That wouldn't work propertly, because, not every music is written in 1bar/2bar-one chord fashion. And the local key in some cases... even is not used!

While I could add an action to the Pattern Editor to import in such fashion the midi, as you suggest in your diagram, it may work in the current version. However it wouldn't work with the changes I'm doing because the structures have changed drastically!

The reason you cannot drop a MIDI file in pattern editor / playlist is because Nora wasn't prepared for them, and it shouldnt, it isnt a midi editor but a phrase editor.
dmitriyK wrote:Pattern label name should be bigger, dont you think?
It will be improved. At the moment you can change its lenght using the size editor and saving the mod.

Post

If Nora could import data (is drag'n'drop from Reaper possible? to pattern sequencer?) to multi-line of any kind (not losing chords or notes) — that would be more than satisfactory. Key|scale was needed only to auto-set accidentials (+1), which is not neccessary.

Would love to see this
2016-03-13_110633.png
converted to
2016-03-13_111148.png
or even this (the key range is filled proportionally, not consequentially)
2016-03-13_110549.png
You do not have the required permissions to view the files attached to this post.

Post

It's possible transfer by drag and drop to another software only if they use a common protocol. The simplest one is by file dragging. If you can drag from Reaper to your desk any clip, then it's possible do it in Nora.

Anyway. Let's think for a moment. Imagine that Nora could import a melody and it fills the 8 notes from the octave. And now it's the moment to trigger it with a different tonality. How would you do it? Creating an 8-note chord progression in the host?

That sounds for me a little tiresome. But if the answer is yes, I think I have the ideal solution to solve this problem, and avoiding the nuisance of moving such amount of midi notes.

Post

It's possible transfer by drag and drop to another software only if they use a common protocol. The simplest one is by file dragging. If you can drag from Reaper to your desk any clip, then it's possible do it in Nora.
Oh, didnt understand that. That seems not possible in Reaper or Ableton :-)
Imagine that Nora could import a melody and it fills the 8 notes from the octave. And now it's the moment to trigger it with a different tonality. How would you do it? Creating an 8-note chord progression in the host?
Let me explain.

For me Nora is a live (aka realtime) composition tool, which is used to understand in real time how different sequences in various tonalities/scales sound with the existing material. So I need to import a sequence to Nora the best way possible (from rapidcomposer for example, this is why i'm asking for chords to keep), and then I'll press a 5note chord manually (or use one of the many "chorderizers") and listen. Press record if I like what I hear… I can even do keyboard splits to input 3-4note (scale-based) chords from the leftmost octave via chord generator, and input additional non-tonal notes from the remaining keys… Really chord sequences are kept in sequencer only for future reference, the real material is almost always rendered to actual note arpeggios and stuff, tweaked and edited afterwards with CC's or automation curves per clip or whatever.

I can use as many chord generators or as many keyboards I have, so input up to 10note chord is not a problem, and it's not tiresome at all. Everything I suggest — from proper midi import to phrases to one-click pattern creation from selected notes — is practice-based need.

Locked

Return to “Squaredheads”