Skip to content

Commit

Permalink
initialize repo
Browse files Browse the repository at this point in the history
  • Loading branch information
raphaelradna committed Jan 2, 2023
0 parents commit d37b91f
Show file tree
Hide file tree
Showing 23 changed files with 2,889 additions and 0 deletions.
Binary file added Extra/xenosInterface.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
674 changes: 674 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

32 changes: 32 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Xenos

Xenos is a virtual instrument plug-in that implements and extends the Dynamic Stochastic Synthesis (DSS) algorithm invented by Iannis Xenakis. It is open-source, cross-platform, and can be built in a number of plugin formats.

![](Extra/xenosInterface.png "The Xenos interface")

Features include:
- Authentic DSS engine
- Xenharmonic pitch quantizer
- Custom scale import in the [Scala](https://www.huygens-fokker.org/scala/) format
- Ten stochastic distributions with up to two parameters each
- First- and second-order random walks
- Variable number of segments per wave cycle
- Variable amplitude envelope
- Polyphonic (64 voices by default)
- MIDI implementation (notes, sustain, pitch bend)
- External MIDI controller assignment
- Parameter automation
- Simple and streamlined interface
- Free and open source

## Build

1. [Download](https://juce.com/get-juce/download) JUCE
2. Clone or [download](https://github.com/raphaelradna/xenos/archive/refs/heads/main.zip) Xenos
3. Open Xenos.jucer in the Projucer
4. Export the project for your IDE and platform (e.g. Xcode (maxOS) or Visual Studio 2019); see [here](https://docs.juce.com/master/tutorial_new_projucer_project.html) for help
5. Compile Xenos using your IDE (or make on Linux)
6. Copy the plug-in binary (e.g., Xenos.component, Xenos.vst3, etc.) to the proper location for your platform and host software
7. Open a suitable plug-in host application, add Xenos on a virtual instrument track, and enjoy!

## Pre-built releases and user manual coming soon!
Binary file added Resources/background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 25 additions & 0 deletions Source/ParamListener.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/*
==============================================================================
ParamListener.h
Xenos: Xenharmonic Stochastic Synthesizer
Raphael Radna
This code is licensed under the GPLv3
==============================================================================
*/

#pragma once

class ParamListener : public juce::AudioProcessorValueTreeState::Listener {
public:
ParamListener(XenosAudioProcessor& aP_) : aP(aP_) {}

void parameterChanged(const juce::String& parameterID, float newValue)
{
aP.xenosAudioSource.setParam(parameterID, newValue);
}
private:
XenosAudioProcessor& aP;
};
25 changes: 25 additions & 0 deletions Source/ParamMenu.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/*
==============================================================================
ParamMenu.h
Xenos: Xenharmonic Stochastic Synthesizer
Raphael Radna
This code is licensed under the GPLv3
==============================================================================
*/

#pragma once

#include "ParamListener.h"

struct ParamMenu : juce::ComboBox {
juce::Label label;
std::unique_ptr<juce::AudioProcessorValueTreeState::ComboBoxAttachment>
attachment;
ParamListener* listener;
std::string param, disp;

ParamMenu() {}
};
25 changes: 25 additions & 0 deletions Source/ParamSlider.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/*
==============================================================================
ParamSlider.h
Xenos: Xenharmonic Stochastic Synthesizer
Raphael Radna
This code is licensed under the GPLv3
==============================================================================
*/

#pragma once

#include "ParamListener.h"

struct ParamSlider : juce::Slider {
juce::Label label;
std::unique_ptr<juce::AudioProcessorValueTreeState::SliderAttachment>
attachment;
ParamListener* listener;
std::string param, disp;

ParamSlider() {}
};
Loading

0 comments on commit d37b91f

Please sign in to comment.