• Welcome to the Pipe Organ Forum! This is a part of the open community Magle International Music Forums focused on pipe organs (also known as "church organs"), organists, organ music and related topics.

    This forum is intended to be a friendly place where technically advanced organists and beginners (or even non-organists) can feel comfortable having discussions and asking questions. We learn by reading and asking questions, and it is hoped that the beginners (or non-organists) will feel free to ask even the simplest questions, and that the more advanced organists will patiently answer these questions. On the other hand, we encourage complex, technical discussions of technique, music, organ-building, etc. The opinions and observations of a diverse group of people from around the world should prove to be interesting and stimulating to all of us.

    As pipe organ discussions can sometimes become lively, it should be pointed out that this is an open forum. Statements made here are the opinion of the poster, and not necessarily that of the forum itself, its administrator, or its moderators.

    In order to post a new topic - or reply to existing ones - you may join and become a member by clicking on Register New User. It's completely free and only requires a working email address (in order to confirm your registration - it will never be given away!). We strive to make this a friendly and informative forum for anyone interested in pipe organs and organ music.

    (Note: If you wish to link to and promote your own website please read this thread first.)

    Many kind regards
    smile.gif

    Frederik Magle
    Administrator

    Krummhorn
    Co-Administrator

Software for loop/cue handling

L.Palo

New member
Hi!

There are a few alternatives for checking loops and cues embedded in wav file headers, most of them are not free or very limited. Besides, more or less no such software exist for Linux.

Therefore I've written a small application, LoopAuditioneer, that allows the user to review all loops and cues in wav files intended for virtual organs (like GrandOrgue). The user can listen to the loops and cues, select which to keep, save the file back or save as a new. Build files for both Linux and Windows are available.

It's possible to set new cue markers by right clicking on the waveform and selecting "Add cue" from the popup menu. Already existing markers can easily be moved by left clicking in the marker flag (on the waveform) and then again left click at the new desired location.

New loops can be created and already existing ones start and end positions can be edited. Even so, it's not a great idea to search manually for good loop points. Instead it's better to use another software, like for instance Nick Appletons Autoloop for batch finding a set number of loops and then use LoopAuditioneer to select the loops one wish to keep.

As such, LoopAuditioneer does not find any loops automatically. It's use is mainly intended for reviewing files that already have loops in the header, as well as marking/editing the release. Thus it can possibly make the use of Autoloop more efficient.

LoopAuditioneer is a free software licensed under GNU/GPLv3 and is available at sourceforge. Testing and any feedback is highly welcome so that the software can be improved!

Kind regards

Lars P
 

JayR

New member
Lars,

Thank you for this quick overview. There are a few percussive stops that don't work well on my console, and I would have to create loops in each of the samples to prevent double-hits when I press and release the keys. When I get a chance, I will try out the two programs you mentioned in your post.

Thanks Again,
Jay
 

sesquialtera

New member
Thank you for this free tool, it will be very usefull ! :eek:

I used "ExtremeSampleConverter 3.5" to create the loops points af my samples.
It's not free, but it can find all the loops of one stop in about 5 minutes...
( It is very fast for low notes, and becomes more and more slow for high notes. )

Nick Appletons Autoloop works fine, it can find a lot of possible loops in one file,
and you can check the results to choose the best one...
but it's not free either, the demo is very slow. (files one by one )
 

L.Palo

New member
Hi!

There are quite a few windows applications for automatic loopfinding, and very few of them are free. But Nick Appletons Autoloop is free, check the link! The bad news are maybe that it's a console application that's best used with the batch files supplied with the application. (The files must be named as the ones in the batch file for it to work, or the batch file must be modified to suit your file names...)

To make the most of multi core computers one should actually run multiple instances of the batch files at the same time (but on different stops, or divide the wav files for a stop into more batch files and then run them simultaneously in different instances of the console terminal).

There are no possibility to see what the loops/cues written to file are in Nicks Autoloop, therefore I've created LoopAuditioneer. Even SoundForge (9 version at least) is severly limited and only allow 2 loops to be present in a file at the same time.

LoopAuditioneer has a limit of 16 loops in a file (due to libsndfile limitations) and of course Nicks Autoloop can only set 8... But that's more than enough! The main idea is to be able to create a few loops and be able to choose which one(s) to keep. Sometimes there are unwanted parts of the wav file that one doesn't want to be looped even if it can be seamlessly done.

