jonathantaquet / oe2ssle Goto Github PK
View Code? Open in Web Editor NEWOpen e2sSample.all Library Editor (Oe2sSLE) for Electribe Sampler
License: GNU General Public License v2.0
Open e2sSample.all Library Editor (Oe2sSLE) for Electribe Sampler
License: GNU General Public License v2.0
I'm getting constant errors when I try importing single cycle waveforms from the Elektron free sound packs:
https://www.elektron.se/soundpacks/immortal-waves/
https://www.elektron.se/soundpacks/oxford-overdrive/
The samples are loaded and edited in Oe2sSLE, and the program lets you save an .all
file. But when trying to import the saved .all
file, one exception is thrown for every sample. The file is corrupted and does not get imported by the Electribe 2 Sampler either.
I don't know anything about RIFF specifications unfortunately, this is the exception:
/tmp/_MEIQfh0Qm/RIFF/__init__.py:252: UserWarning: 'RIFF' chunk contains an ignored truncaded chunk /tmp/_MEIQfh0Qm/e2s_sample_all.py:491: UserWarning: Recovering from an error while reading a sample Traceback (most recent call last): File "e2s_sample_all.py", line 487, in load File "e2s_sample_all.py", line 349, in __init__ File "e2s_sample_all.py", line 362, in read File "RIFF/__init__.py", line 310, in __init__ File "RIFF/__init__.py", line 333, in read File "RIFF/__init__.py", line 255, in read AttributeError: type object 'ChunkList' has no attribute 'InvalidError'
I have also tried using the Adventure Kid Waveforms, but they give no trouble. I attach an example .all
file with some of the default samples, 10 AKWF correctly saved, and a problematic waveform from the Elektron Inmortal Waves package.
e2sSample-MG1.zip
1/ import wav with smpl chunk
2/ save *.all file
3/ export wav file -> no more smpl chunk (korg loop points are ok though)
If I have a long sample and want to use just a looped part of it, it still uses a lot of limited E2S memory. It would be very nice to have an option to crop sample and save onto sdcard only that part we use!
The editor is voluntarily more flexible than the electribe.
Sometimes it may cause troubles. For instance if your sample "start" point is after an active slice "start" point, the electribe will play it properly, but it will not allow you to export the sample (saying something like "memory card full"); and if you try to export all samples (to e2sSample.all) the electribe will even freeze.
Other corner case may probably occur.
What would be done:
When I load samples and try to scroll through them program crashes with this error:
Traceback (most recent call last): File "Oe2sSLE_GUI.py", line 2350, in <module> app.mainloop() File "/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 1277, in mainloop self.tk.mainloop(n) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Environment: macOS Sierra
Steps to reproduce:
At least on Windows 10, with python 3.4.4,
when there are many loaded samples: more than 827 (all possible sample numbers up to 924)
Would it be possible that there are too many widgets: if we count the number of basic windows (i.e. buttons, labels, ...) we could reach 2^14 objects...
Hi there! First of all, thanks for your great work!
nevertheless i have a problem.
the program was installed under the latest python 3. it opens easily. as soon as i try to insert a .wav file (import wav sample(s)) i get the following error code:
Cannot use this file:
C:/(...).wav
The file is probably corrupted or you found a bug.
See log file for details. Error message:'int' object is not iterable.
The file size ranges from 93 kb to 190 kb.
One of about 20 files works and can be inserted, the rest don't.
Please help.
Peace
The listening audio preview of a sample does not work when the sampling frequency is to high. This is because pyaudio/portaudio (or the sound card driver?) does not handle too high sampling frequency.
TODO:
some signal processing to resample (with lower frequency) the sound sample before sending it to the sound card
I get an exception (and application shutdown) when I increase a very low number of a sample to a number that is already taken by another sample. I tried that with the very first samples (e.g. #19 or #20). This is what the console prints.
/usr/lib/python3.4/imp.py:32: PendingDeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
PendingDeprecationWarning)
Traceback (most recent call last):
File "/usr/lib/python3.4/tkinter/__init__.py", line 1536, in __call__
return self.func(*args)
File "Oe2sSLE_GUI.py", line 494, in _varString_set
self.SNScommand()
File "Oe2sSLE_GUI.py", line 1347, in _oscNum_command
samples[lN+1].oscNum.set(samples[lN].oscNum.get()+1 if samples[lN].oscNum.get() != 421 else 501)
File "/usr/lib/python3.4/tkinter/__init__.py", line 266, in set
return self._tk.globalsetvar(self._name, value)
_tkinter.TclError: can't set "PY_VAR33": can't set "PY_VAR40": can't set "PY_VAR43": can't set "PY_VAR50": can't set "PY_VAR53": can't set "PY_VAR60": can't set "PY_VAR63": can't set "PY_VAR70": can't set "PY_VAR73": can't set "PY_VAR80": can't set "PY_VAR83": can't set "PY_VAR90": can't set "PY_VAR93": can't set "PY_VAR100": can't set "PY_VAR103": can't set "PY_VAR110": can't set "PY_VAR113": can't set "PY_VAR120": can't set "PY_VAR123": can't set "PY_VAR130": can't set "PY_VAR133": can't set "PY_VAR140": can't set "PY_VAR143": can't set "PY_VAR150": can't set "PY_VAR153": can't set "PY_VAR160": can't set "PY_VAR163": can't set "PY_VAR170": can't set "PY_VAR173": can't set "PY_VAR180": can't set "PY_VAR183": can't set "PY_VAR190": can't set "PY_VAR193": can't set "PY_VAR200": can't set "PY_VAR203": can't set "PY_VAR210": can't set "PY_VAR213": can't set "PY_VAR220": can't set "PY_VAR223": can't set "PY_VAR230": can't set "PY_VAR233": can't set "PY_VAR240": can't set "PY_VAR243": can't set "PY_VAR250": can't set "PY_VAR253": can't set "PY_VAR260": can't set "PY_VAR263": can't set "PY_VAR270": can't set "PY_VAR273": can't set "PY_VAR280": can't set "PY_VAR283": can't set "PY_VAR290": can't set "PY_VAR293": can't set "PY_VAR300": can't set "PY_VAR303": can't set "PY_VAR310": can't set "PY_VAR313": can't set "PY_VAR320": can't set "PY_VAR323": can't set "PY_VAR330": can't set "PY_VAR333": can't set "PY_VAR340": can't set "PY_VAR343": can't set "PY_VAR350": can't set "PY_VAR353": can't set "PY_VAR360": can't set "PY_VAR363": can't set "PY_VAR370": can't set "PY_VAR373": can't set "PY_VAR380": can't set "PY_VAR383": can't set "PY_VAR390": can't set "PY_VAR393": can't set "PY_VAR400": can't set "PY_VAR403": can't set "PY_VAR410": can't set "PY_VAR413": can't set "PY_VAR420": can't set "PY_VAR423": can't set "PY_VAR430": can't set "PY_VAR433": can't set "PY_VAR440": can't set "PY_VAR443": can't set "PY_VAR450": can't set "PY_VAR453": can't set "PY_VAR460": can't set "PY_VAR463": can't set "PY_VAR470": can't set "PY_VAR473": can't set "PY_VAR480": can't set "PY_VAR483": can't set "PY_VAR490": can't set "PY_VAR493": can't set "PY_VAR500": can't set "PY_VAR503": can't set "PY_VAR510": can't set "PY_VAR513": can't set "PY_VAR520": can't set "PY_VAR523": can't set "PY_VAR530": can't set "PY_VAR533": can't set "PY_VAR540": can't set "PY_VAR543": can't set "PY_VAR550": can't set "PY_VAR553": can't set "PY_VAR560": can't set "PY_VAR563": can't set "PY_VAR570": can't set "PY_VAR573": can't set "PY_VAR580": can't set "PY_VAR583": can't set "PY_VAR590": can't set "PY_VAR593": can't set "PY_VAR600": can't set "PY_VAR603": can't set "PY_VAR610": can't set "PY_VAR613": can't set "PY_VAR620": can't set "PY_VAR623": can't set "PY_VAR630": can't set "PY_VAR633": can't set "PY_VAR640": can't set "PY_VAR643": can't set "PY_VAR650": can't set "PY_VAR653": can't set "PY_VAR660": can't set "PY_VAR663": can't set "PY_VAR670": can't set "PY_VAR673": can't set "PY_VAR680": can't set "PY_VAR683": can't set "PY_VAR690": can't set "PY_VAR693": can't set "PY_VAR700": can't set "PY_VAR703": can't set "PY_VAR710": can't set "PY_VAR713": can't set "PY_VAR720": can't set "PY_VAR723": can't set "PY_VAR730": can't set "PY_VAR733": can't set "PY_VAR740": can't set "PY_VAR743": can't set "PY_VAR750": can't set "PY_VAR753": can't set "PY_VAR760": can't set "PY_VAR763": can't set "PY_VAR770": can't set "PY_VAR773": can't set "PY_VAR780": can't set "PY_VAR783": can't set "PY_VAR790": 97.0
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "Oe2sSLE_GUI.py", line 2009, in <module>
app.mainloop()
File "/usr/lib/python3.4/tkinter/__init__.py", line 1123, in mainloop
self.tk.mainloop(n)
File "/usr/lib/python3.4/tkinter/__init__.py", line 1540, in __call__
self.widget._report_exception()
AttributeError: 'StringVar' object has no attribute '_report_exception'
I saw that you use some kind of logging, but unfortunately I cannot find any log file. Do I have to enable it somewhere?
BTW later I realized that the expected behaviour is to increase all other samples too. A very handy feature! 👍
Hey, I'm trying to run this on Mac OS 10.11.4 from source, and not sure that I'm doing things correctly. I'm also running into an exception that terminates the program.
I've installed portaudio
using brew install portaudio
, which has let me run pip install pyaudio
successfully, and I'm running the script using python Oe2sSLE_GUI.py
.
At first, I clicked on Open
, and navigated to the e2sSample.all
file, thinking that that was the thing that I was supposed to open, selected it, then clicked on Import e2sSample.all
, which seemed more likely to be the feature that I was actually looking for. Then I got the following exception log in my terminal:
(venv)rkn-mm:Oe2sSLE(master?) $ python Oe2sSLE_GUI.py 28.03.2016 [16:43:46]
Traceback (most recent call last):
File "Oe2sSLE_GUI.py", line 2112, in <module>
app.mainloop()
File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/tkinter/__init__.py", line 1131, in mainloop
self.tk.mainloop(n)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8f in position 0: invalid start byte
I've tried running the program again, and just clicking directly on Import e2sSample.all
, but then I got a black window that didn't really allow me to do anything else, so I closed out of it.
Then, I've run it again, and just scrolled around and I see a similar exception/exit:
(venv)rkn-mm:Oe2sSLE(master?) $ python Oe2sSLE_GUI.py 28.03.2016 [16:47:02]
Traceback (most recent call last):
File "Oe2sSLE_GUI.py", line 2112, in <module>
app.mainloop()
File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/tkinter/__init__.py", line 1131, in mainloop
self.tk.mainloop(n)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc7 in position 0: invalid continuation byte
Any ideas about how to fix this, or in general, how to get this up and working?
(myenv) Mickael-Desfrenes:Oe2sSLE-taquet $ python Oe2sSLE_GUI.py
Traceback (most recent call last):
File "Oe2sSLE_GUI.py", line 2350, in <module>
app.mainloop()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/tkinter/__init__.py", line 1140, in mainloop
self.tk.mainloop(n)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Using version 0.0.7, the application hangs when trying to open an invalid .all file.
You have to use Task Manager to kill the app.
I have attached the log and the .all file.
e2sSample.zip
Is it possible to have number gaps between samples, e.g. one sample has the "#Num" 50 and the next 70?
At the moment it seems that it is possible in the gui, but the gaps are filled when the file is saved.
I'd like to store my samples sorted by type, but I think if I change the sample number, the electribe does not find the samples anymore, if I used them in a track. Please correct me if I'm wrong. Because of this I want to leave number gaps between each sample type group to add samples later.
Any suggestion on this?
After converting a stereo sample into mono, the checkbox stays checked and changes to unchecked immediately when the whole panel is scrolled.
Hi
I was trying to donate and pledgie gives me USD dollars are not accepted and no choice to use any other.
TODO:
Take into account "+12dB" and "Tune" parameter values when listening audio preview
pyaudio and and pip installed
error message below
seems to be a compilation error but i'm no expert
nishios-MacBook-Pro:Oe2sSLE-master nishio$ python Oe2sSLE_GUI.py
File "Oe2sSLE_GUI.py", line 1167
self.activeStepsTrace[j] = self.activeSteps[j].trace('w', lambda *args, j=j: self._activeStepEdit(j))
^
SyntaxError: invalid syntax
If you are scrolling the sample list in the main interface, with the mouse wheel, and if you have your mouse pointer on the category combobox of a sample, both the interface scrolling and the combobox value change are occuring.
TODO: if mouse pointer is on a combobox, do not scroll the interface on a mouse wheel event, or scroll the interface but not change the combobox value.
It seems to load just very very slowly so I end up just force quitting it after waiting five minutes. Let me know if I can provide more information.
Allow to edit the sampling frequency parameter value of a sample
Stereo samples cannot be converted into mono from the application.
TODO: Allow to edit the "Stereo" check-box when sample is stereo in order to put it into mono.
Intermediate dialog will be used to provide audio preview and to confirm
Tried to compile the program myself but ran into an error.
Error at Line 1088 col 86 in Oe2sSLE_GUI.py
Checked the code then with a linter and also the linter showed an error in this line.
Linter shows error in this block, behind the *lambda args.
for j in range(64):
if self.activeStepsTrace[j]:
self.activeSteps[j].trace_vdelete('w', self.activeStepsTrace[j])
self.activeSteps[j].set(str(esli.sliceSteps[j]) if esli.sliceSteps[j] >= 0 else "Off")
self.activeStepsTrace[j] = self.activeSteps[j].trace('w', lambda *args, j=j: self._activeStepEdit(j))
Pledgie has closed.
https://pledgie.com/campaigns/30817 I don't know how it's with you, but it doesn't work for me. It's a shame - your app is best sample manager for E2S. Id like to donate to it :)
I recently noticed that the slices point addresses of the electribe seems to be relative to the start point.
The editor is currently addressing slices from the beginning of the sample, not from the start point...
So if start point is not zero, slices of the editor will not be properly positioned.
I will correct it as soon as possible.
Add import options:
Add export options:
I am having trouble exporting wavs from the sample manager. I can export all wavs but i get this message when i try to just export one wav:
Error message:
'samplelist object' has no attribute export_opts
It does then make the wav file but it has nothing in it and does not play.
This did not happen with the previous version of the software that i had.
I am using windows 10
I really like this app and much prefer it to the other version of this prgram that i have used.
I have temporarily switched back to 1.32 which is working correctly.
If I click on the play button of a sample, while another sample is still playing, the app crashes and does not respond any more.
I'm running Oe2sSLE on Ubuntu 14.04.
Hi! Jonathan, thanks for that great tool!
I saw the exported ".wav" files contain cue points for slicing, so when re-importing them that came pretty handy. Now I have loads of fresh loops I'd like to automatically slice and then import to the electribe (doing the slicing in an external audio tool or inside python or just some other command line tools) - just I didn't find out by looking quickly at your code how the cue points need to be stored inside a ".wav" file so Oe2sSLE can read them when importing. I'd be happy about a hint into that direction :). Are the cue points stored in a standard way that other software can read or display?
Martin
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.