In addition to bug fixes and other improvements, one major improvement will stand out with the coming 2.1. update.
Although it was first estimated to take a couple days, we are now six weeks into reworking the figure recognition algorithms (FR) from the ground up. It's pretty complex stuff and frustrating work at times (symbolic A.I. clustering algorithms, self-organizing networks and such), but now that there finally is light at the end of the tunnel, I can say the results will be awesome!
The FR has always been one of the weaker aspects of Synfire. It somehow limited the quality of phrases you got from import and recording. Although it was possible to tweak the results, it's not something beginners would do. This became obvious while we were preparing for a new tutorial video, so something had to be done about it and it had to be done fast.
Now the hard work is bearing fruit. FR will be significantly better and import will be faster (some results are even better than my own manual tweaking). I'm really looking forward to the update. Just wanted to let you know the reason for the silence lately.
Tue, 2023-02-21 - 20:49 Permalink
Sounds great! Thx for the short update.
Tue, 2023-02-21 - 20:54 Permalink
I would suggest keeping the 2.0 figure recognition algorithms still available as an option, if possible. Just in case...
Tue, 2023-02-21 - 21:28 Permalink
Seems like Kim has had some words with you.
Wed, 2023-02-22 - 06:22 Permalink
Genuinely excited that the figure recogniton algorithm is being remodeled. This has been one of the most frustrating features for me to attempt to operate. So often the files I attempted to import deviated in varying degrees from the original MIDI file. I saw a few tutorials about how to manually "fix" the figures after import, but they weren't very helpful. It seemed like I would have to spend so much more time tweaking the figures than making music that it all felt pointless. I was at the point where I was ready to give up on importing MIDI files altogether and just use the Factories for inspiration. Can't wait to test it out (and any other new features) when 2.1 is released.
Wed, 2023-02-22 - 10:02 Permalink
Fantastic news, I have tried on occasion to import sensitive piano music, where it's just those few notes that define the character.
Unfortunately that did not succeed in getting the original back in Synfire , no matter what I tried to set for character recognition.
Ideal is a 1 to 1 translation of the midi data, but that is not feasible as it turned out.
Am curious how the quality of figure recognition is now.
Wed, 2023-02-22 - 20:53 Permalink
Just to keep expectations realistic: Import will remain a tool to generate new phrases. Importing a complete arrangement with the intention of editing it faithfully is impossible. Figure is an algorithm, not a notation. Reconstructing an algorithm from MIDI data will always be an approximation.
But voice separation and pattern recognition will be much better. Less artifacts, more musically meaningful abstractions, etc. Melodies resolve better into individual segments. That already makes a big difference.
Thu, 2023-02-23 - 05:01 Permalink
I'm okay with all of this. In fact, I like the idea that the rendered figure is not an exact replica of the imported MIDI file. It can add some variation and originality. My issue with the current algorithm is that the figures were at times so convoluted that they were not useful for creating my own variations. I found that this was espcially the case with piano MIDI. The interpreted figure would be divded among different segment types in odd places, making it diffcult to rearrange into something new. If this new algorithm creates variations while interpreting MIDI files, I'm all for it. I just hope the figures it outputs more closely resemble conventional figures that are found in the library and are much easier to handle for my own variations.
Fri, 2023-02-24 - 19:30 Permalink
I'm very much looking forward to this update, but I may have to resist the urge to recreate all of my libraries from scratch. I guess I'll process a few test cases and see if the new imports are really all that much better.
Sun, 2023-02-26 - 10:25 Permalink
I would suggest keeping the 2.0 figure recognition algorithms still available as an option, if possible.
The current algorithm turned out to be full of obvious errors. That alone makes the reworked version more reliable and effective. You will not want to go back.
Exponential complexity is difficult to tackle (known as NP-hard problems). Symbolic A.I. is largely based on hand-crafted and statistically aggregated rules and assessment functions, which can do real magic without involving randomness (deterministic), but it's somewhat of a bottomless pit when it comes to fine-tuning. At some point we need to say: It's good enough, let's move on. We are about to reach this point now.
Sun, 2023-02-26 - 12:46 Permalink
I've always thought of figure recognition as a kind of phrase generator. Namely, one that generates phrases roughly based on a given MIDI file. For composition purposes, this is much more useful to me than having the figure recognition just exactly reproducing the original data. So, with other words: If the phrases generated with the new algorithm will sound more like the original than before, it will probably just be more work for me to make them NOT sounding like the original.
But we'll see, I'll also do some comparison tests then. Which of course would be easier if you could install different Synfire versions at the same time.
Sun, 2023-02-26 - 19:54 Permalink
The focus is on making phrases more portable and reusable. Bass figures are more centered around the base line and chords can be abstract (Simplify Chords), or more faithful to the original (user choice). That inevitably makes them sound different from the original. Voice separation does a better job, so counterpoint phrases are segmented more meaningfully. It really makes a difference.
The choice of anchor is also improved. It recognizes idioms and recurring patterns. Results sound great.
Sat, 2023-03-11 - 13:38 Permalink
Musical pattern recognition and voice separation really is a bottomless pit. We could easily spend a year more on researching and optimizing this, but now is the time to draw a line and come to a close. I will post a few before vs. after pictures soon.
Sat, 2023-03-11 - 17:54 Permalink
Any idea when we will see the release?
Sat, 2023-03-11 - 18:41 Permalink
Not quite certain which I'm anticipating more: the release of Starfield or the release of Synfire 2.1 . . .
In all seriousness, I appreciate the work you've been putting into restructuring the figure recognition algorithm. This will take Synfire to the next level. Besides, you'll always have Synfire 3 and beyond to continue further R&D into this feature, right?
Sat, 2023-03-11 - 19:43 Permalink
Tests are running. Currently batch-importing some 100k MIDI files. Hope not too many issues will pop up anymore.
Sun, 2023-03-12 - 16:12 Permalink
Thanks for all your work improving this software continuously!
Sun, 2023-03-12 - 16:31 Permalink
The thing is, this is actually fundamental research which is usually funded by universities and ambituous scientists. It is not common that a small software shop does any of this on their own. But apart from the usual machine learning algos and a few mediocre (and old) papers, there is not much scientific progress in the field. Probably because there's not much money to be made (I mean, no fictional billions you could pitch to investors).
Sun, 2023-03-12 - 17:37 Permalink
> It is not common that a small software shop does any of this on their own
I understand where you are coming from. Anyway, according to Paul Graham "A startup is a small company that takes on a hard technical problem." ((http://www.paulgraham.com/wealth.html?viewfullsite=1))
Sun, 2023-03-12 - 17:48 Permalink
One or two hard problems would be nice. With a dozen you may never get the job finished ;-)
Sun, 2023-03-12 - 18:23 Permalink
A lot going on these days .
Eduardo Reck Miranda
Handbook of Artificial
Intelligence for Music
Foundations, Advanced Approaches,
and Developments for Creativity
600 pages and 100+ contributors worldwide.
And you have to force Kim to use ChatGPT more . (LOL)
Sun, 2023-03-12 - 19:33 Permalink
Yep, that took rather long due to the pandemic...
Once users have access to KIM, I could perhaps be able to port main ideas presented in examples of chapter 11 of that book (on modelling harmony with rule-based programming) to Synfire.
(The last print preparations introduced various typos into that chapter, unfortunately. The preprint is more correct: (https://www.researchgate.net/publication/344714458_On_Modelling_Harmony…))
Sun, 2023-03-12 - 19:42 Permalink
Synfire already has a lot of harmony knowledge already built-in, but further custom factories on harmonic progression generation (e.g., supporting certain modulations) could be useful -- at least for me ;-)
Tue, 2023-03-21 - 17:48 Permalink
Looks like an interesting must have book, thanks for sharing the link to your paper. Great work.
At some point Synfire will employ more deep learning under the hood. But then again, discrete symbolic A.I. also has its advantages in a heavily discrete domain like music.
Tue, 2023-03-21 - 17:50 Permalink
The before/after pictures proved difficult because Synfire 2.0 can't open the newer Synfire 2.1 files. So here's a few screenshots instead.
Pattern recognition is much improved. Less clutter, more structured.
Complex phrases are nicely decomposed into repeating patterns. Reoccurring structures are detected and prioritized, i.e. the phrase basically defines what segments are most important and how they relate to each other. There is mind numbing NP-hard complexity behind this. I'm glad it finally works.
With melodies, the detection if reoccurring patterns is most visible. They break a melody down into musically meaningful (and for Synfire's rendering useful) segments. The phrases work much better with different Harmony now.
Piano comes nice and clean, almost like hand-drawn.
The algorithm still has weaknesses, though. This guitar picking looks like a mess, although it sounds great. It obviously misses the straight bottom-to-up lines because a few melodically meaningless notes happen to be sprayed in between.
If you encounter a messy result like this, you can always pre-group a few segments and run it again. Or activate voice separation, or try different options. With a little practice, it works for almost everything.
Tue, 2023-03-21 - 19:00 Permalink
Batch import now splits SMF tracks into useful smaller phrases (much more meaningful than before) and runs figure recognition on them individually for best results. Duplicate phrases are skipped automatically. This saves you a lot of time when sifting through the results.
The import turned out not to be that much faster (not as much as I hoped), but it's more evenly distributed over different types of tracks now. That almost-deadlock with millions of recursions has all but vanished (it happens from time to time, but not nearly as often). If so, it's a sure sign you picked the wrong algorithm for the phrase at hand.
My favorite import workflow is now as follows:
- Import a folder with 20-50 MIDI files into a new empty library (never save it - it's too huge).
- Open another new library and move only the good stuff over to it.
- Close and discard the imported library. Again: Don't try to save it. Saving a 500+ MB library takes ages and is not worth the hassle.
Thu, 2023-03-23 - 19:18 Permalink
Thank you. This all looks fantastic. Can't wait!
Wed, 2023-03-29 - 13:36 Permalink
Wed, 2023-03-29 - 14:28 Permalink
Kim (always online) or Andre (9-17:00 online) . Ok can you fire the algorithm on the piano midi? We split the midi in the past for better result.
I can do it but is the 2.1 demo already available
Wed, 2023-03-29 - 20:22 Permalink
Thanks for the example. The new algorithm encodes this quite well. The update will be released in a few days.
There are still issues with some Debussy piano stuff, but I'm not keen on going insane. At some point it's good enough for the 2.1 update and that's what is overdue now.
Tue, 2023-04-11 - 16:24 Permalink
The update is finally out. This was quite a marathon. It was about time. Those algorithms started haunting me in my dreams already. Now I can really use a few days off shooting the bow. Archery is great for clearing the head!
Here's the complete list:
I'll be in the office once a day, so if issues arise, post them here.
Wed, 2023-04-12 - 18:45 Permalink
I'm finding that everything imports as static pitches. I do not have the box checked that tells Synfire to do this.
I DO have the box checked that tells Synfire to create figures, but it's not doing this.
I've tried several imports, and it's always the same...static pitches, no figures.
Wed, 2023-04-12 - 19:25 Permalink
There's another switch "All Drums" you might need to uncheck.
Wed, 2023-04-12 - 19:40 Permalink
I didn't (and still don't) have the All Drums box checked either, but the problem remains.
Wed, 2023-04-12 - 21:36 Permalink
Hi Andre. Halion 7 as a VST3 problem. The other format AU is not problem but VST3 couldn't open anymore . Thanks.
Thu, 2023-04-13 - 09:47 Permalink
I didn't (and still don't) have the All Drums box checked either, but the problem remains.
The file may not include sufficient sound information. If it's GM, be sure to check that box. If not, you'll need to assign sounds to each track before starting the import.
Also, if you check and uncheck the "Static" switch, all tracks will be re-estimated.
Thu, 2023-04-13 - 18:00 Permalink
The files I'm trying to import are intended for one instrument...piano.
I've attached 2 files showing screens from the Standard MIDI File Import process. Please look them over and tell me if I'm doing something wrong.
On a related topic, I generally want the files I import to be sounded by a piano, but on every import Synfire sets the sound to some seemingly random MIDI instrument, and I have to reset it to piano. Is there some way to make Synfire default to piano?
Thu, 2023-04-13 - 18:02 Permalink
And here (attached) are the results of that import.
Thu, 2023-04-13 - 20:00 Permalink
Perhaps you can give the midi's ?.. for trying out
Thu, 2023-04-13 - 20:06 Permalink
Sure. Attached is one of the MIDI files I've been trying to import, specifically the file I used in the above example.
Thu, 2023-04-13 - 20:36 Permalink
I imported the file and click on the filename of the midi and the tickboxes for Import Track and Harmonic Content are selected
Preset : auto: Keyboards( main melody) to start with
Sounds slightly different then the original ?
I noticed in your screenshot that the figure symbols seems to be not connected with lines ( because it is a white screenshot ?)
Its a take and after figure recognition it becomes a figure.
If you do have a take then you must process again this by the figure regocnition : see button Apply
Thu, 2023-04-13 - 21:04 Permalink
I fully expect the results of a file import to sound somewhat (or perhaps substantially) different from the original MIDI file, and don't see this as a problem.
But my import settings specify that I want Synfire, as part of the import process, to convert the take into figures and phrase pools, as shown in the Settings jpg I uploaded. Thus the conversion to figures and phrase pools should not be a separate process that I have to do manually. This conversion is not happening, and this IS a problem. Always in previous versions of Synfire it was possible for me to do all of this in one step.
As for the "white screenshot," I have Synfire set to have a light background. That's why it looks different than you might expect, since apparently you prefer a dark background.
Thu, 2023-04-13 - 21:47 Permalink
Its basic working this pool construction in a library, so how about the online manual must give a answer .
Note : when i import your midi file then the pool option is greyed out.
Is there another place in Synfire for pool production?
Thu, 2023-04-13 - 22:33 Permalink
Yes, I can confirm that figure recognition at the library import does not seem to work. It works normally with arrangement import, though.
Thu, 2023-04-13 - 22:48 Permalink
Juergen: I believe I am seeing the same thing.
If I import into an arrangement, the "Create phrase pools" box is grayed out and the import process does produce a figure, but of course no phrase pool(s).
If I import into a library, the pools box is not grayed out (and defaults to checked), but no figures or phrase pools are created.
Thu, 2023-04-13 - 22:54 Permalink
"Is there another place in Synfire for pool production?"
I'm not sure I can answer your question. What I know about Synfire is dwarfed by what I don't know.
But I think we're both seeing different aspects of the same basic problem, which varies according to whether or not one is importing to an arrangement or a library.
Fri, 2023-04-14 - 10:18 Permalink
Disable Create Pools.
With only 60 notes and 5 measures in a file, there is not enough material to create a pool of phrases, which are usually 4m long each (on average). Synfire should still create one, though (will fix that).
Synfire can't guess a sound from notes alone. If the file contains no GM compatible program change, it needs to rely on the sound you assign it manually.
If you want to import large quantities of phrases for a single instrument, put those MIDI files in a folder on your disk and do a batch import with Create Figures disabled (create only Harmony and Take).
Then sift through the pools and select each Take to run figure recognition. That gives you more options to refine settings for best results. For example, the file you posted works best with Chord Segments enabled (which auto-detection doesn't get). It even gets better with the lower 2 voices tagged as Bass and Simplify Bass enabled (see image).
Much unlike text and images, there aren't millions of examples of MIDI to Figure mappings we could scrape from the Internet to train an A.I. model. Auto-detection is thus only a very rough guess.
Fri, 2023-04-14 - 11:23 Permalink
Pianist Performance Series
Good examples for Synfire!
Now i do a batch import of the new age piano midis using a library ..going fast 70 of them
Note: it is a little bit tricky to select the folder with as result that the import screen is showing up.
Featuring the piano styles of today in over 250 "live-to-MIDI" performances by top contemporary pianists.
Fri, 2023-04-14 - 12:28 Permalink
<Then sift through the pools and select each Take to run figure recognition. That gives you more options to refine settings for best results. For example, the file you posted works best with Chord Segments enabled (which auto-detection doesn't get). It even gets better with the lower 2 voices tagged as Bass and Simplify Bass enabled (see image).>
You must then recognize from the take ( and listening ) if there are chords in the take ?
A bass is there always ..and simplify a bass what does this mean?
For the probably right figure recognition applied on a take you must first follow some lessons about take segment structures after import.
Did a figure recognition, but is a purple symbol and cannot clearly see if it is relative or bass symbol. So those two colors are not handy choosen ?
Or is there another way to see what symbol type is involved?
Fri, 2023-04-14 - 12:55 Permalink
Ask myself if it in the library editor possible is to compare quick the original take with the processed take : do i miss something?
Fri, 2023-04-14 - 15:56 Permalink
Dear @janamdo, wanna share the SN-library afterwards with the community ?
As the PG files underwent a full processing and conversion I guess there should not be copy right problems.