• O3_417072
  • 20.9MB
  • zip
  • 0
  • VIP专享
  • 0
  • 2022-04-28 04:13
go-dsp吉他 该项目基于电路仿真领域的概念和算法,为电吉他和其他乐器实现了跨平台多通道多效果处理器。 该软件从N个音频输入通道获取信号,对其进行处理,并提供N + 3个音频输出通道。 用户可以,例如,将来自各个乐器的信号连接到他/她的声卡/音频接口的单独输入通道。 然后获取输入信号,并通过专用信号链进行处理。 该软件为每个输入提供一个专用的信号链。 然后,将每个链中最后一个处理元素的输出发送到一个输出通道,为每个输入通道提供一个输出通道。 其余的三个输出通道包括一个专用的节拍器,该节拍器创建一个单音节拍音轨,以及一对“主输出”通道,可对所有处理过的信号进行立体声混音,例如用于监视目的。 为了操纵信号,用户可以从各种高度可定制的信号处理单元中进行选择,包括以下内容。 信号/函数发生器 噪音门 带通滤波器 自动哇音(跟随包络的带通滤波器) 自动yoy(包络跟踪梳状滤波器) 压缩机
# go-dsp-guitar This project implements a cross-platform multichannel multi-effects processor for electric guitars and other instruments, based upon concepts and algorithms originating from the field of circuit simulation. The software takes the signals from N audio input channels, processes them and provides N + 3 audio output channels. The user may, for example, connect the signal from individual instruments to separate input channels of his / her sound card / audio interface. The input signals are then taken and put through dedicated signal chains for processing. The software provides one dedicated signal chain for each input. The output from the last processing element in each chain is then sent to one of the output channels, providing one output channel for each of the input channels. The remaining three output channels include a dedicated metronome, which creates a monophonic click track, as well as a pair of "master output" channels providing a stereo mixdown of all processed signals, say for monitoring purposes. To manipulate the signal, the user may choose from a variety of highly customizable signal processing units, including the following. - signal / function generator - noise gate - bandpass filter - auto-wah (envelope-following bandpass filter) - auto-yoy (envelope-following comb filter) - compressor / limiter - (multi-)octaver - excess (distortion by phase-modulation) - fuzz (asymmetric hard or soft saturation) - overdrive (symmetric soft saturation) - distortion (symmetric hard saturation) - tone stack (four-band equalizer) - (multi-)chorus - flanger (simple LFO-driven comb filter) - phaser (complex LFO-driven comb filter) - tremolo (amplitude modulation) - ring modulator - delay (echo) - reverb (ambience) - power amplifier simulation - cabinet simulation In addition, the software provides ... - a means to dynamically control the latency of the audio hardware / JACK server - a highly sensitive, fully chromatic instrument tuner based on the auto-correlation function - a room simulation (spatializer) to create a stereo mixdown from all (processed) instrument signals - a metronome to generate a click track for the performing musician for synchronization - sampled peak programme meters (SPPMs) for controlling the signal level of each input and output channel ... and much more. The software itself runs in headless mode and is entirely controlled via a modern, web-based user interface, accessible either from the same machine or remotely over the network. It may operate either in real-time mode (default), where it takes signals from either the computer's audio hardware or other applications (e. g. a software synth) and delivers signals to either the computer's audio hardware or other applications (e. g. a DAW), via JACK, or in batch processing mode, where it reads signals from and writes generated output to audio files in either RIFF WAVE or RF64 format. It currently supports files in 8-bit, 16-bit, 24-bit and 32-bit linear PCM (LPCM), as well as 32-bit and 64-bit IEEE 754 floating-point format. Supported sample rates include 22.05 kHz, 32 kHz, 44.1 kHz, 48 kHz, 88.2 kHz, 96 kHz and 192 kHz. The simulation engine will adjust its internal time discretization to the selected sample rate. It will also use the highest precision available from the processor's floating-point implementation for all intermediate results. Only when the results are written to file or handed back to the JACK audio server, the (amplitude) resolution of the audio signal may be reduced, if required. ## Screenshots ![Screenshot 01](/doc/img/screenshot-02-thumb.png) [View full resolution image](/doc/img/screenshot-02.png) ## Running the software (from a binary package) Just download the binary (non-`src`) tarball from our *Releases* page, extract it somewhere, start JACK (e. g. via `qjackctl`), `cd` into the directory where you extracted *go-dsp-guitar* and run the `./dsp-*` executable which matches your target architecture. For example, on an x86-64 system running Linux, you may do the following. ``` cd go-dsp-guitar/ ./dsp-linux-amd64 ``` If you want to run the software in batch processing mode (without JACK) instead, replace the last line with the following. ``` ./dsp-linux-amd64 -channels 1 ``` Replace the number `1` with the actual number of input channels you want to process, then enter the sample rate (time discretization) you want the simulation engine to operate at. No matter if you run the software in real-time (JACK-aware) or batch processing mode, you should finally get the following message in your terminal emulator / console. ``` Web interface ready: https://localhost:8443/ ``` Point your browser to the following URL to fire up the web interface: https://localhost:8443/ You will find more documentation inside the web interface. ## Building the software from source locally To download and build the software from source for your system, run the following commands in a shell (assuming that `~/go` is your `$GOPATH`). ``` cd ~/go/src/ go get -d github.com/andrepxx/go-dsp-guitar cd github.com/andrepxx/go-dsp-guitar/ make keys make ``` (If you build using the `v1.0.0` source code package from the *Releases* page, instead of obtaining the source via `go get` from version control, you will have to `mkdir keys` before running `make keys`. In all other cases, do **not** run `mkdir keys` before `make keys`.) This will create an RSA key pair for the TLS connection between the user-interface and the actual signal processing service (`make keys`) and then build the software for your system (`make`). The executable is called `dsp`, but you may re-name it to match your architecture. For example, on an x86-64 system running on Linux, you may rename the executable as follows. ``` mv dsp dsp-linux-amd64 ``` ## Building the software from source for other architectures (cross-compilation) In addition, you may cross-compile the software from source for other architectures. Currently, the following targets are supported for cross-compilation. ``` make dsp-linux-aarch64 make dsp-linux-amd64 make dsp-linux-arm make dsp-win-amd64.exe make dsp-win-i686.exe ``` In order to cross-compile the software, you will need a cross-compilation toolchain and a populated `sysroot` for your target architecture. You may find it by invoking your cross-compiler with the `-v` option. For example, the `sysroot` may be one of the following. ``` /usr/aarch64-linux-gnu/sys-root/ /usr/arm-linux-gnu/sys-root/ /usr/x86_64-linux-gnu/sys-root/ /usr/x86_64-w64-mingw32/sys-root/ /usr/i686-w64-mingw32/sys-root/ ``` The `sysroot` for the Windows cross-compilation builds is set to `~/win-sysroot` from `v1.3.1` onwards. ## Packaging the software for distribution After you build either a binary for your system or cross-compiled binaries for different systems (or both), you can bundle your binaries, along with scripts and auxiliary data, into packages for distribution. ``` make dist ``` This will create a binary package under `dist/bin/go-dsp-guitar-vX.X.X.tar.gz`, as well as a source package under `dist/src/go-dsp-guitar-src-vX.X.X.tar.gz`. Rename these for proper semantic versioning. ## Other build targets There are other build targets in the `Makefile`. - `make clean`: Removes the `dist/` directory and the `dsp` executable built for your local system. - `make clean-all`: Removes the `dist/` directory, as well as all `dsp` executables built for your local system and cross-compiled for other systems. - `make fmt`: Format the source code. Run this build target immediately before committing source code to version control. - `make test`: Run automated tests to ensure the software functions correctly on your system. You should also run this before committing source code to version control to ensure that there are no regressions. ## Build requirements You may need the following packages in order to build the software on your system. - `gcc-aarch64-linux-gnu` - `gcc-arm-linux-gnu` -