A few basic questions after using OpenMPT for a few days

Started by chupo_cro, August 10, 2017, 00:42:07

Previous topic - Next topic

chupo_cro

Hi all,

my first post here. Although I installed OpenMPT for the first time just a few day ago I am not completely new to trackers. I did some 1-bit sound routines for ZX Spectrum back in the '80s, used some trackers with 386 + Soundblaster, made some sound routines for microcontrollers and used Beepola to make 1-bit music.

Now, after quite a while, I decided to check how modern tracker software works compared to the old ones so I installed OpenMPT and I was not disappointed :-)

After spending about 15 hours examining the UI and various options (and reading through the docs) I still have 8 short questions (the most important is #08):

#1 Selecting more than one channel in Pattern view?
I noticed it is possible to drag'n'drop channels in the Pattern view to change their positions. Is it possible to select more than one channel at once and then to move them all as a group? That is possible with the order list by using shift to select more than one entry.

#2 Auto select the instrument?
Is there a way to enable auto selecting the instrument after moving the cursor into the channel which contains only one instrument? It would be quite useful when editing the notes here and there. The modifier key to select the 'working' instrument in Pattern view by clicking on some note when holding the modifier key might be even better solution.

#3 Organizing samples into the folders?
I set the samples path but when I tried to separate the samples into the subfolders I couldn't access them from the UI. Is there a way to set the multiple paths or all of the samples must reside in the same folder?

#4 Remove patterns?
I noticed + and -  keys can be used to loop through all the existing patterns (plus --- and +++) and  when the cursor is in the order list. I tried to add the pattern and the only way to delete it was by using Cleanup command. Is there another way of deleting patterns so they don't anymore appear when using + and -? Remove pattern just removes the pattern from the order list but it is still shown when using + and - keys.

#5 Selecting notes from two adjacent patterns?
Is it possible to use the mouse to select the notes from both the pattern which is in focus and from the pattern 'above' which is dimmed?

#6 Volume and pan commands in the same row?
I tried to make four drum beats in the four adjacent rows of the same channel and to assign the different volume and pan parameters to the each drum beat but I couldn't. Is the only way to do that to use more channels?

#7 Chord Editor (Relative vs Note)
The docs and the UI mention Relative and Note modes of chords but I couldn' find where to choose the modes.

#8 Working with samples?
I tried to figure out how to use the Samples view to import the sample I made and how to use the Transpose drop-down list. I used Audacity to make a short 440 Hz sine wave sample and saved it as a .wav file. Then, in OpenMPT, I created a new sample, chose A4 in the Transpose drop-down list and dragged the sample into the view. As soon as I drag the sample the Transpose value changes to E7!? Why is that? To tune the sample to the right frequencies I then must use Sample Tuner to tune the sample to the closest C- and after the tuning the Transpose value is G7. I understand the sample has to be moved up by 3 half-tones (from A4 to C5) and there really is a 3 half-tone shift from E7 to G7 but why was E7 displayed initially when I imported the sample? I thought I could set the traspose to the pitch of the sample file (which is 440 Hz = A4) before importing the sample and the sample would sound correct. But that is not the case and I do not understand why the Transpose value after importing the sample always jumps to E7. I can see the supplied samples are already tuned to C5 but after importing them the Transpose value jumps to E7 anyway :-/
Chupo_cro

StarWolf3000

Quote from: chupo_cro on August 10, 2017, 00:42:07
#6 Volume and pan commands in the same row?
I tried to make four drum beats in the four adjacent rows of the same channel and to assign the different volume and pan parameters to the each drum beat but I couldn't. Is the only way to do that to use more channels?
That depends on the module format you use. All but MOD can make use of two effect columns instead of just one. In Fasttracker 2 (XM), you can decide which column holds the volume effect and which one holds the panning effect:

ModPlug Tracker  XM
|C-501v32850|C-501p20C20

In this example, the left one uses the volume effect in the first effect column (v32, vxx is volume effect in volume column, 32 decimals) and the panning effect in the second effect column (850, panning is 8xx, and 50h is decimal 80).
The right one has the same effect, but with volume in the second column (C20, Cxx is volume command in MOD/XM, 20h which equals 32 decimals) and panning in the first column (p20, pxx is panning in volume column, in XM ranged from 02 to 62 instead of 00 to 64 like in S3M/IT/MPTM).

Quote from: chupo_cro on August 10, 2017, 00:42:07
#7 Chord Editor (Relative vs Note)
The docs and the UI mention Relative and Note modes of chords but I couldn' find where to choose the modes.

Saga Musix

Hello and welcome. Phew, that's quite a big pack of questions!

Quote from: chupo_cro on August 10, 2017, 00:42:07
#1 Selecting more than one channel in Pattern view?
I noticed it is possible to drag'n'drop channels in the Pattern view to change theri positions. Is it possible to select more than one channel at once and then to move them all as a group? That is possible with the order list by using shift to select more than one entry.
Moving more than one channel at a time is currently not possible, no. There has been the idea of adding channel groups floating around for probably ten years now, which would solve this question, but it's difficult to implement.


Quote from: chupo_cro on August 10, 2017, 00:42:07#2 Auto select the instrument?
Is there a way to enable auto selecting the instrument after moving the cursor into the channel which contains only one instrument? It would be quite useful when editing the notes here and there. The modifier key to select the 'working' instrument in Pattern view by clicking on some note when holding the modifier key might be even better solution.
Two options: Press Quick Copy (Enter in the default config) to pick up the current instrument under the cursor, or use "pick up nearest instrument number" (no default key combination, I personally use Shift+Space for it).

Quote from: chupo_cro on August 10, 2017, 00:42:07
#3 Organizing samples into the folders?
I set the samples path but when I tried to separate the samples into the subfolders I couldn't access them from the UI. Is there a way to set the multiple paths or all of the samples must reside in the same folder?
The tree view is split in two halfs; by default, the folders are shown in the upper half under the "Instrument Library" folder (collapsed by default).
If you do not like this behaviour, right-click the first item in the lower half and select "Show Directories In Sample Browser". This will make the directories show up in the lower half as well.

Quote from: chupo_cro on August 10, 2017, 00:42:07#4 Remove patterns?
I noticed + an -  keys can be used to loop through all the existing patterns (plus --- and +++) and  when the cursor is in the order list. I tried to add the pattern and the only way to delete it was by using Cleanup command. Is there another way of deleting patterns so they don't anymore appear when using + and -? Remove pattern just removes the pattern from the order list but it is still shown when using + and - keys.
You can delete individuals patterns by going to the tree view, expanding the "Patterns" folder of your module, and right-clicking the offending pattern there. However, the + and - keys will currently not jump over deleted patterns. It might be a good idea to change this behaviour in OpenMPT so that + and - only show existing patterns.

Quote from: chupo_cro on August 10, 2017, 00:42:07#5 Selecting notes from two adjacent patterns?
Is it possible to use the mouse to select the notes from both the pattern which is in focus and from the pattern 'above' which is dimmed?
No, it is not possible to make a selection that spans more than one pattern.

Quote from: chupo_cro on August 10, 2017, 00:42:07#6 Volume and pan commands in the same row?
I tried to make four drum beats in the four adjacent rows of the same channel and to assign the different volume and pan parameters to the each drum beat but I couldn't. Is the only way to do that to use more channels?
As StarWolf3000 mentions, there are different limitations depending on which format you use, and there are creative ways to get around them. To give you another idea, you can duplicate your instruments to have two instruments pointing to the same sample, and then use their global volume, panning, and their envelopes to modify those properties individually.

Quote from: chupo_cro on August 10, 2017, 00:42:07#8 Working with samples?
I tried to figure out how to use the Samples view to import the sample I made and how to use the Transpose drop-down list. I used Audacity to make a short 440 Hz sine wave sample and saved it as a .wav file. Then, in OpenMPT, I created a new sample, chose A4 in the Transpose drop-down list and dragged the sample into the view. As soon as I drag the sample the Transpose value changes to E7!? Why is that? To tune the sample to the right frequencies I then must use Sample Tuner to tune the sample to the closest C- and after the tuning the Transpose value is G7. I understand the sample has to be moved up by 3 half-tones (from A4 to C5) and there really is a 3 half-tone shift from E7 to G7 but why was E7 displayed initially when I imported the sample? I thought I could set the traspose to the pitch of the sample file (which is 440 Hz = A4) before importing the sample and the sample would sound correct. But that is not the case and I do not understand why the Transpose value after importing the sample always jumps to E7. I can see the supplied samples are already tuned to C5 but after importing them the Transpose value jumps to E7 anyway :-/
I have recently answered a similar question on the MilkyTracker forum: https://modarchive.org/forums/index.php?topic=4053.msg15062#msg15062
In short: The "transpose value" of a sample is not the same as scientific pitch! You must not confuse pitch with sampling frequency. Please read the linked post, and if it's still not clear what I mean, ask again.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

chupo_cro

Quote from: StarWolf3000 on August 10, 2017, 07:05:34
That depends on the module format you use. All but MOD can make use of two effect columns instead of just one. In Fasttracker 2 (XM), you can decide which column holds the volume effect and which one holds the panning effect:

ModPlug Tracker  XM
|C-501v32850|C-501p20C20

In this example, the left one uses the volume effect in the first effect column (v32, vxx is volume effect in volume column, 32 decimals) and the panning effect in the second effect column (850, panning is 8xx, and 50h is decimal 80).
The right one has the same effect, but with volume in the second column (C20, Cxx is volume command in MOD/XM, 20h which equals 32 decimals) and panning in the first column (p20, pxx is panning in volume column, in XM ranged from 02 to 62 instead of 00 to 64 like in S3M/IT/MPTM).

I see now. I am ashamed, I should have figured out by myself there is a room for more than one command :-[

So 850 in the effect command column is the same as p20 in the volume command column because 80/256 = 18/60 = 0.3 (20 is 18 away from 02 and the full range is 60). Is there maybe any particular reason why would one choose to use effect column instead of the volume column to change the volume - in the case both could be used?

Here in the manual, it says: 'The MOD format does not make use of the volume column, so no commands can be used in the volume column.', but it seems the volume column, as you showed, can be used with MOD format.

Although I will probably be usining IT format.

I did not notice the Relative because I did not notice the slider is not at the top :-/

Thank you very much for answering me!

Regards
Chupo_cro

Saga Musix

Quote from: chupo_cro on August 10, 2017, 22:32:02
Is there maybe any particular reason why would one choose to use effect column instead of the volume column to change the volume - in the case both could be used?

The only format that has a volume command in both the volume and effect column is XM, and it only exists the for historical reasons. Since the volume column is basically a subset of the effect column, it's better to put the volume command in the volume column and other commands in the effect column. So no, I don't see a reason to volume into the effect column.

Quote from: chupo_cro on August 10, 2017, 22:32:02
Here in the manual, it says: 'The MOD format does not make use of the volume column, so no commands can be used in the volume column.', but it seems the volume column, as you showed, can be used with MOD format.
The provided example only works in the XM format, not in the MOD format; you cannot put anything into the volume column in the MOD format. Just try it, you will notice it's not possible no matter how hard you try. ;)

Quote from: chupo_cro on August 10, 2017, 22:32:02Although I will probably be usining IT format.
A wise choice. ;)

By the way, I have modified the +/- keys in the order list for the next OpenMPT version to skip deleted patterns.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

chupo_cro

Quote from: Saga Musix on August 10, 2017, 11:21:10
Hello and welcome. Phew, that's quite a big pack of questions!

Thank you!

:-) I was thinking whether to open more threads or to post everything as 'one' question but 8 threads seemed to much.

