…as it goes, so does NTrack Studio! at very minimal cost!
However, when the Podium version arrives I shall be a very happy man… rather than just the happy one I present to you today!
DSP
Glad to be of service!
In automating the creation of what is needed when auxing behind a group, when a bounce enabled group is created an ideal process should be:
Start with:
---Send
| ---MyAuxedTrack
---Effect
---Return
Bounce created:
---MyAuxedTrack Bounce
| ---Send
| ---MyAuxedTrack
---Effect
---Return
Podium creates:
---MyAuxedTrack Bounce
| ---Send
| ---MyAuxedTrack
---Aux1 Group
---MyAuxedTrack Bounce
---Effect
---Return
When MyAuxedTrack Bounce is armed, change to:
---MyAuxedTrack Bounce
| ---Send
| ---MyAuxedTrack
---Aux1 Group
---MyAuxedTrack Bounce
---Effect
---Return
To record returned audio. When disarmed, return to
---MyAuxedTrack Bounce
| ---Send
| ---MyAuxedTrack
---Aux1 Group
---MyAuxedTrack Bounce
---Effect
---Return
Of course, this only suits the scenario of one track behind the group. If this is already setup, and another send is created, attention will be needed as to how to correctly slit out the new send..
This would of course be a pig to program, but when programmed properly will be pretty cool!
HTH
DSP
super stuff!
I didn’t know some of those…
DSP
explorer panel is nice! Took me a while to find it! (resize the object list for those trying to get it!)
I like the way the even midi files have the import option available – nice touch.
Could double clicking on the folder path bring up the folder dialog as well? Just an idea.
Very pleased, frits!
DSP
oops!!
Must confess I haven’t tried using that many shortcuts!!
OK, I’ll get used to that..
DSP
seconded.
Standard windows behaviour is always useful!
Only when you have time frits!
DSP
that would drive me crazy!!!
A key combination, or a preference in the ini file to toggle that behaviour would be better. I would like to be able to have a range select with the delete, eg draw a selection box around the notes while the eraser tool is selected. I realise that I could use the selector, and then ctrl+x.. or could the selector respond additionally to the ‘delete’ key?
just me I guess! I can still work efficiently as it is!
I love having the note audition, btw!
DSP
Here’s another…
The main figure is based around a repeating 11/16 | 11/16 | 10/16 form, which neatly ties up to make 8/4 for the other instruments.
Enjoy
DSP
frits
don’t know if you have code for mousewheel support, but this is what I used in a delphi grid component to enable mousewheel support:
Declarations
const WM_MOUSEWHEEL=$020A;
{SM_MOUSEWHEELPRESENT}
SM_MOUSEWHEELPRESENT = 75;
{SPI_GETWHEELSCROLLLINES}
SPI_GETWHEELSCROLLLINES = 104;
{SPI_SETWHEELSCROLLLINES}
SPI_SETWHEELSCROLLLINES = 105; // For Win95 and WinNT3.51,
// Mswheel broadcasts the message
// WM_SETTINGCHANGE (equivalent to
// WM_WININICHANGE) when the scroll
// lines has changed. Applications
// will receive the WM_SETTINGCHANGE
// message with the wParam set to
// SPI_SETWHEELSCROLLLINES. When
// this message is received the
// application should query Mswheel for
// the new setting.
type
TWMMouseWheel = packed record
Msg: Cardinal;
Keys: SmallInt;
WheelDelta: SmallInt;
case Integer of
0: (
XPos: Smallint;
YPos: Smallint);
1: (
Pos: TSmallPoint;
Result: Longint);
end;
somewhere in the creation of the object
//WM_MouseWheel..
fIntelliWheelSupport := Boolean (GetSystemMetrics (sm_MouseWheelPresent));
SystemParametersInfo (spi_GetWheelScrollLines, 0, @fIntelliScrollLines, 0);
if (fIntelliScrollLines < 0) or (fIntelliScrollLines > 100) then fIntelliScrollLines := 3;// lines to scroll set in component
object code to handle mousewheel..
procedure TColorStringGrid.WMMouseWheel(var message:TWMMouseWheel);
//From Dave Jewells Code in Delphi Magazine (Issue 32, Apr'98)
const
Delta: SmallInt = 0;
var
Idx: Integer;
begin
Delta := Delta + Message.WheelDelta{HiWord (Message.wParam)};
//windows.messagebox(handle,PChar(inttostr(Delta)),'lala',MB_OK);
while Abs(Delta) >= 120 do
begin
if Delta < 0 then
begin
for Idx := 0 to fIntelliScrollLines - 1 do
{PostMessage (Handle, wm_VScroll, MakeLong (sb_LineDown, 0), 0);}
if (TopRow
Delta := Delta + 120;
end
else
begin
for Idx := 0 to fIntelliScrollLines - 1 do
{PostMessage (Handle, wm_VScroll, MakeLong (sb_LineUp, 0), 0);}
if (TopRow>FixedRows) then TopRow:=TopRow-1;
Delta := Delta - 120;
end;
end;
end;
procedure TColorStringGrid.IntelliMouseInit;
var
hWndMouse: hWnd;
mQueryScrollLines: UINT;
function NativeMouseWheelSupport: Boolean;
var
ver: TOSVersionInfo;
begin
Result := False;
ver.dwOSVersionInfoSize := sizeof (ver);
// For Windows 98, assume dwMajorVersion = 5 (It's 4 for W95)
// For NT, we need 4.0 or better.
if GetVersionEx (ver) then case ver.dwPlatformID of
ver_Platform_Win32_Windows: Result := ver.dwMajorVersion >= 5;
ver_Platform_Win32_NT: Result := ver.dwMajorVersion >= 4;
end;
{ Quick and dirty temporary hack for Windows 98 beta 3 }
if (Result = False) and (ver.szCSDVersion = ' Beta 3') then Result := True;
end;
begin
if NativeMouseWheelSupport then begin
fIntelliWheelSupport := Boolean (GetSystemMetrics (sm_MouseWheelPresent));
SystemParametersInfo (spi_GetWheelScrollLines, 0, @fIntelliScrollLines, 0);
fIntelliMessage := wm_MouseWheel;
end else begin
{ Look for hidden mouse window }
hWndMouse := FindWindow ('MouseZ', 'Magellan MSWHEEL');
if hWndMouse <> 0 then begin
{ We're in business - get the scroll line info }
fIntelliWheelSupport := True;
mQueryScrollLines := RegisterWindowMessage ('MSH_SCROLL_LINES_MSG');
fIntelliScrollLines := SendMessage (hWndMouse, mQueryScrollLines, 0, 0);
{ Finally, get the custom mouse message as well }
fIntelliMessage := RegisterWindowMessage ('MSWHEEL_ROLLMSG');
end;
end;
if (fIntelliScrollLines < 0) or (fIntelliScrollLines > 100) then fIntelliScrollLines := 3;
end;
procedure TColorStringGrid.WndProc (var Message: TMessage);
function GetShiftState: Integer;
begin
Result := 0;
if GetAsyncKeyState (vk_Shift) < 0 then Result := Result or mk_Shift;
if GetAsyncKeyState (vk_Control) < 0 then Result := Result or mk_Control;
if GetAsyncKeyState (vk_LButton) < 0 then Result := Result or mk_LButton;
if GetAsyncKeyState (vk_RButton) < 0 then Result := Result or mk_RButton;
if GetAsyncKeyState (vk_MButton) < 0 then Result := Result or mk_MButton;
end;
begin
{ If the message is non-native, eat the non-native message and post a native }
{ message. We don't call Inherited, thus ensuring original message is discarded. }
if (Message.Msg = fIntelliMessage) and (fIntelliMessage <> wm_MouseWheel) then begin
{ We need to convert the non-native info into native format. Bleugh! }
PostMessage (Handle, wm_MouseWheel, MakeLong (GetShiftState, Message.wParam), Message.lParam);
end else Inherited;
end;
hope that helps, and isn’t too patronising 😳
If you already had some code, than I hope this helps someone else!!
DSP
errr… doesn’t that already happen? especially if you use a library preset? I used to think that I had to reset every plug with each load, until Frits pointed out that when a preset is selected, press the ‘New’ button above the preset list, then ensure that ‘sync’ is highlighted and the plug’s state is saved…
or do you mean something else?
Frits… I have noticed a bug with this actually… whilst the data is saved, the name of the original preset that the ‘sync’ed one is based on gets forgotton. If you use say 3 instances of a plug, each with a library preset based on a different preset; then save all changes, quit and reload – all the library presets for that plug in the project now have the same name.. (I think they all go to either the first library preset name, or the name of the first preset in the plug, not worked out which it is yet..)
DSP
something like No bounce, or no boumce on tracks mapped to master out (and don’t allow anything to play if there is no master out mapping) might be a good work around.
couple that with the burst of white noice into the audio stream every 30-60 secs (make it variable)…
DSP
sadly, this is a fact… The host loads the dll into it’s own address space, and so if there is a bad exception, windows sees the host, not the dll, and zaps it!
the best host exception catching in the world will not stop some crashes!
o well, c’est la vie (or in this case, c’est la mort!)
DSP
I always ask myself tough questions strolling around town!!!
The mono thing explains the signal not being red on the master channel!
I’m unresolved as to whether I’m for or against the gain/ automation theing. I must admit, I’ve gotten used to it; and I do understand how you arrived at your conclusion. We’ll see what others say!
ta for replying!
Duncan
very nice!
err.. is the two mixers thing so that with many tracks you can have the top half showing the first lot, and the bottom detailing the rest?
Not sure if it would suit me, but it looks a very professional setup!
DSP
@ageis wrote:
I’m not sure how many gui-less VSTs I own (most likely very few)
mda plugs are the most common. I use them quite a lot… But most ‘modern’ VSTs are GUI’d..
DSP