Main Page Modules Data Structures File List Data Fields Globals Related Pages
OVSP : Open Virtual Synthesizer Project
0.0.1
Summary
Download
Quick Start
Running
Tips
Compliling
Status
Documents
Modifying
Thanks
Forum
Disclaimer
Developers
OVSP (Open Virtual Synthesizer Project) is an open source project which provides
- A VST host program
- Redisutributable implementations of VST plugins
- A development environment for virtual synthesizers and effects
The goal of OVSP is to create a community which consists of both musicians and DSP programmers. Musicians can contribute to this project by providing their musics and requirments to and/or ideas of the software needed, and programmers can contribute by enhancing programs in this project and providing interresting synthesizers, effects and knowhow (technical information) of creating these programs.
With the VST host (in OVSP software), you can integrate a huge midi synthesizer from various VST instruments and effects for your musical compositions, and operate it from midi sequencers or midi keyboards.
As you see in a screenshot above,
- you can load VST instruments (green boxes) and VST effects (red boxes) and connect them (like psycle or buzz)
- you can select a midi input device
- you can assign a midi channel to a VST plugin
For OVSP, a "song" consists of mainly two files:
- a midi file (.mid) which is created by a midi sequencer which you use
- a DSP pipeline definition file (.xml) which OVSP VST host program generates
and sample (.wav) files, etc.
Currently, only windows (XP, 2000, 98Me) version is available.
Temporalily unavailable.
You probavly have downloaded the binary distribution of OVSP. Double-click 'vsthost\vsthost.exe' to start the vsthost program of OVSP.
- [Step 1] Push 'OpenGraph' button.
- [Step 2] Select a song data (.xml file).
- [Step 3] Push 'PlayMidi' button.
Obtain a binary distribution (ovsp-bindist.zip). All executables are statically linked, so you need *no* additional program or library if you want to just play sample songs. If you want to compose songs, you need some midi sequencer (e.g. the Jazz++ midi sequencer), VST plugins (you can find many free VST plugins on web) and a midi loopback device (midi loopback (midi yoke)).
Currently, only windows (XP, 2000, 98Me) version is available. But we are developping in a very portable way. We use mingw C compiler, and GUI's are written in Tcl/Tk. So you can convert whole programs into linux or mac easily.
- Download a binary distribution of OVSP.
- Double-click 'main.exe' in "ovsp-bindist\vsthost".
- Now execute the internal midi file player in the VST host program.
- After a few second (be patient), if you hear a jazz blues with a bass and a guitar which players seem to be drunken, everything is OK. The sound is terrible, but this is because the implementation of my synth is terrible. If you use other plugins, you can get better sound.
If you have some trouble (e.g that you cannot execute the internal midi player) and your OS is not the english version or the japanese version, or you use Windows98(Me), place the ovsp folder on top of a drive (e.g. C:\ovsp-bindist).
(This is not included in the binary distribution. If you got the binary distribution, please skip this subsection.)
This is a demonstration of 'the synthesizer development environment'. In this environment, you can use ready-made gui for parameter adjustment and can generate the VST plugin version of your synthesizer automatically.
I am developping this synthesizer (with 2 oscillators + one envelope + one lpf, no lfo currently) and am struggling terribly. Are there anyone to teach me how to create a virtual synthesizer? (We have to develop at least a drum sampler, so-called sampler (not for drum), reverve and delay.)
- You need a midi keyboard.
- Double-click 'plugins/synth1/main.exe'
- Install a midi loopback device (e.g. midi loopback (midi yoke)).
- Install a midi sequencer. I strongly recommand the Jazz++ midi sequencer.
- Find and download VST plugins (free or not free).
- Set the midi-in device to a virtual device which is provided by a midi loopback device software and to which a midi sequencer send midi messages (or execute by typing 'main.exe <device no>').
Or you can select a midi-keyboard device to test VST plugins without a midi sequencer (You need a midi keyboard, of course).
- Load VST plugins (with double clicking on empty space of the canvas), connect them and assign midi channels to VST synthesizers.
- Edit the midi sequence on your midi sequencer, change plugin's presets, change plugin's parameters on the OVSP VST Host. On right clicking plugin (boxes on the canvas), you get a menu from which you can start editting gui, change programs, toggle mute and delete plugins.
On right clicking connections (lines on the canvas), you get a menu from which you can change the connection volume and delete connections.
To connect plugins, left click on the source plugin with the shift key pressed and drag the mouse to the destination plugin and release the button.
- Do not forget saving the midi file from the midi sequencer and the xml file from the OVSP VST Host.
SYNOPSYS
main.exe [mididev] [dlldir] [songdir]
DESCRIPTION
- mididev: midi device number
- dlldir: top directory (folder) in which VST plugin dlls are located
- songdir: top directory (folder) in which dsp definition files (.xml) are located
With 'dlldir', you can specify the initial directory of the dll file selector and the range for the dll searching (when the OVSP Vsthost fails to load dlls in DSP (.xml) files).
If you are using the program launcher, I strongly recommend specifing these arguments in the start option for the vsthost in your launcher.
If you are not using the program launcher, please create appropriate batch files (.bat).
The following softwares are needed to generate OVSP software:
This is the hardest part of the building process.
- 'cd' to 'win' directory.
- configure with '--disable-shared' option.
- type 'make' and you get 'libtcl84s.a' and 'libtk84s.a'. When I tried to build version 8.4.1 of tcl/tk, there was a symbol confliction between the mingw system and the Tcl. So, I had to change few lines of the Tcl source code. Why? and who should be blamed? I do not know. But this problem has been solved in later versions (at least 8.4.6).
- (optional) type 'make install' if you want to put them in /usr/local/lib.
This is slightly hard, too, if you compile tDOM on cygwin bash with mingw and if you use c:\mingw\bin\gcc.exe instead of mingw in cygwin. Below is what I did.
- type 'configure --disable-shared'.
- edit the generated Makefile to change msys-recognizable path into cygwin-bash-recognizable path. that is to change '-I/home/...' into '-Ic":\cygwin\home\..."'.
- change 'TCL_LIBS= ' into 'TCL_LIBS=c:/cygwin/usr/local/lib/libtcl84s.a'.
- type 'cp ../unix/tclAppInit.c .'
- type 'make'.
- (optional) type 'make install' if you want to put them in /usr/local/lib.
hmmmm... the difference between mingw/msys-acceptable-path notation and cygwin path notation is very compicated for me...
- type 'gcc mktclapp.c -o mktclapp.exe' and do not forget locating the executable in the folder which is in $PATH varible.
But mktclapp has some mismatches with current version of Tcl (I use 8.4.1). I fixed this problem and found this fixing was very easy. So, you will not feel hard, but if so, please mail me. Mktclapp is GPL lisenced, so I will send you modified source code. (or here is the diff.)
You have to build iconv on Msys(MinGW) and then copy the contents in 'include' and 'lib' directories into cygwin's /usr/local.
- type 'configure --disable-shared', 'make' and 'make install' on Msys/Mingw.
- copy the contents in 'include' and 'lib' directories into cygwin's /usr/local.
- create a new folder. 'c:\cygwin\home\your_name\src\ovsp-build' may be good.
- gunzip/untar or unzip source tarball/zipball, and you will get 'c:\c:\cygwin\home\your_name\src\ovsp-build\ovsp'.
- unzip steinberg's vstsdk 2.0 (vstsdk20win.zip), and you will get 'c:\c:\cygwin\home\your_name\src\ovsp-build\vstsdk2'.
- create an another new folder in 'ovsp-build' and name it 'ovsp-dlls'. copy 3 folders below in the ovsp binary distribution.
- below is the final structure of 'ovsp-bindist'.
- change the location of Tcl/Tk, tDOM libraries and iconv in ${TOP}\Makefile.inc.
- currently, no configure(.in).
- 'cd' to top directory.
- type 'make'.
no problem. install pool and cgi module and then build autodoc.
- 'cd' to 'doc' directory.
- type 'make'.
OVSP is in a very early stage of development. No robustness, many bugs and unstable. Do not use this for serious purpose.
- < generators >: 808 Drums.dll A0 DKL.dll Ameoba.dll Barking Wombat.dll Cadencia.dll Cheeze Machine.dll Claw.dll Crazy Diamonds.dll Crystal.dll Delay Lama.dll Earth-Synth.dll Foxglove.dll FreeAlpha.dll Leto.dll LightBag II.dll LoopAZoid.dll Oberon-4.dll OnePingOnly.dll PM4.dll Phibes.dll PikoSampler.dll PortaSampler.dll SC MonoOne.dll Satyr.dll Snorgan.dll Sympho.dll Synth1 VST.dll TK CUE-Synth.dll Tau.dll TickyClav.dll Triangle I.dll VOPM.dll Vivaldi.dll Whistler.dll Wombat Solina Horn.dll Wombat Solina Trumpet.dll Wombat Solina Viola.dll Wombat Solina Violin.dll ZR1.dll ZR3.dll dann-6.dll dfx-dev block test synth.dll dmiHammer.dll ganymed.dll iblit.dll mda JX10.dll mda Piano.dll mda ePiano.dll organ9p.dll osc321.dll polyiblit.dll reddevil.dll JX220.1.1.dll Maestro.dll SoloString_v10.dll 3S.dll DirtBag.dll GalactiX.dll Lizard2.dll Richman.dll abacus.dll ANT.dll Etiquet.dll Gargoyle.dll Meta4.dll Rticul8.dll anenome.dll Cosmogirl2.dll Etiquet2.dll JCspookOrgan.dll Morphiza.dll UltradiaSE.dll primary.dll Devil.dll Flea3.dll JG-3.dll RGB3.dll Vectis.dll ring.dll 4Front Bass Module.dll 4Front EPiano Module.dll 4Front Piano Module.dll 4Front Rhode.dll MaTricks.dll intermod.dll sfum.dll EZpoly.dll San Ra.dll Samplexer_i.dll Triangle I.dll defend.dll field.dll linus.dll pressure.dll rebar.dll rotovier.dll tapeworm.dll dmiflute.dll Reaktor4Demo.dll
- < effects >: BassChorusV22.dll Big Tick Dual Delay.dll Black Water Reverb.dll H2O.dll NorthPole.dll dfx MIDI Gater.dll dfx Skidder.dll florus.dll Big Tick Hexaline.dll Big Tick NastyShaper.dll Bitcrusher.dll Bouncy.dll CamelPhatFree.dll Cyanide.dll Cyanide2.dll FreeverbToo15.dll LittleDuck.dll MadShifta.dll PalancarWare Empire.dll PlogueMixedGrains.dll PlogueRebuilder.dll RoomMachine844.dll RubyTube.dll SupaPhaser.dll Trashcoder0_801b.dll bandspin.dll dfx-dev block test effect.dll mda Degrade.dll mda Overdrive.dll mda Stereo.dll mda SubSynth.dll respass.dll stepper.dll
scuzzphut6.dll
You can see documents on module interface from links on top of this page. For gui part (Tcl programs), see
If you installed Tcl/Tk and tDOM properly, and if you want to modify the GUI of OVSP vsthost, the simplest way is to change three lines below
#package require tdom
# Stubs of C module (tcl bindings of plugin operations in C)
if {0} {
into package require tdom
# Stubs of C module (tcl bindings of plugin operations in C)
if {1} {
at first. Then you can execute only gedit.tcl as 'wish8.4s gedit.tcl' and you can edit and try the script easily. If you finished modifying gedit.tcl then restore lines above and 'make' again.
If you want to change the presentation, rewrite these procedures below in 'gedit.tcl'.
- proc macDispCreate {id pluginType c x y name}
- proc macDispDelete {id c}
- proc macDispEnter {id c}
- proc macDispIsInside {id c x y}
- proc macDispCenterCoordsPix {id c}
- proc macDispTopLeftCoordsCenti {id c}
- proc macDispMoveToPix {id c x y}
- proc macDispTogleMute {id}
- proc macDispMoveDiff {id c srcX srcY dstX dstY}
- proc conDispCreate {c x1 y1 x2 y2}
- proc conDispStartDrawing {c mid x y}
- proc conDispContinueDrawing {c x y}
- proc conDispEndDrawing {c x y}
- proc conDispDelete {cid c}
- proc conDispEnter {cid c}
- proc conDispMoveSrcTo {cid c x y}
- proc conDispMoveSinkTo {cid c x y}
Tcler's joinning into this project is welcome.
You can try a modified gui with [Settings]->[Gui]->[new].
The file path strings in Tcl are encoded in 'UTF-8'. And my C module gets these strings and thinks they are encoded in local code (e.g. SHIFT-JIS in the japanese version of windows OSs). This is the problem. So I use iconv to convert UTF-8 into the local code. If your OS is not the english version or the japanese version, then change a line below in vsthost/conv.c.
void conv(char *instr, char *obuf, int olen)
{
char ibuf[4096];
size_t ilen = strlen(instr);
iconv_t cd = iconv_open("SHIFT-JIS", "UTF-8");
But this is true only if you use NT, 200, XP. If you use Windows98(Me), place the ovsp folder on top of a drive (e.g. C:\ovsp-bindist) or get the binary for Windows98(Me).
thanks to all developpers of great softwares which we are using to develop and to run OVSP.
Below is a list of the synthesizers and their developers who allowed us to redistribute their synthesizers with OVSP distribution. We thank all of them.
A message board of OVSP is here. Feel free to write requirements or to report bugs. Currently, the Message Board Systems's guidance is in Japanese.
The Software and any accompanying files are provided "as is". You are using this software entirely at your own risk. The author provides no warranty and cannot in any way be held responsible for anything this software does.
- WATANABE (NEUE-Engineering)
- Kudoh (NEUE-Engineering)
- satoimo
- Masao Onishi --- Main developer (xyzoni2jp[AT]yahoo[DOT]co[DOT]jp)
VST is registered trademarks of Steinberg Media Technologies GmbH.
Many programs in this package are Copyright 2004 Masao Onishi <xyzoni2jp[AT]yahoo[DOT]co[DOT]jp> and are distributed under the GPL License. See each source file for details and the COPYING
file for full legal details.
Generated on Thu Jun 17 01:18:01 2004 for ovsp by
1.2.18