hugbug / conpianist

App to control Yamaha CSP digital pianos from Windows, macOS or Linux.
GNU General Public License v3.0
32 stars 4 forks source link

ConPianist - Mindmap #40

Closed djangobaer closed 4 years ago

djangobaer commented 4 years ago

Hi! I did start a mindmap using Freemind. http://freemind.sourceforge.net/wiki/index.php/Main_Page Its a very easy tool. Have a look and give me any command. Change extention to "mm" to load. ConPianist.txt

Harald

hugbug commented 4 years ago

Pasting my passage from the email because it's relevant to the discussion of new features.


NOTE: This represents my understanding of things. I maybe wrong in details or completely :)

Let’s talk about CSP concept in general.

The MIDI and Smart Pianist are like two parallel worlds on the CSP. They are rarely touch each other.

MIDI-Interface

When you are working with the MIDI interface you can send MIDI-commands to piano and it responses accordingly. In this mode the piano is used solely as a playback device. The piano keyboard has nothing to do with the MIDI world.

Keyboard (Smart Pianist)

When you play on the piano keyboard it produces sounds with selected piano voices. There are various settings which affect how the sound is generated. All these settings are changed via Smart Pianist app. All these settings have nothing to do with the MIDI playback device.

Therefore you can send MIDI-commands to select voices on MIDI playback device. Then you can play on piano keyboard and the selected MIDI voice will not be active. However if you send MIDI-commands to play notes they will be played with previously selected MIDI voice. And vice versa. If you select a voice with Smart Pianist that affects only the physical keyboard of the piano. It has no effect on MIDI-commands for notes.

Loading MIDI-files in the app

That’s where the two worlds intersect to some extent. When you load a MIDI-file into piano using app and then hit Play in the app the piano starts playing the MIDI using MIDI playback device. When you starts playing on the keyboard during MIDI-file playback the sounds produced by keyboard are generated by Keyboard device (Smart Pianist) world. Almost all settings in the Smart Pianist affect the keyboard only.

There are few settings which affect the MIDI playback device though. That's is the mixer, where you can change volumes or disable certain channels of the MIDI-file. None of these settings modify the MIDI-file; they only change playback parameters. The important conclusion here - CSP is not for writing or editing of MIDI-files. There are no functions to insert notes into MIDI. You can’t also save the modified file because you just can’t modify it at all.

The inability to change MIDI-files can be overcome partially with the concept of presets/registry. In Smart Pianist when a preset is loaded the song (MIDI-file) from the preset is loaded, the MIDI-playback parameters (mixer) are loaded and all Smart Pianist settings (keyboard parameters) are loaded. That all makes sense and should be implemented in ConPianist as well.

Virtual keyboard in ConPianist is a thing from MIDI world. It sends MIDI-commands for notes. Like all other MIDI-commands they are played back by MIDI playback device. Therefore they are played back using voices selected in MIDI playback device. The voices are selected either using MIDI-commands sent via MIDI interface or via MIDI-commands from loaded MIDI-file. For info: ConPianist cannot select voices in MIDI playback device, such feature doesn’t exist in ConPianist (but can be implemented if necessary). The channel near virtual keyboard controls for which channel the MIDI-commands for "notes on/off" are sent. For example channel 10 is by default drums. If the MIDI-file doesn’t have this channel the default instrument (drums) is selected in MIDI playback device. The MIDI playback device does this automatically when a new song is loaded.

I don’t know if the virtual keyboard is useful at all. I added it as an experiment. BTW the PC keyboard is mapped into the virtual keyboard.

djangobaer commented 4 years ago

MIDI-Interface When you are working with the MIDI interface you can send MIDI-commands to piano and it responses accordingly. In this mode the piano is used solely as a playback device. The piano keyboard has nothing to do with the MIDI world.

Keyboard (Smart Pianist) When you play on the piano keyboard it produces sounds with selected piano voices. "The Soundmodule is inside the CSP!"

There are various settings which affect how the sound is generated. All these settings are changed via Smart Pianist app. All these settings have nothing to do with the MIDI playback device.

Therefore you can send MIDI-commands to select voices on MIDI playback device. Then you can play on piano keyboard and the selected MIDI voice will not be active.

However if you send MIDI-commands to play notes they will be played with previously selected MIDI voice. And vice versa. If you select a voice with Smart Pianist that affects only the physical keyboard of the piano. It has no effect on MIDI-commands for notes.