Quote from: Saga Musix on August 10, 2017, 11:21:10
You can delete individuals patterns by going to the tree view, expanding the "Patterns" folder of your module, and right-clicking the offending pattern there. However, the + and - keys will currently not jump over deleted patterns. It might be a good idea to change this behaviour in OpenMPT so that + and - only show existing patterns.

I think that would be a good idea not only because one would expect such a behaviour but because it would also be consistent with what happens after Cleanup.

Quote from: Saga Musix on August 10, 2017, 11:21:10
As StarWolf3000 mentions, there are different limitations depending on which format you use, and there are creative ways to get around them. To give you another idea, you can duplicate your instruments to have two instruments pointing to the same sample, and then use their global volume, panning, and their envelopes to modify those properties individually.

Speaking of Instruments, I wanted to try ADSR envelopes so the Instrument mode way activated. Later I wanted to revert back to the Sample mode but couldn't find a way to do that. Ifter deleting the Instruments I tried everything to reenable using only the samples but didn't find a solution and by searching the docs and the forum I found only how to enable Instrument mode - but nothing about going the other way.

Quote from: Saga Musix on August 10, 2017, 11:21:10
I have recently answered a similar question on the MilkyTracker forum: https://modarchive.org/forums/index.php?topic=4053.msg15062#msg15062
In short: The "transpose value" of a sample is not the same as scientific pitch! You must not confuse pitch with sampling frequency. Please read the linked post, and if it's still not clear what I mean, ask again.

