Author Topic: About/Installation/Features  (Read 20898 times)

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1679
About/Installation/Features
« on: February 01, 2018, 01:54:42 PM »
About
ReaCWP is (Cockos) Reaper DAW extension to import (Cakewalk) Sonar DAW project files (saved in CWP format).

The program is developed for Sonar X2 - Platinum generated files, but theoretically can work with older versions. For the list of currently converted parts of the project, see "Features" post later.
Current version works in Reaper for Windows (32 and 64bit). Linux version can be made on request. I do not have Apple to compile corresponding incarnation (nor any plans to do that).

The extension is closed source but free to use.
You can donate to support the project. Please note that you do not buy a license nor any special service doing that. The software is provided "as is", without any promises.

Note:
From my best knowledge, I have not violated any Sonar EULA during the development. In particular, I have NOT debugged, reverse engineered, etc. Sonar or any part of the package in which it comes. The program was written solely based on the CWP (my own projects) files content observation. These files are not encrypted (at least in parts which I parse), use well known primitive binary data representations and aggregated construction from these primitives. I have not found any evidence of innovative technologies in these files. I extract the information which any Sonar user can extract manually, so the converter is just an accelerated method to get your own information out of particular format in which it is currently saved.
What I do is from my knowledge absolutely legal at least in EU.
Since by using this program a user just accelerates the procedure he/she is (legally) allowed to perform, I do not think that using the program can be declared as a violation in any country.

« Last Edit: February 01, 2018, 02:58:18 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1679
Re: About/Installation/Features
« Reply #1 on: February 01, 2018, 02:18:35 PM »
Installation
  • You need working Reaper installation. If you do not have it yet, you can download Reaper from: https://www.reaper.fm/download.php and legally evaluate. You can select "Portable" option during installation, this way Reaper will not integrate into Windows and you can restless un-install it by deleting the folder. Do not install loop-back ASIO driver if you do not need it! It will not harm your system in general, but audio inputs/outputs in Sonar can be redefined by installing the driver.
  • When Reaper access any audio files, it creates .reapeaks waveform files. By default, these files are created in the same place as audio file in question. When you use ReaCWP, that can "pollute" audio folders of Sonar projects with these .reapeaks files. To prevent that, in Reaper's Preferences General/Paths set "Store all peak caches in..." and set select some folder
  • For Reaper 5.70- (fixed in 5.75). In Reaper Preferences Project, clear "when creating new projects, use the following  file as a template"
  • download ReaCWP. Many anti-viruses think that ANYTHING compiled by GCC and/or not signed is a virus. I can only guess the reason and intention. But I can do nothing against that (mis)behavior.
  • select _win32/reaper_cwp.dll, _win64/reaper_cwp.dll or _lin64/reaper_cwp.dll depending from the Reaper you use. While Reaper is closed (!), put the file into "Plugins" folder in the Reaper installation path or into "UserPlugins" folder which you can find by Options/"Show REAPER resource path..." in Reaper itself (but do not forget to close Reaper before copying the file, especially when upgrading ReaCWP)
  • you do not need Sonar installed to use the converter. But if you do not have Cakewalk plug-ins used you your projects, they will be disabled by Reaper till you install or replace them.

How to use
When ReaCWP is in correct place, Reaper should show cwp files as "supported" projects. You should be able to "open" them as normal Reaper projects, but you can not save them back into cwp.

WARNING: Do NOT open CWP projects in place. Make a separate copy of the whole project, including ALL ASSOCIATED AUDIO FILES. The converter will not modify CWP file itself, but all related audio files are accessed directly. Depending from settings in Reaper, when you save the project as RPP and/or modify it, Reaper can MOVE OR DELETE related audio files.
In some projects, for which "Always copy imported audio files" and/or "Use per-project audio folder" was not set, the project can reference original locations. Please be extremely careful in this case.

After you open CWP in reaper and BEFORE you modify or save it, all files are safe. Open "View"/"Project media/FX bay" and switch into "Source Media" tab. Here you will see absolute path for all referenced files. If you see some original locations there, do "File"/"Save project as..." and CHECK OPTIONS. You should uncheck "Move ..." option (and check the first "Copy" option) or check "Copy instead of move...".