So both Autoloop and LoopAuditioneer can be used feely! And both on windows and Linux (you'll have to ask Nick for Linux binaries if you want them though).

Some trial versions of good loopfinding software doesn't allow saving the found loops until registered and payed... But if you somehow know what the loop points for a good loop are... then you can now write them with LoopAuditioneer! ;-) I prefer to use free software if I can though.

Kind regards

Lars P
 

Krzysztof

New member
Hi Lars. You've got a nice idea...
Currently I'm trying to build LoopAuditioneer step by step.
Perhaps you are going to extend it's functionality? How about adding "find loops" function? It could be done with Nicholas Appleton's Autoloop. I know the author prohibits modifying his program or redistributing it in changed form, but a user could install it separately, then LoopAudioneer could invoke it in command line. Autoloop can run without saving loops, just showing the info on stdout. So the only task is to parse it's output (I did it some time ago, actually don't remeber why).
I'm dreamimg about about a complex app dedicated to preparing GrandOrgue stops, including looping, tuning, applying equalizer, stereo effects etc. Maybe it's the beggining?
I've been reading the source code. I don't have sourceforge account, so (sorry) I'm posting some programmer-sprecific details here...
First, some questions.
Why to hold entire list of cuepoints? I thought GrandOrgue uses only one of them (the last) as a release marker.
Can I create a backward loop (start > end)? :)
Is the famous RMS power really equal to signal squared? I've read many formulas, but still don't understand it.
How does closing file after save work? Are we waiting till the program terminates?
And, I think some parts of the code could be written in a different way (for ease of changing it), for example using copy constructor of CUEPOINT is shorter.
There are many magic numbers in the code; I believe some of them are libsndfile curse. But other ones could be removed. I've noticed a funny hack, instead of 1635017060 you can write 'atad' (yep, that's a multibyte character constant) which stands for data chunk id in reversed byte ordering.
Finally, someting that could generate errors:
- in FileHanding we create only one data array, but destroy three...
- MIDIUnityNote and MIDIPitchFraction occupy 32 bits in wave file, but getters/setters use char data type

Meanwhile I realised I need some libraries for the build...

Thanks and best wishes,


Krzysztof
 

L.Palo

New member
Hi!

Great to see some interest!

I've been thinking about adding some automatic loop finding in LoopAuditioneer, but so far I've not spent so much time researching the necessary algorithms. If anyone has suggestions for it I'd be happy to implement it at some stage of development.

Using Autoloop for just the info is something I didn't know about and under the present licensing it's possibly questionable also to have as a dependency. The first idea for LoopAuditioneer was only to simplify the use of Autoloop as a freeware for sampleset production but not have to have it installed to use the LoopAuditioneer features.