Let us see if I really understand how that works:

If I understand correctly, OpenMPT expects the imported sample of musical instrumet to be C5. If  I don't have a sample tuned to C5, I can change the pitch of the sample before importing it (to be C5) and it would sound right. If the sample is not tuned before importing I can tune it by changing the sample rate (the frequency) or by using Sample Tuner, or by using Pitch Shift (if I don't want to change the sample rate). So the best would be if I can sample the C5 note of the instrument using for example 44.1 kHz sample rate and no additional tuning would be required.

Next, for the Frequency and the Transpose fields - as I understand now upon reading your answer - the Frequency is in fact sample rate and the Transpose value (note) is calculated based on sample rate value. So if I imported the sample of A4 note I must shift the sample rate 3 half-tones up so the pitch would be C5 - as expected by OpenMPT. If the sample rate was 44100 Hz the Transpose value would be E7, meaning I have to choose G7 which is 3 half-steps up from the E7.

Now, what I would like to know is how exactly is E7 calculated starting from the 44100 Hz as the input. I was changing the Transpose values after creating the new (empty) sample and was observing the Frequency trying to figure out the correlation between the Frequency (sample rate) and the note displayed in the Transpose field. When I selected A1 as the Transpose value the Frequency (sample rate) was 879 Hz (roughly 880). Since by using 880 Hz as a sample rate the highest frequency that could be recorded is (according to Nyquist-Shannon) 440 Hz (half of the sample rate), which is A4 - could we say that:

The note displayed as the Transpose value is the note which corresponds to the highest frequency that could be recorded using the given Frequency (sample rate) - transposed 3 octaves down.

?

So, if Frequency (sample rate) is 880 Hz, the highest frequency that could be recorded is 440 Hz, which is A4 - and by transposing that note 3 octaves down we get A1, which is displayed in the Transpose field.

Next, I am trying to understand why is the Traspose value calculated in the described way (if my description is correct). Why wouldn't the Transpose value initially be 0 so we could just transpose the sample up or down from zero (the current pitch)? Is the current way of the representation introduced to be able to get a feeling of the current position inside the possible range? Because we wouldn't want to go below C1 which would degrade the sound quality because of the too low sample rate? If the initial Transpose value would be 0, then we could go to far down so the sound quality would be degraded.

Thank you very much for your reply!

Regards
Chupo_cro

chupo_cro

Quote from: Saga Musix on August 10, 2017, 22:37:54
The provided example only works in the XM format, not in the MOD format; you cannot put anything into the volume column in the MOD format. Just try it, you will notice it's not possible no matter how hard you try. ;)

Yes, you are right (of course), it is not possible to enter anything in the volume column when using MOD. There were default volume values in that column so I thought they are editable.

Quote from: Saga Musix on August 10, 2017, 22:37:54
By the way, I have modified the +/- keys in the order list for the next OpenMPT version to skip deleted patterns.

:-)) That was really quick. I am glad you are paying attention to the details - which is not a surprise considering how outstanding OpenMPT is.
Chupo_cro

Saga Musix

#7
Quote from: chupo_cro on August 10, 2017, 23:31:23
Speaking of Instruments, I wanted to try ADSR envelopes so the Instrument mode way activated. Later I wanted to revert back to the Sample mode but couldn't find a way to do that. Ifter deleting the Instruments I tried everything to reenable using only the samples but didn't find a solution and by searching the docs and the forum I found only how to enable Instrument mode - but nothing about going the other way.
Cleanup -> Instruments -> Remove all (convert to samples) does exactly that. It re-maps the instrument numbers in the patterns, but I should mention that envelopes are not translated to pattern commands. Any instrument properties apart from the note->sample and note->note mapping are lost.

Quote from: chupo_cro on August 10, 2017, 23:31:23
Let us see if I really understand how that works:

If I understand correctly, OpenMPT expects the imported sample of musical instrumet to be C5. If  I don't have a sample tuned to C5, I can change the pitch of the sample before importing it (to be C5) and it would sound right. If the sample is not tuned before importing I can tune it by changing the sample rate (the frequency) or by using Sample Tuner, or by using Pitch Shift (if I don't want to change the sample rate). So the best would be if I can sample the C5 note of the instrument using for example 44.1 kHz sample rate and no additional tuning would be required.

Next, for the Frequency and the Transpose fields - as I understand now upon reading your answer - the Frequency is in fact sample rate and the Transpose value (note) is calculated based on sample rate value. So if I imported the sample of A4 note I must shift the sample rate 3 half-tones up so the pitch would be C5 - as expected by OpenMPT. If the sample rate was 44100 Hz the Transpose value would be E7, meaning I have to choose G7 which is 3 half-steps up from the E7.
So far this is all correct.

Quote from: chupo_cro on August 10, 2017, 23:31:23Now, what I would like to know is how exactly is E7 calculated starting from the 44100 Hz as the input.
I should start by saying that the "transpose" field has no specific meaning in the S3M/IT/MPTM format; it's only there because in the MOD and XM format, samples have a transpose and finetune value, so the space in the GUI is already there. The Transpose field can be used in S3M/IT/MPTM to quickly change the sampling frequency in semitones but the content of the field is not really relevant.