If you ignore this warning, it can happened you CAN BE UNABLE TO OPEN ORIGINAL PROJECT IN SONAR.


That is an alpha version! Far from everything is converted, some parts are converted partially on not precise. Please do not report that as bugs. But you can ask to put particular features higher in my TODO list
« Last Edit: July 29, 2020, 11:41:27 AM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1679
Re: About/Installation/Features
« Reply #2 on: February 01, 2018, 04:14:39 PM »
Features
Since that is pre-alpha, the list is short. Check plans to see what you can expect later.

Time line:
Converted:
- tempo map
- time signature changes
- markers (see comments)

Can not be converted (or I do not know how):
- key signature (Reaper does not have it)
- Groove-clip pitch for markers


Comments (difference in behavior and conversion decisions):
- Sonar support music base (attached to MBT) and absolute time (attached to SMPTE) markers at the same time. Reaper can lock markers to music time OR absolute time, so they can not co-exist. Converter put all markers at correct position initially, but if you modify the tempo, the behavior in Reaper will be different compare to Sonar.
« Last Edit: February 18, 2018, 01:47:10 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1679
Re: About/Installation/Features
« Reply #3 on: February 01, 2018, 04:15:12 PM »
MIDI clips:
Converted:
- MIDI clips (slip edits preserved)
- all simple MIDI events, SysEx Data, SysEx Banks, text
- timebase and mute status

Partially converted:
- step sequencer clips are converted "bounced" (by Sonar), so not as looped / sequenced
- notation related events are ignored (expressing, hairpins, chords, etc.)
- groove clip parameters and MIDI track parameters (transpose, etc.) are not converted (and I have no such plans)

Unclear how to convert:
- take lanes. See "Take lanes / comping" post.
- CC track automations in Sonar have no equivalent in Reaper. Technically speaking they are artificial and not transparent, unlike "normal" automations they just produce corresponding MIDI events. "Not transparency" comes from unclear timing when such events should be triggered. The only reasonable approach I see is to create sub-track with MIDI clip(s) and "render" such automations into these clips.

Can not be converted (or I do not know how):
- Sonar is able to use sub-tick timing for MIDI events (rarely, but happens), Reaper does not. Note that MIDI clip position is precise and converted as such. MIDI files have tick precision and MIDI hardware in practice has lower then tick accuracy (one event transfer throw MIDI cable takes ~1mSec, so longer then a tick ~0.6mSec at 100 QPM). I mean it is hard to imagine when the difference can be relevant.
- Clip FX for MIDI clips can contain MFX plug-ins only. They are not supported by REAPER.

Comments (difference in behavior and conversion decisions):
- Sonar use TPQ (ticks per quarter note, normally 960 but can be set smaller) Project setting for MIDI output only. Internally, Sonar always save in 960. Reaper use the setting directly. Converter save MIDI event in Reaper way, specifying TPQ from Sonar settings as TPQ for each MIDI clip. 
- When clip is extended using slip editing in Sonar, original content begin point is preserved. Reaper, while technically support that, extends the content (converter follows Reaper behavior)
- When some note starts before current clip boundary in Sonar, it is not visible/played (at least in X2), but Reaper play it starting the boundary (converted "as is", so Reaper will play what Sonar will not)
- Note end is converted after (the next) note begin, in case both have equivalent time. Sonar does that reversed, but it can not preserve original sequence.  Some synth (f.e. Yamaha) need it the way I convert for proper portamento effect.
- Sonar does not trim notes on looping border, so clip can be longer then looped in Sonar. In REAPER, looping length is exactly source item length. Note that means in REAPER the sound will be trimmed at the looping point, even in case that is not desired.
« Last Edit: March 14, 2024, 02:36:01 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1679
Re: About/Installation/Features
« Reply #4 on: February 01, 2018, 04:18:35 PM »
Audio clips:
Converted:
- preserved slip edits
- simple and stretched audio clips
- timebase and mute status
- snap offset
- clip fades
- grooved (looped) clips (see comments)

Unclear how to convert:
- take lanes. See "Take lanes / comping" post.

Not yet converted:
- Clip FX bin

