Skip to content

Commit

Permalink
Update doc
Browse files Browse the repository at this point in the history
  • Loading branch information
Eliastik committed Dec 31, 2024
1 parent cd23632 commit 580a0f2
Show file tree
Hide file tree
Showing 42 changed files with 417 additions and 2,967 deletions.
2 changes: 1 addition & 1 deletion dist/cjs/SimpleSoundStudioLibrary.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/esm/SimpleSoundStudioLibrary.js.map

Large diffs are not rendered by default.

11 changes: 9 additions & 2 deletions dist/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,10 @@ declare abstract class AbstractAudioElement {
isDefaultEnabled(): boolean;
/** Set to true if this filter/renderer needs to be enabled by default */
setDefaultEnabled(state: boolean): void;
/**
* Set the enabled/disabled state
* @param state true to enable, false to disable
*/
setEnabled(state: boolean): void;
/** Enable this filter/renderer */
enable(): void;
Expand Down Expand Up @@ -552,6 +556,11 @@ interface BufferManagerInterface {
get downloadingInitialData(): boolean;
}

/**
* Principal class used to manage audio processing: load an audio file or buffer,
* manage filters/renderers (enable/disable, settings), add new filters/renderers,
* download rendered audio, get rendered audio buffer
*/
declare class AudioEditor extends AbstractAudioElement implements AudioEditorInterface {
/** The filter manager */
private filterManager;
Expand Down Expand Up @@ -593,7 +602,6 @@ declare class AudioEditor extends AbstractAudioElement implements AudioEditorInt
getOutputBuffer(): AudioBuffer | null;
renderAudio(forceInitialRendering?: boolean): Promise<boolean>;
isAudioWorkletAvailable(): boolean;
/** Filters settings */
getFiltersState(): FilterState;
getFiltersSettings(): Map<string, FilterSettings>;
reconnectNodesIfNeeded(): Promise<void>;
Expand All @@ -603,7 +611,6 @@ declare class AudioEditor extends AbstractAudioElement implements AudioEditorInt
changeFilterSettings(filterId: string, settings: FilterSettings): Promise<void>;
resetFilterSettings(filterId: string): Promise<void>;
resetAllFiltersState(): void;
/** Events and exit */
exit(): void;
cancelAudioRendering(): void;
on(event: string, callback: EventEmitterCallback): void;
Expand Down
216 changes: 32 additions & 184 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,197 +2,45 @@

***

# Simple Sound Studio - Library
# @eliastik/simple-sound-studio-lib

* Version: 2.2.1 (9/10/2024)
* License: GNU GPL 3
## Enumerations

## English
- [EventType](enumerations/EventType.md)

A Web Audio API library used in my [Simple Voice Changer](https://github.com/Eliastik/simple-voice-changer) (soon to be renamed to Simple Sound Studio) and [Memes Soundbox](https://github.com/Eliastik/memes-soundbox) projects.
## Classes

This library is written in TypeScript.
- [AbstractAudioElement](classes/AbstractAudioElement.md)
- [AbstractAudioFilter](classes/AbstractAudioFilter.md)
- [AbstractAudioFilterWorklet](classes/AbstractAudioFilterWorklet.md)
- [AbstractAudioRenderer](classes/AbstractAudioRenderer.md)
- [AudioEditor](classes/AudioEditor.md)
- [BufferPlayer](classes/BufferPlayer.md)
- [EventEmitter](classes/EventEmitter.md)
- [GenericConfigService](classes/GenericConfigService.md)
- [SoundStudioFactory](classes/SoundStudioFactory.md)
- [VoiceRecorder](classes/VoiceRecorder.md)

### Using the library
## Interfaces

You can directly use the bundled version of the library that is present here: [dist/esm/SimpleSoundStudioLibrary.js](_media/SimpleSoundStudioLibrary.js).
- [AudioFilterEntrypointInterface](interfaces/AudioFilterEntrypointInterface.md)
- [AudioFilterNodes](interfaces/AudioFilterNodes.md)
- [ConfigService](interfaces/ConfigService.md)
- [FilterSettings](interfaces/FilterSettings.md)
- [FilterState](interfaces/FilterState.md)
- [GenericSettingValueAdditionalData](interfaces/GenericSettingValueAdditionalData.md)
- [RecorderSettings](interfaces/RecorderSettings.md)
- [SaveBufferOptions](interfaces/SaveBufferOptions.md)
- [SelectFormValue](interfaces/SelectFormValue.md)

Or you can install the npm package using this command:
## Type Aliases

`npm install @eliastik/simple-sound-studio-lib --save`
- [EventEmitterCallback](type-aliases/EventEmitterCallback.md)
- [FilterSettingValue](type-aliases/FilterSettingValue.md)

The TypeScript types are directly provided by the package.
## Variables

You also need to expose the worklet and worker files provided by the library at the root of your web application:

- [Workers files here](https://github.com/Eliastik/simple-sound-studio-lib/tree/master/dist/workers)
- [Worklets files here](https://github.com/Eliastik/simple-sound-studio-lib/tree/master/dist/worklets)

If you do not expose the files, the library will try to function as best as it can, but some features will fail:

- If worker files are not correctly exposed: the export-to-audio-file feature will not work
- If worklet files are not correctly exposed: the library will fallback to ScriptProcessorNode for certain filters. This implementation offers lower performance and quality but remains acceptable as a fallback

### Documentation

The documentation of the methods and class can be found here: [docs/](docs/).

The most important part is the [AudioEditor class](_media/AudioEditor.md).

You will also be interested by the [VoiceRecorder class](_media/VoiceRecorder.md).

To construct the object needed to use the features (AudioEditor class/VoiceRecorder class) you will need to use the [SoundStudioFactory](_media/SoundStudioFactory.md).

### Project Structure

The project has the following directory structure:

- `dist/`: Contains the compiled library files.
- `example/`: Contains the minimal example to use the library.
- `docs/`: Documentation for the library's classes and methods.
- `lib/`: Source code of the library written in TypeScript.
- `tests/`: Tests of the library using Jest

### Example

A minimal example using the library can be found here: [example/index.html](_media/index.html) and [example/index.js](_media/index.js).

To use the example, you can pull the project and launch a webserver at the root folder of this git repository.

Here are a few ways to do this:

#### Using http-server (Node.js):

```
npm install --global http-server
http-server .
```

#### Using Python's built-in server:

```
python -m http.server
```

#### Using PHP built-in server:

```
php -S localhost:3000
```

Once the server is running, open example/index.html in your browser to see the minimal example in action.

Please note that there are other more advanced examples:

- [example/custom-filter.js](_media/custom-filter.js): explain how to create a custom audio filter

### Compile the project

If you made a change to the library, you will need to compile it to use your change.

First, install the dependencies using:

`npm install`

Then use this to build the library to the dist folder:

`npm run build`

You can also launch the tests using:

`npm run test`

## Français

Une bibliothèque logicielle pour la Web Audio API utilisée par mes projets [Simple Voice Changer](https://github.com/Eliastik/simple-voice-changer) (qui sera bientôt renommé Simple Sound Studio) et [Memes Soundbox](https://github.com/Eliastik/memes-soundbox).

Cette bibliothèque est écrite en TypeScript.

### Utilisation de la bibliothèque

Vous pouvez directement utiliser la version empaquetée de la bibliothèque qui est présente ici : [dist/esm/SimpleSoundStudioLibrary.js](_media/SimpleSoundStudioLibrary.js).

Ou vous pouvez installer le package npm en utilisant la commande suivante :

`npm install @eliastik/simple-sound-studio-lib --save`

Les types TypeScript sont fournis directement par le package.

Vous devez également exposer les fichiers worklet et worker fournis par la bibliothèque à la racine de votre application web :

- [Fichiers Workers](https://github.com/Eliastik/simple-sound-studio-lib/tree/master/dist/workers)
- [Fichiers Worklets](https://github.com/Eliastik/simple-sound-studio-lib/tree/master/dist/worklets)

Si vous n'exposez pas les fichiers, la bibliothèque essaiera de fonctionner au mieux, mais certaines fonctionnalités échoueront :

- Si les fichiers worker ne sont pas correctement exposés : la fonction d'export d'audio ne fonctionnera pas.
- Si les fichiers des worklets ne sont pas correctement exposés : la bibliothèque se rabattra sur ScriptProcessorNode pour certains filtres. Cette implémentation offre des performances et une qualité moindres, mais reste acceptable en tant que solution de repli.

### Documentation

La documentation des méthodes et des classes se trouve ici : [docs/](docs/).

La partie la plus importante est la classe [AudioEditor class](_media/AudioEditor.md).

Vous serez également intéressé par la classe [VoiceRecorder class](_media/VoiceRecorder.md).

Pour construire l'objet nécessaire à l'utilisation des fonctionnalités (classe AudioEditor/classe VoiceRecorder), vous devrez utiliser la [SoundStudioFactory](_media/SoundStudioFactory.md).

### Structure du projet

Le projet a la structure de répertoires suivante :

- dist/ : Contient les fichiers de la bibliothèque compilés.
- example/ : Contient l'exemple minimal d'utilisation de la bibliothèque.
- docs/ : Documentation des classes et des méthodes de la bibliothèque.
- lib/ : Code source de la bibliothèque écrit en TypeScript.
- tests/ : Tests de la bibliothèque utilisant Jest.

### Exemple

Un exemple minimal utilisant la bibliothèque se trouve ici : [example/index.html](_media/index.html) et [example/index.js](_media/index.js).

Pour utiliser l'exemple, vous pouvez cloner le projet et lancer un serveur web à la racine de ce dépôt git.

Voici quelques façons de le faire :

#### Utilisation de http-server (Node.js) :

```
npm install --global http-server
http-server .
```

#### Utilisation du serveur intégré de Python :

```
python -m http.server
```

#### Utilisation du serveur intégré de PHP :

```
php -S localhost:3000
```

Une fois le serveur lancé, ouvrez example/index.html dans votre navigateur pour voir l'exemple minimal en action.

Il y a également d'autres exemples avancés :

- [example/custom-filter.js](_media/custom-filter.js): montre comment créer un filtre audio personnalisé

#### Compiler le projet

Si vous avez apporté une modification à la bibliothèque, vous devrez la compiler pour utiliser votre changement.

Commencez par installer les dépendances avec :

`npm install`

Ensuite, utilisez cette commande pour construire la bibliothèque dans le dossier dist :

`npm run build`

Vous pouvez également lancer les tests avec :

`npm run test`
- [audioEditorContainer](variables/audioEditorContainer.md)
- [Constants](variables/Constants.md)
- [FilterNames](variables/FilterNames.md)
- [UtilFunctions](variables/UtilFunctions.md)
Loading

0 comments on commit 580a0f2

Please sign in to comment.