Loading MIDI-files in the app That’s where the two worlds intersect to some extent. When you load a MIDI-file into piano using app and then hit Play in the app the piano starts playing the MIDI using MIDI playback device. When you starts playing on the keyboard during MIDI-file playback the sounds produced by keyboard are generated by Keyboard device (Smart Pianist) world. Almost all settings in the Smart Pianist affect the keyboard only.

001:1:0350 Text=Main-Tango Accordeon -127 001:1:0351 Sysex=F0 43 73 01 22 00 00 00 72 17 F7 Panel Program Change= 114 001:1:0352 Sysex=F0 43 73 01 22 01 00 72 F7 Panel Voice Volume= 7

There are few settings which affect the MIDI playback device though. That's is the mixer, where you can change volumes or disable certain channels of the MIDI-file. None of these settings modify the MIDI-file; they only change playback parameters. The important conclusion here - CSP is not for writing or editing of MIDI-files. There are no functions to insert notes into MIDI. You can’t also save the modified file because you just can’t modify it at all.

The inability to change MIDI-files can be overcome partially with the concept of presets/registry. In Smart Pianist when a preset is loaded the song (MIDI-file) from the preset is loaded, the MIDI-playback parameters (mixer) are loaded and all Smart Pianist settings (keyboard parameters) are loaded. That all makes sense and should be implemented in ConPianist as well.

Virtual keyboard in ConPianist is a thing from MIDI world. It sends MIDI-commands for notes. Like all other MIDI-commands they are played back by MIDI playback device. Therefore they are played back using voices selected in MIDI playback device. The voices are selected either using MIDI-commands sent via MIDI interface or via MIDI-commands from loaded MIDI-file. For info: ConPianist cannot select voices in MIDI playback device, such feature doesn’t exist in ConPianist (but can be implemented if necessary). The channel near virtual keyboard controls for which channel the MIDI-commands for "notes on/off" are sent. For example channel 10 is by default drums. If the MIDI-file doesn’t have this channel the default instrument (drums) is selected in MIDI playback device. The MIDI playback device does this automatically when a new song is loaded.

I don’t know if the virtual keyboard is useful at all. I added it as an experiment. BTW the PC keyboard is mapped into the virtual keyboard.

Finaly my idea is to include into the midifile the panelvoice, volume, reverbdepth and set LEFT and LAYER on or off. Define the splitpoint and the Octavesetting of MAIN, LEFT and LAYER. If that can work you can loud and play.

Sorry for torment your nervs with that themes.

Harald

hugbug commented 4 years ago

YES, but the Panelvoice-settings are coming from the midifile Cumparsita.txt 001:1:0350 Text=Main-Tango Accordeon -127 001:1:0351 Sysex=F0 43 73 01 22 00 00 00 72 17 F7 Panel Program Change= 114 001:1:0352 Sysex=F0 43 73 01 22 01 00 72 F7 Panel Voice Volume= 7

So the "F0 43 73"-SysExes are working in MIDI-files after all? That's good to know and should be a useful feature.

This fact doesn't contradict with my "theory" however :)

What I meant is that the voice selection for midi-channels ("F0 43 10") has no effect on piano keyboard.

What you did is you embedded the keyboard voice selection commands into the midi. These commands do affect the piano keyboard but they don't change the playing back of the midi-file, right?

There are few settings which affect the MIDI playback device though. That's is the mixer, where you can change volumes or disable certain channels of the MIDI-file. None of these settings modify the MIDI-file; they only change playback parameters. The important conclusion here - CSP is not for writing or editing of MIDI-files. There are no functions to insert notes into MIDI. You can’t also save the modified file because you just can’t modify it at all.

NO, you can save the changes you made (no changes for notes) in the "Songbearbeitung-Vorbereitung" and export it. Sorry, I dont know the english name for that.

Well, that's a special dialog to edit the midi, not to save the changes (current program settings). Some changes can be made in that special dialog and the modified file can be saved. This is however a totally separate part of the program. All changes made in other dialogs (for example change of channel volumes in mixer) are not saved into new midi. Or am I wrong? I haven't experimented with this function.

Finaly my idea is to include into the midifile the panelvoice, volume, reverbdepth and set LEFT and LAYER on or off. Define the splitpoint and the Octavesetting of MAIN, LEFT and LAYER. If that can work you can loud and play.

May be you are trying to do this the wrong way? You already can do the following in Smart Pianist: load a midi-file, change all settings as you like (voices, split point, octave setting). Then save current program state into registry memory. Anytime later you can open the registry memory dialog and with one click load your midi with all corresponding settings. So instead of using the "load song dialog" you use "registry memory dialog" most of the time.