Comments (difference in behavior and conversion decisions):
- even with all theoretical effort and constant tempo, looping/stretching is not going to sound precisely the same as in Sonar. Reaper use different algorithms/libraries for that
- Reaper has no native support for audio loops, at least not in complete way. Audio loop (ACID, REX)  normally define slices position in terms of musical time (beats). That allows DAWs match such loops with current tempo, even when it is changing over time. Reaper just support "looping" audio items with stretching (play speed) and manual adjustment of pitch. But all that is in absolute time domain, so that works only as long as the tempo and desired pitch are constant. Reaper has own "stretch markers" which when set can produce desired effect. But I have not found a way to set them from ACID info.
- as with tempo, if there is groove pitch marker during the length of looping, it is ignored (so will sound different from Sonar)
« Last Edit: July 24, 2018, 01:53:36 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1679
Re: About/Installation/Features
« Reply #5 on: February 02, 2018, 10:16:31 PM »
Track and clip envelopes:
Converted:
- strip volume and pan automation envelopes (track envelopes), see comments
- read status
- send volume and pan envelopes
- for buses input gain and input pan, with envelopes. See comments.
- for tracks, input gain when not default
- FX and Synth parameters envelopes
- audio clips gain and pan envelopes (as take envelopes)

Comments (difference in behavior and conversion decisions):
- envelopes can not be converted exactly. While Reaper has way more bright approaches with envelopes, in addition to different curve specification, there are general differences.
- In Sonar, strip envelopes automate absolute values. For volume, the chain is "clip gain envelope" -> "track gain" -> "pre FX" -> "track volume" OR "track volume envelope". So when volume is automated, it is replacing volume (set by  fader).
In Reaper, the chain is "Take volume" -> "Take volume envelope" -> "Track pre-fx volume envelope" -> "Track volume envelope" -> "Track Trim volume envelope" -> "Track trim" (and that is without VCA). Important practical difference is that volume envelopes are not absolute but relative. They do not "overwrite" parameters, they "add/substruct" to/from parameter value.
- In Sonar it is possible to write a peace of envelop, leaving the rest of the timeline "undefined". While that looks nice (only parts which was actually created are highlighted), that is a logical design flaw. Which value should parameter have at places where the envelope is not defined? If you let "play" the track from the beginning, every time there is no envelope, the parameter will stay as it was at the last defined position. But "jump" from one hall to another hall by mouse, and the parameter will not change. So f.e. volume of the track depends from the position you start play it.
Reaper likes deterministic behavior.  If you have an envelope and it is enabled, it always cover the whole project. So it is not possible to reproduce Sonar's design flaw there (which is not so bad).
EDIT: I am corrected by John. While Reaper can not reproduce Sonar's design flaw with "unpredictable" fader position, it is possible to reproduce separate peaces of envelops.
- Since envelopes in Reaper are addictive  and in Sonar absolute, setting volume (pan, etc.) as a separate parameter to the value in Sonar can produce unexpected behavior. In Sonar, once envelope is active, it will overwrite the value. In Reaper, envelope will adjust relative to the value. I plan to keep parameters for which envelopes are defined at unity.
- There is no dedicated "gain" in Reaper, Gain is converted into PreFX volume envelope.
« Last Edit: March 07, 2018, 06:35:37 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1679
Re: About/Installation/Features
« Reply #6 on: February 06, 2018, 04:04:27 PM »
Plug-ins (VST(i), VST3(i) and DX(i)):
Converted:
- FX bins for tracks and Synth rack. With presets.

Partially converted:
- some plug-ins have special procedure. I  do not have such plug-ins, more investigation is required to fix.

Unclear how to convert:
- FX Chain in Sonar is not a plug-in which can be loaded into another DAW. May be I can "unroll" it, but it has low priority at the moment.

Can not be converted (or I do not know how):
- ProChannel (Filter in older version) is Sonar specific extra FXBin. With special plug-ins in it. It can not be converted directly. Theoretically, I can try to convert presets for EQ and Comps into presets of some other plug-ins, f.e. into ReaEQ and ReaComp. That has low priority at the moment.
- DX plug-ins with sidechains (f.e. Sonitus Compressor) and DXi with multiple outputs (TTS-1) are not currently supported by Reaper