Now for the origin: In the MOD format, there was no way to change the sample transposition. The middle-c sampling frequency was always 8272 Hz +/- one semitone.
Fasttracker 2 (XM) made this a bit more flexible, by specifying a transposition offset from middle-C (8363 Hz in XM, as it uses Amiga NTSC frequencies rather than PAL frequencies). So basically the way the transposition is displayed in OpenMPT means "playing a C-5 in the pattern really plays a [transpose value]". So if the transpose value is C-5, C-5 is played as C-5 (8363 Hz). If thranspose is C-6, then C-5 is played as C-6 (16727 Hz).

Back to the S3M/IT/MPTM format, the transpose value basically works the same there - if your sampling frequency is 16727 Hz, then transposition in C-6, if your sampling frequency is 44100 Hz, the transposition value is E-7, etc.

I hope this makes sense somehow. There are plans to modify this system a bit (by being able to specify the root note of a sample), but they will most likely not make it into OpenMPT 1.27.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

chupo_cro

Quote from: Saga Musix on August 11, 2017, 00:16:58
Cleanup -> Instruments -> Remove all (convert to samples) does exactly that. It re-maps the instrument numbers in the patterns, but I should mention that envelopes are not translated to pattern commands. Any instrument properties apart from the note->sample and note->note mapping are lost.

So that's how that could be done, thank you!

Quote from: Saga Musix on August 11, 2017, 00:16:58
I should start by saying that the "transpose" field has no specific meaning in the S3M/IT/MPTM format; it's only there because in the MOD and XM format, samples have a transpose and finetune value, so the space in the GUI is already there. The Transpose field can be used in S3M/IT/MPTM to quickly change the sampling frequency in semitones but the content of the field is not really relevant.

Now for the origin: In the MOD format, there was no way to change the sample transposition. The middle-c sampling frequency was always 8272 Hz +/- one semitone.
Fasttracker 2 (XM) made this a bit more flexible, by specifying a transposition offset from middle-C (8363 Hz in XM, as it uses Amiga NTSC frequencies rather than PAL frequencies). So basically the way the transposition is displayed in OpenMPT means "playing a C-5 in the pattern really plays a [transpose value]". So if the transpose value is C-5, C-5 is played as C-5 (8363 Hz). If thranspose is C-6, then C-5 is played as C-6 (16727 Hz).

Back to the S3M/IT/MPTM format, the transpose value basically works the same there - if your sampling frequency is 16727 Hz, then transposition in C-6, if your sampling frequency is 44100 Hz, the transposition value is E-7, etc.

I hope this makes sense somehow. There are plans to modify this system a bit (by being able to specify the root note of a sample), but they will most likely not make it into OpenMPT 1.27.

Now I perfectly understand why the algorithm I described earlier could be used to find out the Transpose note based on sample rate. On Amiga the C5 note was sampled with sample rate of 8363 Hz meaning the bandwidth that could be recorded was up to 4181.5 Hz which is 8x523.3 Hz (8xfrequency of the C5 sine wave). 8 times higher bandwitdth than the fundamental frequency of the note allowed to record the waveform up to the 8th harmonic - which can reproduce the timbre quite well. Since 8 = 2^3, that 'three' explains the 'three' in the algorithm I've written in the last post: 'The note displayed as the Transpose value is the note which corresponds to the highest frequency that could be recorded using the given Frequency (sample rate) - transposed three octaves down.'.

I couldn't decipher the meaning of the Transpose because the notes are usually put in the cotext with the frequency of the recorded signal and not in the context with the sampling rate. When I saw Sampling rate = x Hz I was automatically reasoning: 'The highest frequency of the tone is x/2 Hz'. But everything is clear now that you explained - thank you very much for such a detailed explanation.

Yes, specifying the root note of the sample would be very straightforward way to use the imported samples. It would be something as being able to 'say': 'I have a sample of note x of some voice/instrument', and the sample would then be tuned to sound right. Since there already is a FFT analysing routine within the Sample Tuner, the root note field could be pre-filled with the predetermined value which could be accepted or changed by the user. However, the frequency field should then refer to the detected frequency of the root note of the sample rather than to the sample rate. That way if the user would, for example, import the sample containing the tone with fundamental frequency 440 Hz and FFT algorithm would detect e.g. 452 Hz - the user could 'say': 'No, that is not 452 Hz, I know for sure that is 440 Hz'.
Chupo_cro