/[svn]/gigedit/trunk/ChangeLog
ViewVC logotype

Contents of /gigedit/trunk/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3624 - (show annotations) (download)
Wed Oct 2 17:11:30 2019 UTC (4 years, 5 months ago) by schoenebeck
File size: 26205 byte(s)
* GIG SOUND FORMAT EXTENSION: Added combo box for selecting a wave form
  type for each one of the 3 LFOs (i.e. for overriding the default LFO
  sine wave form to either triangle, saw or square instead).

* GIG SOUND FORMAT EXTENSION: Added slider for each one of the 3 LFOs
  for altering the phase displacement of the respective LFO (that is
  for moving the LFO's start level horizontally on the time axis).

* GIG SOUND FORMAT EXTENSION: Added checkbox "Flip Phase" to LFO 3
  (the original Gigasampler/GigaStudio software only supported that
  option for LFO 1 and LFO 2).

* Bumped version (1.1.1.svn3).

1 Version SVN trunk (?)
2
3 * Script Editor: Added syntax highlighting support for standard measurement
4 units (and their potential metric prefix).
5 * Require C++11 compliant compiler.
6 * Draw LFO curves according to settings for each one of the 3 LFOs.
7 * Added 2 new tabs (a 3rd tab for "Amp" and a 3rd tab for "Filter").
8 * Shortened "Amplitude" -> "Amp" on tabs (to save space).
9 * Increased default window width 865px -> 960px.
10 * Script Editor: Show warning message in status line if Gigedit was compiled
11 without liblinuxsampler support (to make user aware about limited features).
12 * GIG SOUND FORMAT EXTENSION: Added combo box for selecting a wave form type
13 for each one of the 3 LFOs (i.e. for overriding the default LFO sine wave
14 form to either triangle, saw or square instead).
15 * GIG SOUND FORMAT EXTENSION: Added slider for each one of the 3 LFOs for
16 altering the phase displacement of the respective LFO (that is for moving
17 the LFO's start level horizontally on the time axis).
18 * GIG SOUND FORMAT EXTENSION: Added checkbox "Flip Phase" to LFO 3
19 (the original Gigasampler/GigaStudio software only supported that option
20 for LFO 1 and LFO 2).
21
22 Version 1.1.1 (2019-07-27)
23
24 * Script Editor: Fixed some minor issues with vertical line number bar
25 (which was editable, selectable and incorrectly displayed on new scripts).
26 * Translation Fix: MacroEditor.cpp and MacrosSetup.cpp were not under
27 translation control.
28 * Spelling fixes (patch provided by Debian maintainer Jarom��r Mike��).
29 * Added new main menu item "View" -> "Tooltips for Beginners" which allows
30 to disable tooltips intended for newbies only (default: on).
31 * Extended support for keyboard function keys up to F19.
32 * List assigned scripts as colored tooltip when hovering mouse over the
33 "Scripts" column in the instruments list.
34 * Added global keyboard accelerator Shift + Backspace for dropping all script
35 slots from an instrument.
36 * Added option to save as gig v4 file (File -> Properties).
37 * Fixed duplicate items in File -> Properties -> "File Format" combo box.
38 * GIG SOUND FORMAT EXTENSION: Added combo box "Sustain Release Trigger" which
39 can be used to optionally play release trigger samples on sustain pedal up.
40 * GIG SOUND FORMAT EXTENSION: Added check box "No note-off release trigger"
41 which allows to disable release trigger samples on regular MIDI note-off.
42 * Fixed compiler errors with Gtk 3.24.x (patch by Miroslav ��ulc).
43 * Fixed some compiler warnings
44 * Avoid non-standard offsetof usage (to get rid of gcc warnings)
45 * Use GDK Seat API if available to grab pointer
46 * Improve version checks for pangomm
47 * Fix the instrument list tooltip handling so it doesn't generate
48 GTK assertion error messages
49 * Use English quotation marks in tooltips instead of German
50 * Use multiple columns in controller value popups, as tall popup
51 menus work really badly in some GTK environments
52 * Avoid deprecated sigc++ usage
53 * Fix build on old linux environments
54 * Enable "silent rules" in build
55 * Fix memory read access bug
56 * Refactor code: add common base class for Loader and Saver
57 * Fix resource leak: join loader and saver threads after use
58 * Use std::thread when building with newer glibmm, as Glib::Thread is
59 deprecated
60 * Fix bug that left the main window in a greyed out state after
61 opening a small gig file
62 * Set gtk settings a bit later to prevent warnings
63 * Use standard name for gdk pixbuf module file on Mac
64 * Look for locale files under directory share on Mac
65 * Support bundled gtk3 on Mac
66
67 Version 1.1.0 (2017-11-25)
68
69 * allow building with G/GDK/GTK_DISABLE_DEPRECATED
70 * fixed building without linuxsampler on Mac
71 * fixed some compiler and cppcheck warnings
72 * synthesis paremeter page tabs are now scrollable (fixes an issue with
73 GTK 3: default theme uses huge tabs which breaks the overall layout on
74 average window sizes)
75 * Automake: set environment variable GCC_COLORS=auto to allow GCC to
76 auto detect whether it (sh/c)ould output its messages in color.
77 * NKSP Editor: Added support for liblinuxsampler's NKSP syntax
78 highlighting backend.
79 * Script Editor: Some color tweaks (using now same text colors as on
80 the NKSP refrence documentation website).
81 * Script Editor: Added support for liblinuxsampler's NKSP parser
82 backend for displaying parser errors and warnings directly within
83 the source code.
84 * User settings are now automatically saved and restored.
85 * Automatically save & restore window size and position.
86 * Script Editor: Show precise parser error/warning messages as tooltip
87 when the mouse points over the respective location in the script's
88 source code.
89 * Script Editor: Show a question dialog to the user when the editor is
90 to be closed and the script changes have not been applied yet.
91 * Script Editor: Added status bar at the bottom of the script editor
92 window showing the amount (if any) of errors and warnings.
93 * Script Editor: Added menu bar and two initial entries: "Apply" (Ctrl-S)
94 and "Close" (Ctrl-Q).
95 * Script Editor: if editor is used in live-mode, inform the sampler that
96 it needs to automatically reload the script after the script has been
97 altered and applied with the script editor.
98 * Added setting to main menu "View" -> "Auto Restore Window Dimension"
99 (disabled by default since it causes issues on some machines).
100 * Fixed crash after changing a dimension type with the dimension manager
101 dialog.
102 * Script Editor: Fixed editor which did not appear on some systems due
103 to missing icons (using now lists of alternative icon names).
104 * Script Editor: Added "Font Size ..." selection to editor's menu.
105 * Script Editor: Fixed crash on Ctrl + A, followed by Del.
106 * fixed crash when opening dimension manager dialolg multiple times
107 (and i.e. adding or removing dimensions each time)
108 * Show sample group name and CRC-32 checksum on "Sample" tab.
109 * Show instrument index number on instruments list view.
110 * Added multi-row selection support on samples tree view.
111 * Added multi-row selection support on instruments list view.
112 * windows, 32-bit: fixed crashes by making sure the stack in sub
113 threads is 16-byte aligned
114 * windows: look for the data directory in the parent of the dll
115 directory, if the dll directory is called "32" or "64"
116 * Implemented resizing multiple dimension region zones at once, which is
117 controlled by the infamous checkbox trio "all regions",
118 "all dimension splits" and "both channels".
119 * Implemented deleting dimension region zones of all regions at once, which
120 is controlled by checkbox "all regions".
121 * Implemented splitting up dimension region zones of all regions at once,
122 which is controlled by checkbox "all regions".
123 * Show graphical symbol on region that uses loop(s).
124 * Show graphical symbol on region that misses sample reference(s).
125 * Fixed crash on saving file if a sample was requested to be replaced twice
126 by the user.
127 * Implemented fast navigation through regions by keyboard accelerator
128 Ctrl+Left and Ctrl+Right (on Mac: Cmd+Left and Cmd+Right).
129 * Implemented fast navigation through dimension region zones of currently
130 selected region by keyboard accelerator Alt+Left, Alt+Right, Alt+Up,
131 Alt+Down, as well as simply using the arrow keys alone if the dimension
132 region chooser got focus (i.e. when it was selected by mouse previously).
133 * Color tweaking on selected regions and selected dimension zones.
134 * Dimension Region Chooser: Show main selected case in opaque blue color
135 (like before), but all other selected dimension zones with a blue hatched
136 pattern instead.
137 * Dimension Region Chooser: Show the label of the currently selected
138 dimension in bold font.
139 * Implemented selecting multiple dimension region zones by keyboard with
140 keyboard accelerators Alt+Shift+Left and Alt+Shift+Right.
141 * Implemented copy & paste of DimensionRegion (with Alt+c and Alt+v).
142 * Dimension Region Chooser: Mark all zones auto selected by check box trio
143 with gray hatched pattern.
144 * Region Chooser: Mark all regions which are auto selected by check box
145 "All Regions" with gray hatched pattern.
146 * Introduced "Macro Editor" for adjusting clipboard content before applying
147 it (accessible via Alt+x).
148 * Introduced configurable list of macros which are auto assigned to keyboard
149 accelerators (F1 ... F12) and saved along with the app's config file.
150 * Macro Editor: Fixed deleting rows when delete button was hit without Ctrl
151 being pressed.
152 * Macro Editor: Show combo box with textual options for enum types.
153 * "Macro" main menu section: show macro comments as tooltip.
154 * Macro Editor: Display demangled C++ type names.
155 * Macros Setup: Implemented cloning of macros.
156 * Live mode performance optimization: fixed the editor to be non-responsive
157 for a very long time, which happened if changing instrument parameters of a
158 very large amount of dimension regions was requested.
159 * Macro Editor: Handle boolean parameter types appropriately, i.e. show
160 'Yes' or 'NO' instead of '1' or '0'.
161 * GTK3: Bringing back icons and keyboard accelerators / mnemonics for menus
162 and buttons with GTK3; Cudos to those GTK heros who thought it might be
163 a clever idea to simply remove such features for all users, all devices
164 and all apps by default with GTK3!
165 * Autoconf: check for presence of at least gtk+-2.0-dev.
166 * Instruments list view: show amount of real-time instruments scripts used
167 by instrument.
168 * Script Editor: Fixed Gtk crash while entering a variety of ill formed code
169 like unterminated string literals.
170 * Assigned more useful default dimensions (and default position) for various
171 windows and dialogs (if auto-restore of user's own custom window
172 dimensions is disabled).
173 * Mac fix: Make sure app window appears in front of all other apps.
174 * Script Editor: only if compiled without liblinuxsampler; added support for
175 new NKSP language keyword "synchronized".
176 * Script Editor: strike through code blocks filtered out by the preprocessor.
177 * Combine Tool: Show instruments' index number in the list view.
178 * Combine Tool: Now it allows to select the instruments to be combined
179 already in the main window's instruments list view; then either call the
180 combine instrument dialog from the main menu or use the new keyboard
181 shortcut Ctrl + j.
182 * Combine Tool: Added a vertical list which represents the order of the
183 selected instruments to be combined; dragging them modifies their order.
184 * Combine Tool: After returning from the combine tool dialog, automatically
185 scroll to the newly added (combined) instrument.
186 * Draw icons on individual dimension region zones, similar to the icons
187 already been drawn on regions.
188 * Fixed loop and sample reference icons being displayed incorrectly sometimes,
189 because unused dimension regions were not ignored.
190 * Script Editor: Show line numbers.
191 * Script Editor: Right aligned line numbers.
192 * Script Editor: Fixed font readability issue on Mac.
193 * Added EG state machine options for EG1 and EG2, which may be used to
194 configure whether the individual EG stages may be cancelled.
195 * Fix: after the combine instruments dialog, the new instrument was not
196 correctly displayed by the GUI as being selected.
197 * Fix: automatically reload instrument after script slots have been modified.
198 * Combine Tool: OK button has focus now by default to quickly combine
199 instruments by pressing Return key.
200 * Added keyboard accelerators Shift+F1 to Shift+F12 for quick assigning
201 a script to the currently selected instrument, and an appropriate
202 additional menu "Instruments" -> "Assign Script".
203 * Added keyboard accelerators Ctrl + Arrow Down and Ctrl + Arrow Up for
204 switching between instruments.
205 * Added search filter field which allows to quickly filter the instrument
206 list by case insensitive search tokens.
207 * Fix: navigating between dimension zones by keyboard did sometimes not
208 work after switching from an instrument with different dimension types.
209 * Fix: Sample references view dialog had some odd behaviors, like it did not
210 respond to mouse scroll events for instance.
211 * Debian: Raised Debian compatibility level to Debian 9 "Stretch".
212 * Raised max. pitchbend range to 48 semi tones.
213 * Added experimental support for upcoming GTK(MM)4
214 (for now up to GTKMM 3.91.2 while still preserving backward compatibility
215 down to GTKMM 2).
216 * Re-merged r2845 to compile now with and without Gtk "Stock ID" API
217 (see also r3158).
218 * Visual cosmetics on Gtk 3.
219 * Script Editor: Use consistent font size on all screens and DPI settings.
220
221 Version 1.0.0 (2015-07-17)
222
223 * minor fix in configure for cross-compiling
224 * minor Makefile fix for parallel make
225 * use Cairo instead of deprecated gdk drawing primitives
226 * avoid deprecated gtk methods when using newer gtk versions
227 * raised minimum supported gtkmm version to 2.8
228 * ported to gtkmm 3, keeping compatibility with gtkmm 2
229 * gtkmm 3 fix: rewrote the custom widgets (regionchooser and
230 dimregionchooser) so they only draw pixels in the on_draw
231 method. This should make them work again in newer gtkmm 3
232 environments.
233 * added support for new glibmm threads API
234 * gtkmm 3 fix: the WrapLabel custom widget is not needed in gtkmm 3
235 * fixed building on Debian testing (#186)
236 * modernized configure script
237 * added graphical curves for velocity response and crossfade
238 * added "Duplicate Instrument" function
239 * fixed import of 32 bit float wav files
240 * code refactoring: created a PropEdit class for property editor
241 windows, moved Table class from mainwindow to paramedit
242 * minor gui tweaks: made note entry fields a bit wider, set a
243 minimum width for scales
244 * bug fix: avoid stale information in the instrument properties
245 window when a new file is loaded or the instrument is removed
246 * cross fade graph: draw curves of all layers in the same graph
247 * made sure the instruments menu is updated when instruments are
248 added, removed or renamed
249 * fixed name entry field in instrument properties window
250 * use character encoding Windows-1252 for all strings in gig files
251 * show dimension zone start and end as numeric text labels
252 * copying sample informations automatically may now be disabled from the
253 new "Edit" main menu
254 * import 'fine tune' when importing samples with libsndfile
255 * Mac OS X: initialize gtk and gettext with files from base
256 directory of the libgigedit library
257 * Mac OS X: fixed "recently used" in file dialogs
258 * Mac OS X: avoid crash when starting gigedit as an application
259 bundle
260 * Mac OS X: try to launch the GUI on the process's "main" thread
261 * show build date and libgig version number in about dialog
262 * added dialog for editing the CtrlTrigger and Legato midi rules
263 * if there is no region yet, show a red hint text to the user that he may
264 right click on the region chooser area to add a region
265 * added tooltips to main menu entries (was buggy before)
266 * added tooltips to instruments tree view and samples tree view
267 * added various tooltips and adjusted some labels on the region settings
268 pane
269 * GIG SOUND FORMAT EXTENSION: only a small set of possible MIDI controllers
270 was selectable for EG1 controller, EG2 controller and attenuation
271 controller (and no CC number was shown in the combo box). Obviously the
272 additional MIDI controllers can only be used with LinuxSampler, they would
273 not work with Gigasampler/GigaStudio. A warning message will be shown
274 though whenever somebody tries to use one of those extension controllers.
275 * Combine instruments: a new feature that allows to merge a selection of
276 instruments to one new single instrument. It uses the 'layer' dimension
277 to stack up the instruments. This feature is available from the main menu
278 under 'Tools' -> 'Combine Instruments'.
279 * Dimension zone amount: Support for increasing and decreasing the amount of
280 dimension zones by right clicking on the respective zone and either
281 selecting "delete" or "split" in the popup menu.
282 * Combine instruments: generalized this tool to allow combining instruments
283 based on any dimension, not only the 'layer' dimension.
284 * 'Dimension Manager' dialog: show dialog window with at least 460x300px on
285 initial usage (was far too small by default).
286 * File Property Dialog: allow viewing and altering the Giga file format
287 version (by combo box).
288 * 'Dimension Manager' dialog: added support for viewing and editing
289 dimensions of all regions simultaniously.
290 * GIG SOUND FORMAT EXTENSION: Added support for managing and editing
291 real-time instrument scripts. Instrument scripts are a LinuxSampler
292 extension of the original Giga format and will not load with the
293 GigaStudio software.
294 * GIG SOUND FORMAT EXTENSION: Added support for managing script slots for
295 instruments. Script slots define which scripts shall be executed for an
296 instrument by the sampler and in which order.
297 * Samples tree view on main window: display the amount of references for
298 each sample and show the respective sample in gray color in case it is not
299 referenced at all.
300 * Samples tree view: implemented sample reference browser, which shows a
301 tree with all instruments and their respective regions which reference the
302 selected sample once ore more.
303 * Restructured main menu: duplicated all popup menus to the main menu,
304 automatically switch to the right tree view tab when either selecting the
305 "Sample", "Instrument" or "Script" main menu entry.
306 * Dimension Region Selector: implemented multi zone selection by press and
307 hold CTRL key.
308 * Dimension Region Selector: show bottom and upper limit values for all
309 dimension zones, not just the currently selected ones.
310 * Dimension Region Selector: Fixed drawing issues when zone sizes were
311 altered by mouse drag and labels being displayed at wrong positions.
312 * Region Chooser: Double click opens dimension manager dialog.
313 * Dimension Manager: Clicking on dimension type cell of an existing dimension
314 opens a popup to alter the dimension type.
315 * Script Tree: Double click opens script editor.
316 * Fixed potential crash if exception was thrown while opening a gig file.
317 * Added support for visual progress bar while saving a gig file.
318 * Automatically switch the sampler's (audible) instrument whenever another
319 instrument was selected in gigedit (this default behavior can be switched
320 off in the settings menu of gigedit).
321 * Dimension Region Editor: Show coarse sample format info (audio channels,
322 bit depth, sample rate) and unique sample ID (since the gig format allows
323 different samples to have the same name).
324 * Dimension Region Editor: Added button "Select Sample" on the sample tab,
325 which allows to conveniently select the dimension region's sample on the
326 left hand side's samples tree view.
327 * Sample Referenve View Dialog: Clicking on a reference in the list closes
328 the dialog and jumps directly to the respective instrument, region and
329 dimension region the respective sample reference is located at.
330 * Fixed instruments, samples and scripts to appear twice after save.
331 * Implemented reordering of instruments by drag & drop.
332 * Implemented replacing of existing samples.
333 * Added "X" button next to sample reference field, which allows to remove
334 the current sample reference, allowing to create a "silent case" where
335 no sample shall be played.
336 * Fixed file name disappearing from title bar on certain actions.
337 * Added new menu item "View"->"Refresh All".
338 * Added new menu item "Samples"->"Remove Unused Samples".
339 * Region Chooser: when moving a region around automatically move the
340 keyboard position dependent pitch accordingly (can be turned off with
341 "Settings"->"Move root key with region moved").
342 * Added option to main menu for performing "Save" operation with a
343 tempoary file (may perform faster than directly modifying existing
344 .gig file).
345
346 Version 0.2.0 (2009-07-31)
347
348 * fixed file properties dialog - properties now can be edited
349 * gig files where regions are not internally ordered are now handled
350 * the resize mouse pointer is not shown anymore for regions that
351 can't be resized
352 * the region and dimregion chooser widgets are now resizable
353 * bugfix: sometimes you could not delete more than one dimension
354 * filter headers are now also greyed out when the filter is inactive
355 * autoconf fix: LS plugin dirs with digits in their prefix
356 (e.g. "/usr/lib64/foo") are now resolved in relative dirs as well
357 (show a warning when resolving the relative path failed)
358 * keys on the virtual keyboard now highlight on note on events on
359 sampler side
360 * virtual keyboard can now trigger notes for the sampler (only in
361 live-mode of course)
362 * implemented alternative behavior for the virtual MIDI keyboard
363 (selectable by combobox below the keyboard)
364 * show absolute velocity value of note-on & note-off events below
365 the virtual MIDI keyboard
366 * renamed misleading names regarding the gig format's "keyswitching"
367 feature (the dimension is now displayed as "keyswitching" instead of
368 "keyboard" in the dimregchooser widget and the two parameters for
369 defining the actual keyswitching area on the keyboard in the instruments
370 properties dialog are now called "Keyswitching range low/high" instead of
371 "Dimension key range low/high")
372 * added "replace all samples" function to samples popup menu
373 (patch by Anders Dahnielson, a bit extended, fixes #73)
374 * bugfix: dimension manager window didn't update when another region
375 was selected (#78)
376 * in "Save As..." dialog set inital filename to "copy_of_<filename>" and
377 show a warning message that saving to the same .gig file will corrupt
378 the sample wave data
379 * fixed compilation with gcc 4.3
380 * the "Add Samples" dialog now remembers current directory (patch by
381 Devin Anderson, fixes #81)
382 * it is now possible to create dimensions where the amount of zones
383 isn't a power of two (patch by Devin Anderson, #89, slightly
384 modified)
385 * fixed configure check for libsndfile loop support
386 * bugfix: when a stereo sample is replaced, make sure both zones of
387 the sample channel dimension get updated with the new sample
388 * minor gui fix: made multi line lables expand to use full width
389 * fixes for building the plugin with MinGW
390 * added rpm packaging file
391 (patch by Devin Anderson, slightly modified, fixes #88)
392 * made all visible strings translatable
393 * bugfix: inform the sampler when new file(s) has been imported on save
394 operation (#82)
395 * updated LinuxSampler plugin of gigedit to the latest liblinuxsampler
396 C++ API changes
397 * Windows: look for translations using base directory of libgigedit
398 dll
399 * virtual keyboard fixes: restore to grey when outside keyboard.
400 Don't trigger multiple notes for each key when moving mouse.
401
402 Version 0.1.1 (2007-12-06)
403
404 * multiple editor windows can now be opened by the plugin
405 * bugfix: gigedit didn't start on windows 2000
406 * standard gtk command line parameters is now handled
407 * parameter edits can now be applied to multiple regions and
408 dimension regions simultaneously - three checkboxes were added
409 that select if changes apply to all regions and/or all dimension
410 regions
411
412 Version 0.1.0 (2007-10-15)
413
414 * fixed compilation with older gcc versions
415 * added German translation
416 * reworked instrument properties dialog - properties can now be
417 edited
418 * restructured dimension region editor for elements to be in a more
419 logical and intuitive order
420 * added Makefile.cvs (just for standard compliance with other projects)
421 * added Debian packaging infrastructure
422 * implemented sample loop editing
423 * improved labels in dimension region editor
424 * use normal layout for checkboxes
425 * allow to resize dimension zones even when the respective dimension has
426 no custom dimension splits yet
427 * moved instrument editor into a shared library 'libgigedit', the 'gigedit'
428 binary is now just calling that shared library
429 * implemented an "instrument editor plugin" for LinuxSampler to allow
430 on-the-fly instrument editing within the sampler's own process
431 (revised directories to a more automake-friendly structure for this, to
432 avoid compilation and install errors)
433 * added experimental support to synchronize gigedit with LinuxSampler to
434 avoid race conditions / crash while modifying data structures
435 * added quick start documentation by Alexander Methke
436 * a changed file is now marked with an asterisk in the window title
437 * added close confirmation dialog, shown if file is changed
438 * "save" means "save as" for new files
439 * enabled acceleration keys
440 * add .gig to filename in "save as" if it's not already there
441 * filename character encodings other than utf-8 supported
442 * regions can now be moved, not just resized
443 * improved labels in instrument properties dialog
444 * remove file extensions from file names when importing samples
445 * added digits for octave numbers on the keyboard and made keys
446 outside piano range grey
447 * added support for 24 bit sample import
448 * when importing samples, settings for loops and root note are
449 copied from the sample files (if they have such settings)
450 * start with a new gig file by default
451 * make sure samplechannel dimension gets created for stereo samples
452 * allow building with older versions of gtk and libsndfile
453 * remember selected dimension when switching regions
454 * check if file is savable before trying to save
455 * gettext is now an optional dependency
456 * added Dev-C++ project files for Windows systems
457 * added status bar to the bottom of main window (independent area on the
458 right shows whether gigedit is running stand-alone or attached to
459 LinuxSampler)
460 * fixed crash when gigedit was compiled with CXXFLAGS="-g"
461
462 Version 0.0.3 (2007-03-24)
463
464 * first release of gigedit

  ViewVC Help
Powered by ViewVC