Comments (difference in behavior and conversion decisions):
- routing, freezing, FXBinenable/disable, etc. are NOT converted yet
« Last Edit: February 09, 2018, 06:24:33 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1679
Re: About/Installation/Features
« Reply #7 on: February 08, 2018, 11:10:36 PM »
Project structure:
Converted:
- all planed connections are implemented, so
- strip outputs
- sends
- MIDI
- side chained plug-ins
- multi-output synth
- synth inside FXBin
- frozen tracks (see comments)

Partially converted:
- no MIDI tracks parameters, so no forced channels, program changes, etc.

Unclear how to convert:
- Drum maps do not exist in Reaper. That is not so hard to implement, with EXACT conversion from Sonar drum maps. But it will take time and has very low priority.
- Sonar folders are visual feature only. I do not see a reason to convert them.

Can not be converted (or I do not know how):
- ProChannel and all related routing are ignored
- "external insert" from what I know does not exist in Reaper
- set external signals in general according to Sonar project is relatively difficult. So hardware audio and MIDI inputs and outputs are not assigned.
- MIDI tracks with input from Synth outputs are normally unintentional bug (when the input set to "All") or a dirty workaround for MIDI FXes in VST format. What is the case in not possible to auto-detect, so such routing is ignored during conversion.
- surround is not converted

Comments (difference in behavior and conversion decisions):
- in Sonar, synth is a separate quantity but directly connected with corresponding tracks. When frozen synth is converted, corresponding tracks are frozen separately, unfreezing one is not automatically
unfreeze another.
- if plug-in with MIDI input (Synth, Guitar amp, etc.) is inserted into FXBin, Sonar also show in inside Synth rack. Converter route corresponding MIDI tracks directly to the track with that plug-in and does not create it in the "Synth Rack" folder.
- Reaper has only one strip type, Track. But tracks can be buses, folders (by default folders are also buses for included tracks, but that is configurable), AUX tracks and MIDI tracks.
- There is no explicit separate "Output" for tracks. It is called "Master send" and always target next upper level folder. It has less options then "normal" sends. Can be disabled.
- Reaper tracks have from 2 to 64 audio channels. There is no "mono" tracks, but plug-ins can be configured to work with particular channels. So f.e. for Mono effects, it is possible to select it should work with "channel 45" and output to "channel 14". Also sends can sum or transmit individual channels.
- each reaper track also carry 17 (!) separate MIDI buses (not called "channels", since that clash with "MIDI channels"). Each bus has 16 MIDI channels. VST/VSTi capable to work with MIDI can be assigned to work with one particular bus. If VST/VSTi has MIDI output, it can be specified how it should influence used bus (replace, merge, or ignored). JS effects are (always?) working with default ("zero") MIDI bus.
- Sends can transfer audio and MIDI, they also specify explicitly which audio and MIDI from the original track should be sent to which destination in the receiving track.
- there is no explicit "Synth rack". VSTi/DXi are routed as normal MIDI capable FXes

For reference, in Sonar:
- an audio track can be mono or stereo only
- a bus is always audio, can be stereo or surround (with project configurable surround configuration)
- audio only sends and effects are fixed to use strip channels
- everything with MIDI input is a "synth"
- a MIDI track always work with one MIDI stream, the only inputs are hardware and "synth" outputs, the only outputs are hardware, synth or a combination of them wrapped as a "Drum map"
- synth with MIDI output ALWAYS have it enabled by default
- MIDI tracks ALWAYS have some MIDI input, by default "Omni" or "MIDI Omni", which erroneously also called "None".

So in general: project structure, audio routing and MIDI routing in Reaper restless (and hopeless) supersede Sonar in all directions. Any imaginable signal routing in Sonar possible to configure the same way in Reaper (but not in other direction).

To say several good words about Sonar:
- Piano roll MIDI editor in Sonar has several features not existing in Reaper.
- Sonar support aggregated MIDI messages ((N)RPN) as a separate MIDI events, while Reaper is able to work with "raw" events only.
- As I have mentioned in MIDI clips, Sonar also support subtick accurate MIDI timing.
- Sonar has automatic and manual (instrument definition) note names. Reaper has manual definition only, just note names (decoupled from program changes / instrument selection, which is done using separate plug-in there).
« Last Edit: March 03, 2018, 09:39:07 AM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1679
Re: About/Installation/Features
« Reply #8 on: February 13, 2018, 06:38:16 PM »
Mixing parameters:
Converted:
- strip mutes
- track phase inversion
- APPROXIMATE pans and levels, for strips and sends. Note that when corresponding envelope exist and not disabled, parameters are ignored and set to default (see envelopes section for the reason).