I too would find it nice to have a software that can handle everything needed for sampleset production (and that's free, preferrably open source and can run both on Linux and win). However that's a huge task, and I hope that LoopAudtioneer is a step forward at least (in the general Unix manner of providing applications that's specialized and perform one task well).

I choose to store all cuepoints most of all because it's easy to do and I don't like software that enforce severe limitations on it's user. One day we might have use for more than one cue, but for now it's perfectly true that only the last one will be used by GrandOrgue.

There are lots of options for the loops (loop direction, pictch, midi note etc.) that's presently not used in any way. I've included them mostly for the sake of completeness and if one at some time would actually need to use them. But many would also require some change in the libsndfile depenency library also. Presently they are not needed for GrandOrgue so... It's no high priority. But loop direction is possible to control in libsndfile so it would be easy to set, but there's no big use for it in GrandOrgue, is it?

As I've understood it RMS power is the signal squared, yes. The square makes it easy to use since one can then ignore if the signal is positive or negative when comparing it's strength.

The filehandling in LoopAuditioneer works like this. First the file is opened for reading only. At that point we extract the loop and cue info from the header and store it away. Then the audio data is actually copied into memmory. One of the dynamic arrays are used depending on the data type in the audio file, all so that no quality should be lost. Then at the end of the FileHandling constructor the file is automatically closed (since I'm using the c++ version of libsndfile). If the user loads another file, all that was in the memmory will be deleted and gone, no changes to the original file. But if the user saves it to file then a new file will be created (with all the previous data of course) with a new header written. If the normal save is done the new file will overwrite the old with the same name, but if save as is selected the user can change name and location of course. With the c++ flavour of libsndfile a file is closed when the sndfilehandle goes out of scope, no special closing needs to be done.

Yes, many peculiar things comes from the use of libsndfile, but it's really great that we have it! It would otherwise have been much more difficult to write such an application as LoopAuditioneer. The chunk identifier sure is the 'data' chunk! (in reversed byte order, yes :))

The three dynamic arrays can safely be deleted as they are initialized to NULL and only the one with correct data type will be filled with data. (one can delete a null pointer)

The MIDIUnityNote and MIDIPitchFraction peculiarity again stems from how libsndfile is storing the information in the SF_INSTRUMENT struct (to optimize the library).

If you need more information to be able to compile LoopAuditioneer I can answer in private mail so that the too technical things doesn't bother others.

Kind regards

Lars P
 

L.Palo

New member
Hi!

Yes, I've used Samplelooper from pipeloops quite a lot, but my main issue with it is that it crashes very often on my win7 laptop. Even if I run the program as Admin and in XP compatibility mode. Not so funny!

And if possible I like to completely use Linux instead of windows, as well as use free and well functioning programs.

So, if any of you get LoopAuditioneer to crash unexplainably I'd like feedback on that!

Kind regards

Lars P
 

Krzysztof

New member
Ok, I've run the soft and it's doing what it should do.
I've built it on the latest Ubuntu and wxWidgets 2.8.
Maybe the wxWidgets version is what caused some interface problems: a menu bar (initially invisible) appears after the mouse enters app's window and the filenames list collides with the statusbar.
I've done some tests. First, save a file without changing. The result was (of course:) ) different. There were some minor changes - like removing unnecessary bytes from the header, or changing indices of loops/cuepoints, or rearranging the chunks (not so bad), but what makes the trouble is removing unknown chunks. For example, the SAUR where Wavosaur stores it's edit data... What could be predicted, is that the audio data is intact, exactly byte-by-byte identical. That data is also prevented when adding loops.
Next, let's try to make an "unexplainable" crash: take an empty file and call it a.wav, or take a wave file and corrupt it twisting some single (important) byte. The result is always the same: the app's window disappears. The crash occurs on floating-point arithmetic error.

Hope that helps.

Krzysztof
 

L.Palo

New member
Hi!

Thanks for the feedback.

The menubar problem is likely to be an effect of Ubuntus use of Unity that's not 100% working as expected with different apps or frameworks. I've noticed that sometimes the menubar does appear in the application window and sometimes in the top bar of the desktop. That integration problem with Unity will likely get better with future releases of Ubuntu.

The differences between an opened and saved file is again due to libsndfile. But the audio data itself should not be changed! The header could very well be changed in ways that are not importand to how the audio file should function in GrandOrgue. But again this is libsndfile behaviour (and possibly for the better since it should be completely standard compliant!).

Try checking the audio data in a hex editor and see if the real audio data is the same or not. It "should" be the same byte for byte. (At least I know that a file created with libsndfile does not change in any way when saved as... with LoopAuditioneer, but unneccesary metadata from for instance SoundForge or Wavosaur is intentionally discarded) :)

About the crash of a false wav file (or one that's malformed), that's a good catch! I'll have a look at that for the next release to catch a faulty file (that libsndfile cannot handle) and discard it as not recognized with a proper message and correct handling (not trying to open it in the app).

Kind regards

Lars P
 

L.Palo

New member
Hi!

Now I've committed fixes for the application crash when a false or faulty .wav file was selected for open. The app should now notify the user of the problem and handle the situation properly, I hope.

New build files of this (0.5.1) version are available under Files. As usual on Sourceforge http://sourceforge.net/projects/loopauditioneer/.

Otherwise there are no new features in this release.

Kind regards

Lars P
 

L.Palo

New member
Release of LoopAuditioneer 0.6

Hi!

I've now released a new version of LoopAuditioneer with the added possibilities of autosearching for good loops and batch processing all wav files in selected folder.

Some small irritating bugs are also fixed with this release.

I've used some optimisation flags when compiling this time, so it would be nice to hear if it works okay, or if there are any problems.

As usual the files are on http://sourceforge.net/projects/loopauditioneer/

Kind regards

Lars P
 

Ghekorg7 (Ret)

Rear Admiral Appassionata (Ret)
Hi Lars !

Version 0.6 rocks !

Its auto-loop function works great = good news for many members here asking for a good auto-looper with an easy to work GUI.

As far as I remember two apps suggested most : Zero-x and the Pipeloops one. Both not available and of course commercial.
Nick's was the only game in town then, but although very good , was difficult for many of us who want the easy and clear GUI image with many fast workin functions and options.

So with this version of Auditioneer all the above are history.
I like very much that it gives me at least 5 loop sections to choose and that it can play the cue for the release point.
Also it saves..... safely (!) not like the way Zero-x did which crashed the system if a marker was in, or it corrupted the file after saving with the loops and so GO couldn;t load the file causing another crash...... hmmm
Also Pipeloops app was very unstable.....

Your user guide is well written and very usefull for those not so familliar with the looping procedure and indeed how to adjust the relavent controls.
Ok, I would like this guide as a pdf file, kinda more illustrative (rolleyes) but this is not an issue though, it can be done in just a minute :) , no?

So, overall a winner and more than one , as it is free for all !!

Best and cheers
Panos
 

L.Palo

New member
Hi!

Thanks for the review! I hope this software will be useful for many.

I've created a straight dump from the browser to pdf so it's not any great design but it's readable offline at least. I'll try to attach it to this post, though I greatly recommend visiting the webpage from time to time as I'll likely rework the userguide when new releases are made.

View attachment userguide.pdf

Kind regards

Lars P
 

Ghekorg7 (Ret)

Rear Admiral Appassionata (Ret)
Hi Lars,

Thanks for the pdf !! Off line work was the aim, not that saving the web page cannot work offline with a net browser.... he he, I just like pdfs :)

Visiting often the site where a program is downloaded, is a must for any user. Info for updates, add-ons, new features ect is vital for that program's evolution and smooth operation. Only that the site owner/programmer/dev has to update the relavent pdf also !!! - (Hermann Seib does that with any update).

More report will send as evaluation continues...... for example I cannot scroll down loop list after I go to max screen..... hmm I had to go to a medium window , like the one it shows when first open loopauditioneer.

Also, it suffers a tiny mini crash after every closing. Not a problem as it opens again fast with no issues, but it is a crash. At first I thought the reason was that all loops were checked for saving and I didn't save any. But even if I do save or I close with un-checked loops (all or some) the same 6~12 sec crash (Freeze - white) then close, happens.

Those do not prevent me from workin' OK with it though. Work is fast and accurate and this is what I need. I get fine looped wavs and after a first quality check from loopauditioneer if they are ok to use or not.
For hard to loop samples it gave me 4 options on the spot !!!!!!!

Best
Panos
 

ggoode.sa

New member
Hi Lars,

At last I had an opportunity to test and enjoy your new work :) I used it on a Theatre Organ rank (Flute and Flute Trem) from MIDI note 024-C all the way to 120-C... I first tried out the batch option, which did fairly well on default settings (i.e. it found at least one loop per file). The rank is part of a set of recordings that have fairly high noise levels, so are difficult to NR, and therefore also difficult to loop. I then previewed the loops that the batch method had found, and then did manual tweaking of the settings to find better loops. The software works pretty well, but I found that I missed the loop sectioning that is available in SampleLooper (i.e. section A looks for loops in the first portion, section B in the middle, and section C looks over the whole wave). This is useful when there are environment noises in the samples (doors closing the background, roof creaks, etc). Very nice app Lars!!

GrahamG
 

L.Palo

New member
Hi!

Great that you find the software working! The region selection sliders can be used to select what part of the audio file where the loops should be looked for. Even though the different parts cannot be done in one run at the moment, it's possible to use different settings for multiple runs.

But as you say, the best result usually comes from individually searching every note and tweaking the settings for that note. It's usually doesn't take so long to process one stop anyway.

Very nice to get some feedback though! If anyone finds something odd or not working, please do report it!

Kind regards

Lars P
 

Ghekorg7 (Ret)

Rear Admiral Appassionata (Ret)
Hi Lars, Graham,

Indeed when noise is in options are few to none in auto mode, but this is usual. Manually then, it helps a lot and gave me two options ! In a similar situation extreme sample converter 3.6 (has a good auto looper inside) failed and gives the old and odd close face to face loop (2 to 4 samples distance) !!!

I also like when in normal situations gives me a long distance loop points covering the 70% of the sample and in such a way to hear seamless !

Indeed I'm so impressed with this 0.6 version !!! time to clean up my computer from so many sample editors ect !!!!! :-D :-D

I think we got a winner here.
 
Top