Partially converted:
- Pan Law is converted as close as I could. Options does not match exactly, and so the result. See comment why marked as "partially".

Comments (difference in behavior and conversion decisions):
- current volumes and pans conversion is not precise
- Sonar has Mono tracks. Reaper tracks are (at least) stereo. Thanks to ultimate routing possibility, that is not a limitation. But that make it a bit different to convert Sonar mono tracks exactly. Pan law is sensitive to mono/stereo source (by definition). In case Sonar mono track has mono content (and FXes), current conversion should produce reasonable result. But in case f.e. the clip on mono track is really stereo, after conversion, Reaper logically think that track is stereo. And so level/pan law will not match. It is possible to force clips be mono (the same for FXes), but that is not done. Please let me know in case that feature is important for you.
« Last Edit: February 24, 2018, 01:01:58 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1679
Re: About/Installation/Features
« Reply #9 on: March 06, 2018, 10:28:24 PM »
Plug-ins replacement:
Converted:
- ProChannel QuadEQ -> ReaEQ, see comments

Comments (difference in behavior and conversion decisions):
- it is clear that exact sound from 2 distinct plug-ins is impossible to get
- with big support from Cool, who has proposed such conversion, found matching numbers and has spent time to spot my bugs in the implementation, we have reached some reasonable conversion level for QuadEQ to ReaEQ, with the following limitations:
 a) we was working with Hybrid type only
 b) converted LPF and HPF in most cases do not sound as before. The implementation algorithms and parameter ranges are too different to match
 c) at the moment, only Gain automation is converted into Gain and Bandwidth envelopes (to match the sound, the Bandwidth has dependency from Gain). Frequency can be converted (let me know if you need that).  Note that envelopes have fixed limits in positive Gain and upper Bandwidth, while preset support brighter range for these parameters. So Gain envelope can be correctly converted only for Gain under +12dB and Q greater then 0.5.
 
« Last Edit: March 15, 2018, 10:23:51 AM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1679
Re: About/Installation/Features
« Reply #10 on: March 12, 2018, 06:08:39 PM »
Take lanes / comping:
Comments (difference in behavior and conversion decisions):
- Take lanes in Sonar can be perceived as a set of tracks always routed to the parent track. With own solo/mute status and own name. All Clips are put one some Take lane.
- Starting with X3, Take lanes can also be used for Comping with a set of associated operations. In several words, comping tools allow quick split clips on all take lanes and making one of them sound while other are mutes. Also the splitting point can be slip edited and another clip can be selected as sounding. Old ( "free" ) use of take lanes is still possible.
- There is no Take lanes in Reaper, at least not as a property of track. But there are other options for that purpose:
 a) since Reaper support sub-tracks and by default they are routed to the "folder" track, creating such structure can imitate take lanes in Sonar, except for comping. Waveform picture is propagated to the folder track. The only disadvantage I have found so far is that Solo does not function as  Solo of take lanes in Sonar, as for an ny track it is "global".
 b) Reaper allow to work with overlapping clips convenient by showing them on separate visual lanes. There is no explicit control on which lane the clip appears, these lines are pure visual and have no influence on the project structure
 c) there can be Takes inside items (clips).  That is Reaper way for comping. But only for comping. That means: only one take can be "active", all other are "inactive"; take always has the length of the item, so no take can "cross" the border of the item. That means not all clips on Sonar Take lanes can be converted to Takes inside Reaper items. But for comped clips, that is (so far theoretically) possible.
- when comping in Sonar, it is possible to cross-fade on splitting points while still have the possibility to slip edit it. In Reaper, cross-fade on split can be set. But slip editing cross-fade splits is not possible (or I have not found how). That only means that after split without cross-fade, the split point can be moved (simultaneously for left and right items). While after split with cross fade, left or right items can be slip edited, but not simultaneously.
- For clarity: comping in Sonar is a special set of tools on top of Take lanes while comping in Reaper means switching between takes inside one clip while all other operations are "normal". F.e. comping split in Sonar is "special", comping split in Reaper is just normal clip split. But there are many helpful operation to implode and explode takes and a possibility to save names comps.